導航在網站中起着舉足輕重的作用,常見的導航形式主要有橫向導航、縱向導航和下拉式導航等三種形式。
傳統的導航是表格式佈局,不僅代碼量大,後期維護起來也不方便,而且也沒有實現表現與內容的分離,顯然不符合web2.0的標準。下面我們重點來看css是如何實現橫向導航的。
先看代碼:

程序代碼

<ul id="nav">

    <li><a href="#">首頁</a></li>

    <li><a href="#">心路</a></li>

    <li><a href="#">歷程</a></li>

    <li><a href="#">設計</a></li>

    <li><a href="#">代碼</a></li>

    <li><a href="#">優化</a></li>

</ul>

這裏我們引入了一個新的元素ul。ul是CSS中使用相當廣泛的一種元素,主要用來描述列表型內容。每一個<ul></ul>相當於一個列表塊,塊中的每一條列表數據用<li></li>來描述,下圖是一個不加樣式的ul實現的樣式效果:

如圖:導航對比

顯然,ul默認加上了圓點序號,而且自上而下排列。實際上導航可以理解為導航列表,每一個列表數據就可以看做是一個頻道,當然也可以用二層嵌套div來實現導航代碼結構,但相對於ul來説,div顯然過於複雜,而且我們之前也説過,div主要是用來大範圍的樣式佈局。而類似於導航的塊狀型區域則主要交給ul來處理。

下面我們來看為其實現樣式的css代碼:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title></title>
<style type="text/css">
<!--

ul{list-style-type:none;}     /*去除列表項前端的項目符號*/

ul li{float:left;}  /*使列表項不再遵循默認的自上而下樣式,而類似於div的向左浮動屬性,使右側對象緊貼左側最終形成橫向排列樣式*/

ul li a{display:block;/*塊狀顯示,在第三節講div的時候曾提過,此處的作用就是把a鏈接對象由一段文本改為塊狀對象,使其具備div的一些特性,從而實現內外邊距,邊框背景等屬性*/

    margin-left:10px;    /*左外邊距*/

    width:60px;          /*塊寬度*/

    height:16px;         /*塊高度*/

    padding-top:4px;     /*上內邊距*/

    text-align:center;   /*文本距中顯示*/

    background-color:#cecece;    /*塊背景色*/

    color:#009900;               /*字體顏色*/

    font-size:12px;              /*字體大小*/

    text-decoration:none;}       /*字體裝飾無下劃線*/

ul li a:hover{color:#fff;            /*偽類:指向鏈接時的字體顏色*/

        background-color:#33ccff;    /*偽類:指向鏈接時的背景色*/

        text-decoration:underline;   /*偽類:指向鏈接時的字體裝飾*/

        }
-->
</style>
</head>

<body>
<ul id="nav">
<li><a href="#">首頁</a></li>
<li><a href="#">心路</a></li>
<li><a href="#">歷程</a></li>
<li><a href="#">設計</a></li>
<li><a href="#">代碼</a></li>
<li><a href="#">優化</a></li>
</ul>
</div>
</body>
</html>

特別説明:

1、以下兩句都使用了包含選擇符。

ul li{}

ul li a{}

2、用ul實現的橫向導航顯然用了極少的代碼量實現了豐富的效果,這是表格所不及的。而且在後期增刪頻道更為方便。


下面我們對代碼修改以實現如下樣式:

如圖:導航示例

因為有圖片,所以要下載示例文件。



程序代碼

特別説明:
此處順便講解了如何應用了背景圖片的絕對定位屬性,把原本兩個不同色調的圖片合二為一,然後定位顯示。從而豐富導航的樣式。當然背景屬性此處不做重點,我們會在以後的教程中詳細講解。

通過這兩個示例的練習,想必大家都能做出漂亮的橫向導航了吧。下一節我們將來製作縱向導航

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title>橫向分類導航-css系列教程-超級寶貝-http://www.chaojibaby.com</title>

<style type="text/css">

<!--

body{margin:0px;}

#header{margin:0px auto;width:780px;height:90px;background-color:#000;padding:0px;}

#header img{position:relative;top:20px;left:30px;}  /*相對定位,位置根據前一對象進行偏移*/

#nav{

    list-style:none;

    position:relative;  /*相對定位,位置根據前一對象進行偏移*/

    top:37px;

    left:300px;

    width:500px;/*此處須設定寬度,否則在IE與Firefox裏不一致且不正常*/

}     

#nav li{float:left;}  

#nav li a{display:block;

    margin-left:10px;    

    width:69px;          

    height:16px;       

    padding-top:4px; 

    text-align:center;   

    background-image:url(nav.gif); 

    background-position:0px -22px; /*背景絕對定位,只顯示背景圖片的下部分*/

    color:#009900;              

    font-size:12px; 

    letter-spacing :10;            

    text-decoration:none;}      

#nav li a:hover{color:#fff;           

        background-image:url(nav.gif);

        background-position:0px 0px;/*背景絕對定位,只顯示背景圖片的上部分,此代碼不能省略,因為上面曾指定了背景樣式,幫在此處覆蓋*/

        text-decoration:underline;   

        }

-->

</style>

</head>


<body>

<div id="header">

   <a href="http://www.chaojibaby.com"><img src="css_desiger.gif" alt="超級寶貝" border="0" /></a>

  <div id="nav">

        <li><a href="#">首頁</a></li>

        <li><a href="#">心路</a></li>

        <li><a href="#">歷程</a></li>

        <li><a href="#">設計</a></li>

        <li><a href="#">代碼</a></li>

        <li><a href="#">優化</a></li>

  </div>

</div>

</body>

</html>