网站的两个页面(index.html和detail.html )都拥有头部和商品推荐部分。因此头部和商品推荐部分的两个样式表是可以重用的。
【操作步骤】
第1步,首先观察一下头部的HTML结构,代码如下:
<div id="header"> <div class="contWidth"> <div class="search"></div> <ul id="skin"></ul> <a class="logo" href="#nogo"></a> <div id="nav" class="mainNav"></div> </div> </div>
头部主要有四块内容:搜索框、皮肤切换、Logo和导航菜单。
第2步,为最外面的结构定义样式,CSS代码如下:
#header{ background: url("../images/headerbg.png") repeat-x scroll 0 0 #FFFFFF; height: 105px; } #header .contWidth { position: relative; height: 105px; margin: 0 auto; width: 990px; z-index: 100; }
上面代码把头部宽度定义为990px,然后用margin :0 auto;使其能够居中显示。接下来为Logo、搜索框、皮肤切换和导肮菜单定义样式。
第3步,定义Logo部分样式。
Logo部分的HTM L代码如下:
<a class="logo" href="#nogo">
通过设计图,可知要将Logo放在最左边,即左浮动,CSS代码如下:
#header .logo { float: left; color: #FFF; line-height: 80px; margin-top: 50; margin-right: 0; margin-bottom: 0; margin-left: 10px; }
第4步,定义搜索框样式。
搜索框的HTML代码如下:
<div class="search"> <input type="text" id="inputSearch" class="" value="请输入商品名称" /> </div>
在前面定义头部样式时,为#header .contWidth定义了position: relative;,相当于在<div class="contWidth">定义了一个定位包含框,那么在它里面的元素,可以使用position: absolute;将它定义在头部的任何位置,CSS代码如下:
#header .search { left: 281px; position: absolute; top: 23px; }
第5步,定义皮肤样式。
与Logo部分一样,本部分采用float浮动方式使它显示在规定的位置,不过此时,使用的是右浮动,CSS代码如下所示:
/* 切换皮肤控件样式 */ #skin { float:right; margin:10px; padding:4px; width:120px; }
然后为ul元素内部的li元素添加样式,使之符合设计图的效果,代码如下:
#skin li { float:left; margin-right:4px; width:15px; height:15px; text-indent:-9999px; overflow:hidden; display:block; cursor:pointer; background-image:url("../images/theme.gif"); }
在上面CSS代码中,首先用float:left;语句使li元素横向排列,然后利用text-indent:-9999px;语句使文字显示到看不到的区城,最后给li元素添加背景图片。背景图片是预先合并好的,这样能节省网站的HTTP请求。
为了使不同的li元素显示不同的背景图,可以使background-position属性来定位背景图,代码如下:
#skin_0 { background-position:0px 0px; } #skin_1 { background-position:15px 0px; } #skin_2 { background-position:35px 0px; } #skin_3 { background-position:55px 0px; } #skin_4 { background-position:75px 0px; } #skin_5 { background-position:95px 0px; } #skin_0.selected { background-position:0px 15px; } #skin_1.selected { background-position:15px 15px; } #skin_2.selected { background-position:35px 15px; } #skin_3.selected { background-position:55px 15px; } #skin_4.selected { background-position:75px 15px; } #skin_5.selected { background-position:95px 15px; }
第6步,定义导航菜单。
模仿搜索框样式,采用绝对定位方式使它显示在规定的位置。CSS代码如下:
.mainNav { position: absolute; top: 68px; left: 0; height: 37px; line-height: 37px; width: 990px; z-index: 100; background-color: #4A4A4A; } .mainNav .nav { display: inline; float: left; margin-left: 25px; } .mainNav ul li { float: left; display: inline; margin-right: 14px; position: relative; z-index: 100; } .mainNav ul li a { display: block; padding: 0 8px; font-weight: 700; color: #fff; font-size: 14px; }
上面只是为一级菜单定义了样式,由于有的菜单有二级菜单,所以还需要做一些工作。为了便于设计,先观察菜单的HTML结构,代码如下:
<div id="nav" class="mainNav"> <ul class="nav"> <li><a href="#">首 页</a></li> <li><a href="#">品 牌</a> <div class="jnNav"> <div class="subitem"> <dl class="fore"> <dt> <a href="#nogo">品牌:</a> </dt> <dd> <em ><a href="#nogo">耐克</a></em> …… </dd> </dl> ……
后面重复部分代码省略。在上面代码中,可以看到,二级菜单通过<div class="jnNav">包含框包含,在默认状态下隐藏显示,然后使用CSS设计二级菜单样式,详细代码如下所示:
.jnNav { background: #FFFFFF; border: 1px solid #B1B1B1; border-top: 0; left: 0; overflow: hidden; position: absolute; top: 37px; width: 474px; z-index: 1000; display: none; } .jnNav .subitem { float: left; height: auto !important; min-height: 100px; padding: 10px 12px; width: 450px; } .jnNav .subitem dl { border-top: 1px dashed #C4C4C4; overflow: hidden; padding: 8px 0; float: left; }
与之前的设计原理类似,在二级菜单中,继续使用position、float等传统方式。现在,就可以看出网站头部的效果,如图1所示。
图1 头部设计效果