首页 > 代码库 > 16.1 《简约夕阳》(158号作品)布局方法剖析

16.1 《简约夕阳》(158号作品)布局方法剖析

上一章中,对“CSS禅意花园”网站的标准HTML文档进行了结构讲解和分析,并制作了一个简单的网页。

在这一章中,就对禅意花园的158号作品和191号作品进行深入细致的分析和研究,彻底搞清楚它们是如何制作出来的。这两个作品的效果都相当精致,可以给读者很好的启发。

先来分析第158号作品,名称为《简约夕阳》(A Simple Sunsei),由美国设计师RobSoule设计,如http://www.csszengarden.com/?cssfile=158/158.css所示,读者可以参考网页学习网CSS教程中的“第16章\158.htm”

在这个作品中,充分使用了图片的技巧,制作出了非常协调的作品意境。下面就来详细地看一下这个作品的设汁思路和过程。

在前面已经分析了几个禅意花园作品,读者应该能够不用看代码,就知道本案例的布局方式了。

这个页面最上面的落日图片是pageHeader部分的背景,下面的背景是由一个带有左右边框的图竖直平铺获得的。整体背景很自然,上部是渐变色,下部是固定色,这可以通过对整体的背景进行设置来实现。其内部的各个div排列是比较规整的,linklist使用绝对定位,放在页面左侧,具体做法请看下面的详细介绍。

一、设置渐变的页面背景

为了使页而的整体背景在最上面有渐变的效果,准备如图1所示的图像。这个图像会水平方向平铺在页面的最上端、竖直方向不平铺。注意它最下端的颜色##FOE9CE,也就是页面中背景网像没有覆盖到的地方的颜色。lodidance.com

图1 页面顶端的背景图像
图1 页面顶端的背景图像

对body的CSS样式设置代码如下。

折叠CSS 代码复制内容到剪贴板
  1. body {    
  2.  font11px georgia,times,serif;    
  3.  color#F0E9CE;    
  4.  background#F0E9CE url(mainbg.gif) repeat-x top;    
  5.  margin: 0;   
  6.  text-aligncenter;        
  7. }  

注意其中的background首先设置了背景色,后面又设置了背景图像。这样做的效果就是背景图像没有覆盖到的地方颜色为#FOE9CE。这种颜色与背景图像最下端的颜色相同,所以过渡非常自然。

本案例最重要的3个图像文件是资源文件中的top.jpg、prebg.jpg、contbg.jpg如图2所示,这3个图像竖直紧密排列,贯穿整个页面。



图2 本案例所用到的资源

在3个背景图像中,前两个分别是pageHeader和quickSummary的背景图像,第3个是用于竖直方向平铺的背景。

折叠CSS 代码复制内容到剪贴板
  1. #container {    
  2.  margin: 0 auto;   
  3.  text-alignleft;    
  4.  backgroundurl(contbg.gif) repeat-y center;   
  5.  width672px;     
  6. }   
  7. #intro,#supportingText {   
  8.  line-height19px;   
  9. }   
  10. #pageHeader {    
  11.  height287px;   
  12.  backgroundurl(top.jpg) no-repeat;   
  13. }   
  14. #quickSummary {   
  15.  backgroundurl(prebg.gif) no-repeat center top;   
  16.  height87px;   
  17.  font-size9px;   
  18.  text-transformuppercase;    
  19. }   
  20. #preamble {   
  21.  width380px;   
  22.  margin-top: -95px;    
  23.  padding: 0 0 0 260px;   
  24.  font-styleitalic;       
  25. }   
  26. #supportingText {   
  27.  width380px;   
  28.  padding: 0 0 0 260px;   
  29. }

二、设置整体页面结构

在设置上面的背景色之后,整个页面的外层框架就搭建起来了。为了使读者能够清晰理解上面的设置,并对下面要进行的设置有所了解,可以用firefox工具查看页面结构。

在图中可以看出,最上面的pageHeader高度为287像素,它的下面是suickSummary,高度为87像素,原本preamble应该在quickSummary的下面,现在通过设置负的margin-top值。

将它向上移动了95像素,这样preamble实际上就和quickSummary重叠了。注意quickSummarry中的两段文字都通过绝对定位移动到了pageHeader部分的图片上。

supportingText在preamble的下面。supportingText和preamble的宽度都是380像素,并都设置了260像素的左侧padding,这样就给linkList留出了空间。然后通过设定margin和width,使suppartingText中的最后一个div不再挤到页面右侧,而是贯穿整个页面。

三、设置linkList

在了解了基本结构以后,继续设置各个部分的布局。在设置时,可以随时参考FireFox工具中的结构图。

linkList部分原本应该在supportingText的下面,现在通过绝对定位,把它放到页面的左侧。代码如下。

折叠CSS 代码复制内容到剪贴板
  1. #linkList {   
  2.  positionabsolute;   
  3.  top325px;   
  4.  padding-left45px;   
  5.  color#2B0101;   
  6. }

注意代码中使用了绝对定位,但是它的上级元素中都没有设置定位属性,因此它足以浏览器窗口定位的。这里需要注意,只需设置top的值,而不要设定Ieft的值,这样就可以使水平方向仍保持在原来的位置上。为了使linkList的内容向右偏移,这里将左padding设置为45像素。

至此,3个大部分就都各就各位了。下面的任务就是参考上面结构图中的数据,把3个大部分中的具体内容放置到适当的位置上。

四、设置各个部分的标题

在premeable中有一个h3标题;supportingText部分的前4个div中,各有一个h3标题;在linkList的3个div中。各有一个h3标题。为了使用图像替换这8个h3标题的文字,需要把文字隐藏起来。以前的案例使用的方法是,将里面的span的display设置为none,就可以不显示它们。这里使用了另外一种方法,代码如下:

折叠CSS 代码复制内容到剪贴板
  1. #preamble h3,#explanation h3, #participation h3, #benefits h3, #requirements h3{   
  2.  text-indent: -5000px;   
  3.  height37px;   
  4. }   
  5. #lselect h3, #lresources h3, #larchives h3 {   
  6.  height23px;   
  7.  width189px;   
  8.  margin: 0;   
  9.  text-indent: -5000px;    
  10. }

可以看到,这些文字都通过设置一个绝对值很大的负的text-indent(文字缩进)属性,使文字移动到页面外边,并且设置了它们的离度,这样这些h3标题的文字虽然看不到了,但它们仍然占据着高度空间。

接下来,把这8个h3标记的背景属性依次设置为相应的背景图像。

设置背景图像的代码如下:

折叠CSS 代码复制内容到剪贴板
  1. #preamble h3 { backgroundurl(h3road.gif) no-repeat right; }   
  2. #explanation h3 { backgroundurl(h3allabout.gif) no-repeat right; }   
  3. #participation h3 { backgroundurl(h3part.gif) no-repeat right; }   
  4. #benefits h3 { backgroundurl(h3benefits.gif) no-repeat right; }   
  5. #requirements h3 { backgroundurl(h3require.gif) no-repeat right; }   
  6. #lresources h3 { backgroundurl(lresourcesspan.gif); }   
  7. #larchives h3 { backgroundurl(larchivesspan.gif); }   
  8. #lselect h3{   
  9.  backgroundurl(lselectspan.gif);   
  10.  margin: -15px 0 0 0;   
  11. }

注意,linkList中最上面的一个标题通过设置margin向下移动了15像素。在linkList内部的3个div中,为了实现圆角框的效粜。每一个div的最下面都有一个相同圆角图像背景。

需要将它放入每一个div中,代码如下。

折叠CSS 代码复制内容到剪贴板
  1. #lselect,#larchives,#lresources {   
  2.  backgroundurl(lselectbttm.gif) no-repeat bottom;   
  3.  padding-bottom12px;   
  4.  margin-top15px;     
  5. }

然后需要把quickSumary中的两个文字段落移动到网页头部的图片上。显然这需要使用绝对定位。

折叠CSS 代码复制内容到剪贴板
  1. #quickSummary .p2 {   
  2.  positionabsolute;   
  3.  top190px;   
  4.  width280px;   
  5.  text-alignright;    
  6.  margin-left360px;    
  7. }   
  8. #quickSummary .p1 {   
  9.  positionabsolute;   
  10.  top100px;   
  11.  width158px;   
  12.  margin-left482px;   
  13.  text-alignright;   
  14.  line-height14px;    
  15. }

请注意,这里和linkList的定位方法很相似,position属性设置为绝对定位,但是只没置top的属性值,而不设置水平方向的属性值,这样可以使得在水平方向上仍保持在原来的位置的。然后通过margin和padding来控制水平的位置。

五、设置footer

现在来设置supportingText中最下面的footer部分,代码如下。

折叠CSS 代码复制内容到剪贴板
  1. #footer {   
  2.  displayblock;   
  3.  width625px;   
  4.  margin-left: -235px;   
  5.  text-aligncenter;   
  6.  padding15px 0 25px 0;   
  7.  font10px verdana,arial,serif;   
  8.  text-transformuppercase;   
  9.  letter-spacing: -1px;   
  10.  background#DCD5B8 url(footerbg.gif) repeat-x bottombottom;    
  11. }

由于supportingText已经使用padding-left把左边空出来,因此为了使footer能够把宽度扩展到整个页面的最右端,这里将左侧的margin设置为-235像素,然后再配合padding,获得最终需要的效果。lodidance.com

到这里所有的布局工作都完成了,剩下的就是一些文字、链接文件和列表文字等局部样式的设置了,这里就不再详细介绍了。最终的效果请参见本案例最开始的效果图。

六、本案例的总结

本案例的重点有如下3点。

(1) 学习整体结构的搭建,掌握灵活划分和组织页面的方法。

(2) 各种使用背景图像的技巧,例如这里制作linkList的圆角框、设置整个页面的渐变背景色等。

(3) 使用绝对定位时,如果只设置一个方向上的定位属性,例如只设置top,或者只设置right,则只在一个方向上使用绝对定位,另一个方向上仍然保持原来的位置。这在前面表格一章的“小视图模式日历”的案例中曾经遇到过。在那个案例中,对“日程安排”设置了绝对定位,目的是使它脱离标准流,但是并不对它设置top或left等距离属性,这样它就仍然在原来的位置。这个技巧非常有用。

点击下载第8~17章CSS教程资源 返回《CSS教程布局之道》教程列表

编辑:网页学习网
本文地址:http://www.lodidance.com/css/jc/954.html