1. 程式人生 > >十天學會web標準(DIV+CSS)系列(七)橫向導航選單

十天學會web標準(DIV+CSS)系列(七)橫向導航選單

一、橫向列表選單

前邊學習過縱向導航選單,又學習了float屬性,那麼要實現橫向導航選單是不是很簡單了,只需要把li橫向排列就可實現了。把第四節的程式碼拿過來直接用,修改後的程式碼如下:

<!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" />
<style type="text/css">
body { font-family: Verdana; font-size: 12px; line-height: 1.5; }
a { color: #000; text-decoration: none; }
a:hover { color: #F00; }
#menu { border: 1px solid #CCC; height:26px; background: #eee;}
#menu ul { list-style: none; margin: 0px; padding: 0px; }
#menu ul li { float:left; padding: 0px 8px; height: 26px; line-height: 26px; }
</style>
</head>
<body>
<div id="menu">
<ul>
<li><a href="#">首頁</a></li>
<li><a href="#">網頁版式佈局</a></li>
<li><a href="#">div+css教程</a></li>
<li><a href="#">div+css例項</a></li>
<li><a href="#">常用程式碼</a></li>
</ul>
</div>
</body>
</html>

最主要就是用float讓li向右浮動後,實現橫向排列,具體步驟不再贅述。以前許多朋友提問怎麼讓它水平居中,其實很簡單,首先導航的寬度是固定的,然後設定margin:0 auto;即可實現了

為了使用者體驗更加友好,還是把a轉換成塊級元素,也可以給a設定背景色或背景圖片來更加美觀了,另外再設定滑鼠放上時的樣式。

#menu { width:370px; margin:0 auto; border: 1px solid #CCC; height:26px; background: #eee;}
#menu ul { list-style: none; margin: 0px; padding: 0px; }
#menu ul li { float:left;}
#menu ul li a { display:block; padding: 0px 8px; height: 26px; line-height: 26px; float:left;}
#menu ul li a:hover { background:#333; color:#fff;}

學到這裡,常用的樣式大部分都涉及到了,也許許多你還記不住,但至少混個臉熟。為了提高效率,建議大家還是手寫程式碼,如果你還不能手寫程式碼,就參考上邊的樣式,自己在css編輯器裡設定吧,不再大量截圖了。

經過上邊的修改,現在的使用者檢驗是不是更加友好了呢。

這裡的#menu ul li a本來是可以不加float:left的,但IE6下在li沒有設定寬度,#menu ul li a設定display:block的情況下,將會顯示錯亂,所以需要在a上增加float:left來修正。萬惡的IE6,怎麼就淘汰不掉呢

二、 用圖片美化的橫向導航

背景圖片也是網頁製作當中最常用的樣式之一,運用好背景圖片,可以使你的頁面更加出色,更加人性化和更快的載入速度。下面還是用以前視訊教程中的例項進行講解,或者直接去看視訊教程

http://www.aa25.cn/div_css/895.shtml。顯示效果如下:

用到三張圖片,分別為當前狀態,滑鼠放上時樣式,和預設樣式用的圖片:

  

下面修改css樣式,只截圖了一張,設定方法相同:

#menu { width:500px; height:28px; margin:0 auto; border-bottom:3px solid #E10001;}
#menu ul { list-style: none; margin: 0px; padding: 0px; }
#menu ul li { float:left; margin-left:2px;}
#menu ul li a { display:block; width:87px; height:28px; line-height:28px; text-align:center; background:url(/upload/2010-08/17/091033_nav_bg2.gif) 0 0 no-repeat; font-size:14px;}
#menu ul li a:hover { background:url(/upload/2010-08/17/091033_nav_bg3.gif) 0 0 no-repeat;}
#menu ul li a#current { background:url(/upload/2010-08/17/091033_nav_bg.gif) 0 0 no-repeat; font-weight:bold; color:#fff;}

為了讓使用者知道當前所處的頁面,做了一個當前頁面的狀態,把ID新增到相應的a上。

<!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" />
<style type="text/css">
body { font-family: Verdana; font-size: 12px; line-height: 1.5; }
a { color: #000; text-decoration: none; }
a:hover { color: #F00; }
#menu { width:500px; height:28px; margin:0 auto; border-bottom:3px solid #E10001;}
#menu ul { list-style: none; margin: 0px; padding: 0px; }
#menu ul li { float:left; margin-left:2px;}
#menu ul li a { display:block; width:87px; height:28px; line-height:28px; text-align:center; background:url(/upload/2010-08/17/091033_nav_bg2.gif) 0 0 no-repeat; font-size:14px;}
#menu ul li a:hover { background:url(/upload/2010-08/17/091033_nav_bg3.gif) 0 0 no-repeat;}
#menu ul li a#current { background:url(/upload/2010-08/17/091033_nav_bg1.gif) 0 0 no-repeat; font-weight:bold; color:#fff;}
</style>
</head>
<body>
<div id="menu">
<ul>
<li><a id="current" href="#">首頁</a></li>
<li><a href="#">網頁版式</a></li>
<li><a href="#">web教程</a></li>
<li><a href="#">web例項</a></li>
<li><a href="#">常用程式碼</a></li>
</ul>
</div>
</body>
</html>

三、 CSS Sprites技術

CSS Sprites在國內很多人叫css精靈或css雪碧。它是把網頁中一些背景圖片整合到一張圖片檔案中,再利用CSS的背景圖片定位到要顯示的位置。這樣做可以減少檔案體積,減少對伺服器的請求次數,提高效率。

講CSS Sprites之前,先把背景圖片給搞清楚

#menu ul li a { background:#ccc url(images/nav_bg2.gif) 0 0 no-repeat; }

css背景屬性縮寫後如上所示,#ccc表示背景色;url()裡是背景圖片路徑;接下來的兩個數值引數分別是左右和上下,第一個引數表示距左多少px,第二個引數表示距上多少,這和padding的簡寫方式是不 一樣,一定不要弄混。另外再強調一點css中值為0可以不帶單位,其它數值都必須帶單位(line-height值為多少倍時,zoom,z-index除外);no-repeat表示背景圖片向哪個方向重複,此時為不重複。

還需說明一點的是定點陣圖片位置的引數是以圖片的左上角為原點的,理解了這些,CSS Sprites技術就基本上懂了,就是靠背景圖片定位來實現的。把三張背景圖片整合到一張上,如下圖:

<!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" />
<style type="text/css">
body { font-family: Verdana; font-size: 12px; line-height: 1.5; }
a { color: #000; text-decoration: none; }
a:hover { color: #F00; }
#menu { width:500px; height:28px; margin:0 auto; border-bottom:3px solid #E10001;}
#menu ul { list-style: none; margin: 0px; padding: 0px; }
#menu ul li { float:left; margin-left:2px;}
#menu ul li a { display:block; width:87px; height:28px; line-height:28px; text-align:center; background:url(/upload/2010-08/17/091033_nav_bg.gif) 0 -28px no-repeat; font-size:14px;}
#menu ul li a:hover { background:url(/upload/2010-08/17/091033_nav_bg.gif) 0 -56px no-repeat;}
#menu ul li a#current { background:url(/upload/2010-08/17/091033_nav_bg.gif) 0 0 no-repeat; font-weight:bold; color:#fff;}
</style>
</head>
<body>
<div id="menu">
<ul>
<li><a id="current" href="#">首頁</a></li>
<li><a href="#">網頁版式</a></li>
<li><a href="#">web教程</a></li>
<li><a href="#">web例項</a></li>
<li><a href="#">常用程式碼</a></li>
</ul>
</div>
</body>
</html>

原文連結:http://www.51itstudy.com/doc/div-css/div_css/908.shtml.htm