css
作者:唐國輝
實現原理動畫示範:http://www.alixixi.com/UploadPic/2007-7/200777204837702.swf
自本人教程《徹底弄懂CSS盒子模式(DIV布局快速入門)》發表以來,一直獲得各位網友的好評與支援,今天應各位網友的要求,也為了答謝各位網友的支援,本人將推出續篇教程,以加深各位網友對CSS盒子模式的理解。此教程面向讀者還是DIV排版入門者,如果你是高手,那就不要浪費自己時間了。
本人這次將講解一個縱向CSS導覽列執行個體的製作,在講解過程中將會延用之前發表教程所講到的“盒子”概念,如果你沒有看過本人之前的那篇教程,又或者你還不理解什麼是“盒子”這一概念,請先通過下面的兩個連結閱讀本人之前發表的教程,看完之後再回來看此教程,如有不便敬請原諒。
用CSS做導覽列也是輕而易舉事情,在本人之前發表的教程中其實也有一個簡單的橫嚮導航欄製作,那時只給出了樣式代碼並沒有作太多的解釋,這次要做一個相對複雜點的導覽列,為了加深大家對CSS盒子模式的理解,特別選做一個有多層DIV嵌套實現的導覽列。
先看實現原理動畫示範:
運行代碼框
<!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="Content-Type" content="text/html; charset=gb2312" /><title>徹底弄懂CSS盒子模式(導覽列執行個體詳解)</title><style type="text/css"><!--* { margin: 0px; padding: 0px; }.nav { background: url(/UploadPic/2007-7/200777204838915.jpg) repeat-y; width: 200px; overflow: hidden;}.lanList { background: url(/UploadPic/2007-7/200777204846635.gif) no-repeat left center ; height: 50px; width: 190px;}.lanBoxIn { float: right; height: 20px; width: 170px; margin: 15px 0px 0px 0px;}.lanBoxIn a { background: url(/UploadPic/2007-7/200777204846975.gif) no-repeat left center; text-decoration: none; height: 20px; width: 155px; display: block; float: right; padding: 0px 0px 0px 5px; font-weight: bold; font-size: 9pt; line-height: 20px; color: #663300;}.lanBoxIn a:hover { background-image: url(/UploadPic/2007-7/200777204846927.gif); color: #FFFFFF;}.lanBoxIn span { float: left; height: 20px; width: 10px; background-color: #ff9900;}--></style></head><body><div class="nav"><div class="lanList"> <div class="lanBoxIn"> <span></span><a href="#">徹底弄懂CSS盒子模式1</a> </div></div><div class="lanList"> <div class="lanBoxIn"> <span></span><a href="#">徹底弄懂CSS盒子模式2</a> </div></div><div class="lanList"> <div class="lanBoxIn"> <span></span><a href="#">徹底弄懂CSS盒子模式3</a> </div></div><div class="lanList"> <div class="lanBoxIn"> <span></span><a href="#">徹底弄懂CSS盒子模式4</a> </div></div><div class="lanList"> <div class="lanBoxIn"> <span></span><a href="#">徹底弄懂CSS盒子模式5</a> </div></div></div></body></html>
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]
現在再看結果圖:
這個導覽列中的連結用到了背景圖片的轉場效果,滑鼠移到連結上導覽列背景圖片和文字顏色都會跟著改變,整個導航用到下列4幅圖片素材:
即連結不同狀態的兩張背景圖片,每條導航左邊的“勾月”圖形,最外邊大盒子1像素高的背景圖片。
看了動畫示範和結果圖,也瞭解了用到那些素材,現在就請你帶著一股好奇和我一起來完成這個導覽列吧,當做完這個導覽列之後你會發現原來DIV排版那麼簡單。願你更有信心學好DIV排版!
先來分析一下這個導覽列要用到多少個盒子:最外邊一個大盒子(nav),這個盒子與1像素高的背景圖片等寬,裡面又有五個小盒子(lanList)分別裝著每一個導覽列,這個盒子與“勾月”圖形等高,導覽列這個盒子裡面又裝著一個稍小的盒子(lanBoxIn),這個盒子又裝著一個黃色的修飾盒子 (span)和一個有文字的連結盒子(a)。
網頁結構代碼:
<div class="nav">
<div class="lanList">
<div class="lanBoxIn">
<span></span><a href="#">徹底弄懂CSS盒子模式1</a>
</div>
</div>
<div class="lanList">
<div class="lanBoxIn">
<span></span><a href="#">徹底弄懂CSS盒子模式2</a>
</div>
</div>
<div class="lanList">
<div class="lanBoxIn">
<span></span><a href="#">徹底弄懂CSS盒子模式3</a>
</div>
</div>
<div class="lanList">
<div class="lanBoxIn">
<span></span><a href="#">徹底弄懂CSS盒子模式4</a>
</div>
</div>
<div class="lanList">
<div class="lanBoxIn">
<span></span><a href="#">徹底弄懂CSS盒子模式5</a>
</div>
</div>
</div>
1.現在正式開始做,做之前初始化一下各簽標的邊界和填充,這裡用樣式:
* {
margin: 0px;
padding: 0px;
}
2.組裝最外邊的大盒子nav,寬200px,高為自動auto或者乾脆不要,背景圖片為bj.jpg,背景縱向重複,用到樣式:
.nav {
background: url(bj.jpg) repeat-y;
width: 200px;
overflow: hidden;
}
3.組裝每條導航的盒子lanList,這個盒子與“勾月”圖形等高,並把“勾月”圖形以背景形式放在這個盒子的左邊,並讓這個盒子靠左邊對齊(因為這個盒子的寬度比外邊的大盒子小,如果相等則可以不用考慮對齊),這裡用到樣式float的屬性,本人沒有寫入樣式中則取其預設值,樣式代碼如下:
.lanList {
background: url(lan.gif) no-repeat left center ;
height: 50px;
width: 190px;
}
4.組裝比每條導覽列稍小的內部盒子lanBoxIn,這個盒子讓它靠右對齊,並與其父級盒子lanList內容邊界上邊形成15px邊界,目的是讓內容塊看起來置中(當然你也可以用到下邊界來實現,達到目的就可以),樣式代碼如下:
.lanBoxIn {
float: right;
height: 20px;
width: 170px;
margin: 15px 0px 0px 0px;
}
5.組裝黃色修飾塊盒子span,這個盒子與父級盒子lanBoxIn等高,並在lanBoxIn盒子內靠左對齊,樣式代碼如下:
.lanBoxIn span {
float: left;
height: 20px;
width: 10px;
background-color: #ff9900;
}
6.組裝連結盒子a,這裡用到樣式: display: block;讓連結以塊狀方式呈現,並為連結安排背景圖片,為了安全起見設定背景不重複,垂直置中(如果瀏覽器出錯解釋錯誤,而你的背景又不是純色的,那麼盒子過大導致的背景重複將會影響網頁美觀),連結文字樣式去除底線,樣式如下:
.lanBoxIn a {
background: url(lanbj2.gif) no-repeat left center;
text-decoration: none;
height: 20px;
width: 155px;
display: block;
float: right;
padding: 0px 0px 0px 5px;
font-weight: bold;
font-size: 9pt;
line-height: 20px;
color: #663300;
}
7.最後簡單為滑鼠移到連結上時,連結風格的改為指定一個樣式:
.lanBoxIn a:hover {
background-image: url(lanbj3.gif);
color: #FFFFFF;
}
至此完成樣式代碼編寫,下面給出內容部分的結構代碼,當然我們並不是先把樣式代碼都寫好了再寫結構代碼的,一般是由外到裡,一邊寫樣式一邊組織內容結構的,本人只是為了講解方便而先全部給出樣式代碼。
像這種列表式導覽列用無序列表(ul/li)來實現更科學,結構代碼如下:
<ul class="nav">
<li class="lanList">
<div class="lanBoxIn">
<span></span><a href="#">徹底弄懂CSS盒子模式1</a>
</div>
</li>
<li class="lanList">
<div class="lanBoxIn">
<span></span><a href="#">徹底弄懂CSS盒子模式2</a>
</div>
</li>
<li class="lanList">
<div class="lanBoxIn">
<span></span><a href="#">徹底弄懂CSS盒子模式3</a>
</div>
</li>
<li class="lanList">
<div class="lanBoxIn">
<span></span><a href="#">徹底弄懂CSS盒子模式4</a>
</div>
</li>
<li class="lanList">
<div class="lanBoxIn">
<span></span><a href="#">徹底弄懂CSS盒子模式5</a>
</div>
</li>
</ul>
源檔案打包下載 xhtml.rar