進階:徹底弄懂CSS盒子模式之二

來源:互聯網
上載者:User
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



相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.