創建CSS樣式文本導航條的最簡單解決方法也許就是把所有的鏈接都放在一行文本裡,這種方法看起來很合理也很直觀。但問題在於把所有的鏈接都放在一行文本 裡就很難控制鏈接之間以及前後的空白。所以,為了避免所有的鏈接都擠在一起,你最後通常都不得不插入一些東西或者非換行的空白字符作為分隔,讓這些文字分 離開來,不至於混在一起。
現在我們正常的做法是應用ul、li標簽把鏈接作為無序列表(unordered list)來標識。再應用CSS樣式對其進行控制,按我們預想的形式在容器中顯示出來。對導航條使用無序列表似乎是不符合直觀感受的,因為我們習慣於把無 序列表作為一個豎著推起來的列表項目,每個前面都放著一個列表預設標記。這似乎不符合導航條水平方向的習慣。但作為獨立列表項目集合的列表邏輯結構能夠適 用於導航條裡的鏈接;而CSS的規則讓你能夠強制取代列表項目缺省的表現形式,以消除它們並安排列表項在容器內按水平方向排列,而不是從上而下的規則。現 在讓我們來看看實例,根據無序列表創建CSS樣式和XHTML標簽的橫向導航菜單。
CSS代碼
復制代碼
代碼如下:
<div id="nav">
<ul>
<li><a href="http://www.jb51.net/">HomePage</a></li>
<li><a href="http://www.jb51.net/">Div+CSS教程</a></li>
<li><a href="http://www.jb51.net/">CSS布局實例</a></li>
<li><a href="http://www.jb51.net/">CSS2.0教程 </a></li>
<li><a href="http://www.jb51.net/">CSS在線手冊</a></li>
<li><a href="http://www.jb51.net/">Web標准</a></li>
<li><a href="http://www.jb51.net/">XHTML教程</a></li>
</ul>
</div>
我們再看看關於這段CSS代碼:
CSS代碼
復制代碼
代碼如下:
#nav {
height: 30px;
width: 100%;
background-color: #c00;
}
#nav ul {
margin: 0 0 0 30px;
padding: 0px;
font-size: 12px;
color: #FFF;
line-height: 30px;
whitewhite-space: nowrap;
}
#nav li {
list-style-type: none;
display: inline;
}
#nav li a {
text-decoration: none;
font-family: Arial, Helvetica, sans-serif;
padding: 7px 10px;
color: #FFF;
}
#nav li a:hover {
color: #ff0;
background-color: #f00;
}
我們來看看上面的代碼的完整HTML,復制出來放到一個HTML頁面中,大家可以看到效果:
XML/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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>www.jb51.net</title>
<style type="text/css">
<!--
#nav {
height: 30px;
width: 100%;
background-color: #c00;
}
#nav ul {
margin: 0 0 0 30px;
padding: 0px;
font-size: 12px;
color: #FFF;
line-height: 30px;
white-space: nowrap;
}
#nav li {
list-style-type: none;
display: inline;
}
#nav li a {
text-decoration: none;
font-family: Arial, Helvetica, sans-serif;
padding: 7px 10px;
color: #FFF;
}
#nav li a:hover {
color: #ff0;
background-color: #f00;
}
-->
</style>
</head>
<body>
<div id="nav">
<ul>
<li><a href="http://www.jb51.net/">HomePage</a></li>
<li><a href="http://www.jb51.net/">Div+CSS教程</a></li>
<li><a href="http://www.jb51.net/">CSS布局實例</a></li>
<li><a href="http://www.jb51.net/">CSS2.0教程 </a></li>
<li><a href="http://www.jb51.net/">CSS在線手冊</a></li>
<li><a href="http://www.jb51.net/">Web標准</a></li>
<li><a href="http://www.jb51.net/">XHTML教程</a></li>
</ul>
</div>
</body>
</html>
下面我們來解析上面的代碼:
xhtml 代碼首先定義了一個容器div id="nav"。這個容器用來放置這個無序列表橫向導航菜單的內容,但也有人認為這個容器是多余的,直接定義ul id="nav"就可以了。我們不建議你這樣做,要知道我們的站點是可擴展的,我們要為將來的擴展留有足夠的余地,如果我們的導航樣式設計的更加復雜,僅 有的ul是不能滿足需要的。我們定義這樣的容器也更符合我們編寫代碼的習慣。
#nav定義了窗口的寬高及背景顏色。#nav ul包含有margin和padding聲明,字體及顏色聲明。line-height: 30px;是非常重要的定義,如果取消掉行高的定義,我們的鏈接文字垂直居中就可能受到影響。white-space: nowrap;或許大家並不能理解有什麼作用,它定義了強制在同一行內顯示所有文本,直到文本結束或者遭遇br對象。
#nav li中的list-style-type: none;去除了列表項所使用的預設標記。使其更象是純文本,而沒有列表標記。display: inline;聲明則能夠讓列表項目在頁面上從左向右浮動,而不會讓每個項目顯示在單獨的行裡而從上至下的排列。這兩項聲明是我們實現無序列表橫向導航菜 單的關鍵。
#nav li a和#nav li a:hover定義了鏈接的樣式。其中的內容就不作深入了,唯一要講的就是:padding: 7px 10px;它是用來控制鏈接文字之間的空白間隔的,你可以試著改變數值試試看。