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 页面顶端的背景图像

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

折叠展开CSS 代码复制内容到剪贴板

  1. body {
  2. font: 11px georgia,times,serif;
  3. color: #F0E9CE;
  4. background: #F0E9CE url(mainbg.gif) repeat-x top;
  5. margin: 0;
  6. text-align: center;
  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-align: left;
  4. background: url(contbg.gif) repeat-y center;
  5. width: 672px;
  6. }
  7. #intro,#supportingText {
  8. line-height: 19px;
  9. }
  10. #pageHeader {
  11. height: 287px;
  12. background: url(top.jpg) no-repeat;
  13. }
  14. #quickSummary {
  15. background: url(prebg.gif) no-repeat center top;
  16. height: 87px;
  17. font-size: 9px;
  18. text-transform: uppercase;
  19. }
  20. #preamble {
  21. width: 380px;
  22. margin-top: -95px;
  23. padding: 0 0 0 260px;
  24. font-style: italic;
  25. }
  26. #supportingText {
  27. width: 380px;
  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. position: absolute;
  3. top: 325px;
  4. padding-left: 45px;
  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. height: 37px;
  4. }
  5. #lselect h3, #lresources h3, #larchives h3 {
  6. height: 23px;
  7. width: 189px;
  8. margin: 0;
  9. text-indent: -5000px;
  10. }

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

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

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

折叠展开CSS 代码复制内容到剪贴板

  1. #preamble h3 { background: url(h3road.gif) no-repeat right; }
  2. #explanation h3 { background: url(h3allabout.gif) no-repeat right; }
  3. #participation h3 { background: url(h3part.gif) no-repeat right; }
  4. #benefits h3 { background: url(h3benefits.gif) no-repeat right; }
  5. #requirements h3 { background: url(h3require.gif) no-repeat right; }
  6. #lresources h3 { background: url(lresourcesspan.gif); }
  7. #larchives h3 { background: url(larchivesspan.gif); }
  8. #lselect h3{
  9. background: url(lselectspan.gif);
  10. margin: -15px 0 0 0;
  11. }

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

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

折叠展开CSS 代码复制内容到剪贴板

  1. #lselect,#larchives,#lresources {
  2. background: url(lselectbttm.gif) no-repeat bottom;
  3. padding-bottom: 12px;
  4. margin-top: 15px;
  5. }

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

折叠展开CSS 代码复制内容到剪贴板

  1. #quickSummary .p2 {
  2. position: absolute;
  3. top: 190px;
  4. width: 280px;
  5. text-align: right;
  6. margin-left: 360px;
  7. }
  8. #quickSummary .p1 {
  9. position: absolute;
  10. top: 100px;
  11. width: 158px;
  12. margin-left: 482px;
  13. text-align: right;
  14. line-height: 14px;
  15. }

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

五、设置footer

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

折叠展开CSS 代码复制内容到剪贴板

  1. #footer {
  2. display: block;
  3. width: 625px;
  4. margin-left: -235px;
  5. text-align: center;
  6. padding: 15px 0 25px 0;
  7. font: 10px verdana,arial,serif;
  8. text-transform: uppercase;
  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

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

时间: 2024-10-07 09:14:18

16.1 《简约夕阳》(158号作品)布局方法剖析的相关文章

简单高效!25个漂亮的简约风格网站设计作品

在过去几年里,网站设计领域发生了巨大变化.除了 RWD(响应式网页设计)和 Web 字体的革命,现代设计的发展趋势迅速流行扁平化的配色方案,网页排版变得更加重要,重点已放在内容第一.最后,页面加载速度已成为决定你的网站成功的关键因素. 所有这一切都导致了整洁美观和简单易用网页设计趋势的流行.所以,经过这些年的尝试和努力后,我们已经真正进入到了简洁干净的网页设计的时代.下面选择了25个简约干净的网站,具备我们上面提到的所有因素,他们都以自己的方式来呈现美丽,你有什么感想? 您可能感兴趣的相关文章

iOS根据16进制的色号来设置颜色,适合封装工具类

iOS中有时候UI给的一个色号就像 #54e1b7 这个,而我们一般设置颜色都是根据RBG来设置的,所以这里需要把这个16进制的色号转为RGB值,这里我们就使用一下的方法来调用设置颜色. 1 + (UIColor *)getColor:(NSString *)hexColor 2 { 3 if (hexColor == nil || hexColor.length == 0) { 4 NSLog(@"color string is nil."); 5 return [UIColor b

CSS垂直居中布局方法

整理一下个人认为比较好的CSS垂直居中的布局方法. 1. 绝对定位+负值margin. //长宽的设置只是为了说明,实际使用没有限制 <div id="container-outer"> <div id="container-inner"></div> </div> //CSS #container-outer { width: 200rem; height: 100rem; position: relative; }

PHP截取中文字符串不出现?号的解决方法[原创]

PHP截取中文字符串不出现?号的解决方法[原创] 大 | 中 | 小 [不指定 2007-8-15 18:51 | by 张宴 ] [文章作者:张宴 本文版本:v1.0 最后修改:2007.08.15 转载请注明出处:http://blog.zyan.cc] 当PHP截取中英文混合字符串时,最后一个汉字经常被拆成两半,例:截取字符串的前18个字 view plainprint? <?php $text = "1欢迎访问sina新浪播客"; $value = substr($tex

Andorid类似Fragment替换布局方法

public void replaceRightView(View v) { int f = LinearLayout.LayoutParams.MATCH_PARENT; LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(f, f); LinearLayout fragment_place = (LinearLayout) findViewById(R.id.fragment_place); fragment_pl

常见的布局方法整理[兼容]

一行两列左侧固定右侧自动适应 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv

flex 布局 初次接触这个好使又不是特别好用的布局方法

刚开始学前端的童鞋们应该也是一样先学习的table然后再学习了盒子模型,感觉终于学会了简单的网页布局,使用各种display,float,position绞尽脑汁给页面布局成自己想要的页面样式,然而,当自己把页面放缩时....画风就莫名其妙的变了,没错 ,就是变了,变得很乱很丑,再把网页放到手机上:卧槽这是哪个战斗力五颗渣的家伙写的啊,整个页面一坨一坨的堆积在一起. 然后就钻研js响应式布局,写着写着,哎呀我去,这是哪一个的宽啊,这是哪一个元素的高啊,这个比例等下设置为多少,跟上一个需不需要一样

chrome显示小于12号字体的方法

我现在做一个支持英文的网站,但是字体要设置小于12号字体,我百度方法是-webkit-text-size-adjust:none;  但是谷歌为什么不支持啊,  有没有解决办法 让谷歌浏览器 支持小于12字体的办法如下 <div><ul><li><a href=”#”>Home</a></li><li><a href=”#”>About</a></li></ul></d

【iOS开发-113】在storyboard上用AutoLayout,纯代码实现AutoLayout布局方法以及简单动画

(1)在storyboard中使用AutoLayout.这个AutoLayout和autoResizing是冲突的,只能选其一. --不同级的控件的相互约束是添加在高层级上. --同级别的控件的相互约束是添加在它们的父控件上. --不同分支控件的相互约束是添加在它们向上追溯到的第一个共同父控件. 这3条规则在代码创建时有用.利用storyboard时系统自动帮我们添加好了. (2)用代码实现AutoLayout.步骤就是先创建布局约束对象,然后把这个对象添加到需要约束的控件中. --需要先禁止需