在解決ul居中問題時想到的幾點
更新時間:2007年09月09日 21:45:10 作者:
最近在做網(wǎng)站的時候碰到了一個問題:我用 ul 標簽和 li 標簽構(gòu)建的導(dǎo)航欄想要在不確定 li 數(shù)量和 li, ul 寬度的情況下居中,但是給 ul 使用了 text-align:center 之后卻沒有起到應(yīng)有的效果。
原來的頁面結(jié)構(gòu)是:
<div id="menu">
<ul class="menu_ul">
<li class="menu_li"><a href="#">Firede</a></li>
<li class="menu_li"><a href="#">Style5</a></li>
</ul>
</div>
樣式表結(jié)構(gòu)是:
<style>
#menu{...}
.menu_ul{...}
.menu_li{...}
</style>
這樣本來也是沒有什么問題的,但是因為要實現(xiàn)一個功能卻定義了一個ID(menu)和兩個CLASS(menu_ul, menu_li),這樣CSS文件就臃腫了。
我之所以搞不定 ul 居中的問題,就是因為 CSS 寫的太亂太多,到最后一環(huán)套一環(huán),自己都糊涂了,定義結(jié)構(gòu)的代碼混雜在各種為了顯示效果而寫的代碼之中,于是便寫亂了。
在大腦發(fā)暈的情況下,不想修改了,于是重新寫了實現(xiàn)以上功能的代碼,頁面結(jié)構(gòu):
<div id="menu">
<ul>
<li><a href="#">Firede</a></li>
<li><a href="#">Style5</a></li>
</ul>
</div>
完整的樣式表:
<style>
#menu {text-align:center;}
#menu ul {padding:0;margin:0;}
#menu li {display:inline;padding:0 10px;}
</style>
像這樣,很簡單的就解決了 ul 不能居中的問題。回頭檢查我的代碼,原來是因為在 li 的樣式里多加了一句 float:left,因為定義的 display 并不是 block,而是 inline,所以并不能浮動,造成了沖突,最終導(dǎo)致 ul 無法居中顯示。
總結(jié)一下,在寫網(wǎng)頁結(jié)構(gòu)的時候,最好同一個功能模塊使用相對統(tǒng)一的CSS名。如果可以定義一個樣式名解決問題的,盡量不要定義多個,代碼也要盡量簡潔。因為代碼臃腫了就很容易出問題,并且很難發(fā)現(xiàn)錯誤在什么地方。多用些像 menu, menu ul, menu li, menu a, menu a:hover 這種一系列的樣式,而不是定義一些像 menu, menu_ul, menu_ul_li 這樣看似調(diào)理清晰、層次鮮明,但是實際上很混亂的名稱。
習(xí)慣是以往經(jīng)驗在潛意識中總結(jié)出的精華,但是隨著技術(shù)的進步,很多以往的習(xí)慣都成為進一步提高的阻礙,這時候就要多參考一下標準了,看看以往的習(xí)慣是不是值得堅持下去。做網(wǎng)站也一樣,標準是能夠提高效率、改善性能并且指明方向的,Web標準化的設(shè)計更有助于我們提高維護網(wǎng)站的效率。
原來的頁面結(jié)構(gòu)是:
復(fù)制代碼 代碼如下:
<div id="menu">
<ul class="menu_ul">
<li class="menu_li"><a href="#">Firede</a></li>
<li class="menu_li"><a href="#">Style5</a></li>
</ul>
</div>
樣式表結(jié)構(gòu)是:
復(fù)制代碼 代碼如下:
<style>
#menu{...}
.menu_ul{...}
.menu_li{...}
</style>
這樣本來也是沒有什么問題的,但是因為要實現(xiàn)一個功能卻定義了一個ID(menu)和兩個CLASS(menu_ul, menu_li),這樣CSS文件就臃腫了。
我之所以搞不定 ul 居中的問題,就是因為 CSS 寫的太亂太多,到最后一環(huán)套一環(huán),自己都糊涂了,定義結(jié)構(gòu)的代碼混雜在各種為了顯示效果而寫的代碼之中,于是便寫亂了。
在大腦發(fā)暈的情況下,不想修改了,于是重新寫了實現(xiàn)以上功能的代碼,頁面結(jié)構(gòu):
復(fù)制代碼 代碼如下:
<div id="menu">
<ul>
<li><a href="#">Firede</a></li>
<li><a href="#">Style5</a></li>
</ul>
</div>
完整的樣式表:
復(fù)制代碼 代碼如下:
<style>
#menu {text-align:center;}
#menu ul {padding:0;margin:0;}
#menu li {display:inline;padding:0 10px;}
</style>
像這樣,很簡單的就解決了 ul 不能居中的問題。回頭檢查我的代碼,原來是因為在 li 的樣式里多加了一句 float:left,因為定義的 display 并不是 block,而是 inline,所以并不能浮動,造成了沖突,最終導(dǎo)致 ul 無法居中顯示。
總結(jié)一下,在寫網(wǎng)頁結(jié)構(gòu)的時候,最好同一個功能模塊使用相對統(tǒng)一的CSS名。如果可以定義一個樣式名解決問題的,盡量不要定義多個,代碼也要盡量簡潔。因為代碼臃腫了就很容易出問題,并且很難發(fā)現(xiàn)錯誤在什么地方。多用些像 menu, menu ul, menu li, menu a, menu a:hover 這種一系列的樣式,而不是定義一些像 menu, menu_ul, menu_ul_li 這樣看似調(diào)理清晰、層次鮮明,但是實際上很混亂的名稱。
習(xí)慣是以往經(jīng)驗在潛意識中總結(jié)出的精華,但是隨著技術(shù)的進步,很多以往的習(xí)慣都成為進一步提高的阻礙,這時候就要多參考一下標準了,看看以往的習(xí)慣是不是值得堅持下去。做網(wǎng)站也一樣,標準是能夠提高效率、改善性能并且指明方向的,Web標準化的設(shè)計更有助于我們提高維護網(wǎng)站的效率。
相關(guān)文章
ul在Firefox和IE下的不同表現(xiàn)的解決方法
ul在Firefox和IE下的不同表現(xiàn)的解決方法...2007-08-08
推薦三種簡潔的Tab導(dǎo)航(網(wǎng)頁選項卡)簡析
推薦三種簡潔的Tab導(dǎo)航(網(wǎng)頁選項卡)簡析...2007-05-05
用CSS控制表格或單元格強制換行,防止表格被英文單詞或中文撐大
自動換行問題,正常字符的換行是比較合理的,而連續(xù)的數(shù)字和英文字符常常將容器撐大,挺讓人頭疼,下面介紹的是CSS如何實現(xiàn)換行的方法2008-10-10

