通过实现设计模型中的页面,来深入学习CSS的背景知识以及定位。
设计模型图如下所示:
一、设计要求:
设计是流式的(fluid)或易于变化的,也就是说它的高度和宽度应该能够子的哦哦那个适应用户的浏览器,同时保持所需的比例。具体要求如下:
1)位于左侧的每个图片必须固定在原有的位置;
2)树和LOGO必须能够向右侧移动,即树必须一直与布局的底部相关联;
3)层次上,树不能遮挡logo以及其他板块,必须处于最下层;左侧的图片模块在最顶层。
二、CSS背景的基本概念:
先看一段背景属性的CSS代码:
body{ background: #1299AB url(images/myBackground.gif) no-repeat fixed 10% 50px; }
CSS的背景可以分解成5个独立的属性:颜色、图片、重复、附加和位置。下面着重介绍重复、附加和位置这三个属性。
1、重复:重复属性规定的是图片的重复情况,它有几个有效的取值:n0-repeat(不重复,图片只产生一次),repeat-x(水平方向上从左到右重复),repeat-y(使图片从元素顶端开始沿着Y轴重复),repeat(属性的默认值,从元素左上角开始平铺整个元素)。
2、附加:附加属性定义“位置”属性的计算是与页面内容相关,还是与浏览器视口相关。所以它有两个有效值,fixed和scroll(默认值)。fixed可以约定背景图片将固定不动,而scroll则约定背景图片会随着页面其余部分滚动而移动。
3、位置:这个属性定义了背景图片起始的X和Y坐标。确定背景图片X坐标的水平方向的关键字有:left(默认值)、center、right;确定背景图片Y坐标的垂直方向的关键字有:top(默认值)、center、bottom;其他的有效选择还有:相对值(百分比)或绝对值(px/em/mm/pt).
三、HTML页面
回到实例中,根据设计模型,编写实现的HTML代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <!--meta标记定义的字符集是支持中文的gb2312--> <meta http-equiv=content-type content="text/html; charset=gb2312"> <!--链接外部CSS样式 --> <link rel="stylesheet" href="deadwood.css" type="text/css" media="screen" /> <title>Deadwood Design</title> </head> <body> <!--页面的logo --> <h1 id="logo">Deadwood Design</h1> <!--页面上的介绍信息 --> <div id="intro"> <p><span>D</span>eadwood design is Australia's 47th best web design and development agency.</p> <p>We specialise in awesomeness.</p> </div> <!--为排序列表显示图片,理论上是要放入页面作品区portfolio的DIV块中,并将浅色格子作为背景,但是IE对z-index支持不好,所以把这个列表置于div外 --> <ul> <li><a href="1.html"><img src="images/portfolio1.jpg" alt="Mountains and Sky"/></a></li> <li><a href="2.html"><img src="images/portfolio2.jpg" alt="Lampshade"/></a></li> <li><a href="3.html"><img src="images/portfolio3.jpg" alt="Cat"/></a></li> <li><a href="4.html"><img src="images/portfolio4.jpg" alt="Bark"/></a></li> <li><a href="5.html"><img src="images/portfolio5.jpg" alt="Thumbs Up"/></a></li> <li><a href="6.html"><img src="images/portfolio6.jpg" alt="Flowers"/></a></li> </ul> <!--设计一个格子模型延伸横跨整个页面,并位于树的图像之下 ,所以HTML中,portfolio div块先与tree div--> <div id="portfolio"></div> <!--在DIV元素中放置页面右下角的枯树图片 --> <div id="tree"></div> </body> </html>
对HTML代码解读的示意图如下所示:
四、CSS代码
为上述页面编写的CSS代码如下:
/*CSS STYLE SHEET FOR [基于CSS进行设置实现的一个首页] Created by [Serein_Chan] Email: [Serein_Chan@foxmail.com] Author Blog:[http://blog.csdn.net/cxwen78] */ /*注释 */ /*body的样式 */ /*背景图片水平方向重复,图像的最底端的颜色与背景颜色灰色 #A4A4A4接近,实现效果,适应性高,效率高 */ body { background: #A4A4A4 url(images/bg_gradient.gif) repeat-x; } /*树DIV块的样式 */ #tree { position: absolute; /*要将DIV固定在右下角,所以采取绝对定位*/ bottom: 0; /*紧贴页面底部 */ right: 40px; /*和页面右侧距离40px */ background: url(images/tree.gif) no-repeat; /*背景图片,不重复 */ /*根据图片大小设置DIV的宽度和高度 */ width: 331px; height: 400px; } /*logo DIV块的样式 */ #logo { position: absolute; /*要使DIV块与页面顶部和右侧距离固定,采取绝对定位*/ top: 15%; /*采用百分比值使得logo更好的适应显示器*/ right: 40px; /*和页面右侧距离40px */ width: 334px; height: 36px; background: url(images/logo.gif) no-repeat; /*背景LOGO图片,不重复 */ text-indent: -9999em; /*HTML中添加h1描述使页面具有意义,这里设置负的text-indent把文本反向转移到页面之外*/ margin: 0; z-index: 3; /*具有较高z-index值的元素会覆盖值低的元素,即将logo置于tree的上层 */ } /*介绍性段落的DIV块的样式 */ #intro { position: absolute; top: 15%; /*与logoDIV块呼应,将div置于距顶部15%*/ left: 40px; /*距body元素的左边界40px的位置 */ background: url(images/d.gif) no-repeat;/*段落的第一个字母D是图片 */ padding: 5px 0 0 61px; /*为了确保文本不会覆盖这个div的背景图片,分别在图片左侧和顶部添加61px和5px的内边距补白 */ width: 250px; color: #fff; font-family: Georgia, serif; font-size: 0.8em; } /*为确保文本Deadwood的完整性,将文本字母D插到span元素中,并将其置于页面之外 */ #intro span { position: absolute; top: -1000px; /*将span元素置于页面之外 */ } #intro p { margin: 0 0 12px 0; } /*页面的作品区,包括6个链接,分别链接到不同页面来展示作品集 */ /*样式要求,设计一个格子模型延伸横跨整个页面,并位于树的图像之下 ,所以HTML中,portfolio div块先与tree div*/ #portfolio { position: absolute; top: 35%; left: 0; width: 100%; height: 294px; background: url(images/bg_checkered.gif); /*用一张40*40的方块图像作为格子背景 */ } /*未排序列表显示作品集 */ ul { position: absolute; top: 35%; left: 40px; padding:0; z-index: 4; /*具有较高z-index值的元素会覆盖值低的元素,即将置于portfolio和tree的上层 */ list-style: none inside; /*列表样式:无标记;列表项目标记放置在文本以内,且环绕文本根据标记对齐。*/ width: 482px; height: 294px; margin: 0; } ul li { width: 138px; height: 138px; float: left; margin: 0 18px 18px 0; background: url(images/bg_checkered_dark.gif); /*设置8*8像素的格子图片做背景,显得颜色更深一点 */ } /*链接图像区域的设置 */ ul li a { float: left; width: 102px; height: 102px; margin: 18px 0 0 18px; } ul li a img { border: 0; }
大功告成,最终的效果图如下:
五、素材图片