原來(lái)工作中曾經(jīng)碰到過(guò)UL列表里一些異常的表現(xiàn), 加上昨天看到了http://bbs.blueidea.com/thread-2984871-1-1.html 這個(gè)貼子,所以測(cè)試了一下list-style的各種屬性,發(fā)現(xiàn)了一個(gè)有意思的現(xiàn)象
先看一下CSS手冊(cè)中,對(duì)于list-style的解釋
定義和用法 list-style 簡(jiǎn)寫(xiě)屬性在一個(gè)聲明中設(shè)置所有的列表屬性。
說(shuō)明 該屬性是一個(gè)簡(jiǎn)寫(xiě)屬性,涵蓋了所有其他列表樣式屬性。由于它應(yīng)用到所有 display 為 list-item 的元素,所以在普通的 HTML 和 XHTML 中只能用于 li 元素,不過(guò)實(shí)際上它可以應(yīng)用到任何元素,并由 list-item 元素繼承。 可以按順序設(shè)置如下屬性: •list-style-type •list-style-position •list-style-image 可以不設(shè)置其中的某個(gè)值,比如 "list-style:circle inside;" 也是允許的。未設(shè)置的屬性會(huì)使用其默認(rèn)值。 默認(rèn)值: disc outside none
在日常工作中經(jīng)常需要對(duì)ul,li進(jìn)行css reset ,將列表符號(hào)隱藏. 最常用的寫(xiě)法就是Ul,li,ol{list-style:none;}(也有人用ul,li,ol{list-style-type:none;})
運(yùn)行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運(yùn)行]
這個(gè)頁(yè)面在IE6,7,8,FF中都沒(méi)什么問(wèn)題.
但是我們不能忽略的是,list-style: 包含了三個(gè)屬性:
list-style-type list-style-position list-style-img
如果不注意這三個(gè)屬性的話,list-style有時(shí)候就會(huì)出來(lái)?yè)v蛋
比如當(dāng)ul,浮動(dòng)后,需要display:inline 來(lái)解決在IE6中的雙倍邊距問(wèn)題時(shí),奇怪的事情發(fā)生了:
運(yùn)行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運(yùn)行]
.ul01{float:left;display:inline;} .ul01,.ul01 li{list-style:none;}
上面的頁(yè)面在ie8,ff中仍然正常 但是在IE6,7中,ul內(nèi)側(cè)與li產(chǎn)生了距離. 由此可見(jiàn),當(dāng)我們定義了list-style:none以后,盡管列表符并不出現(xiàn),但是在IE6,7中,仍然留有它的位置. 看看在FF里這個(gè)UL到底擁有哪些屬性
圖上可見(jiàn),當(dāng)css中定義list-style:none時(shí),對(duì)list-style-position 并沒(méi)有影響,仍然是FF瀏覽器的默認(rèn)設(shè)置,值為outside 而IE6,7中很可能默認(rèn)list-style-position:inside 為了證實(shí)這一點(diǎn),我把list-style:none 換為list-style:none inside none再測(cè)試了一下
運(yùn)行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運(yùn)行]
運(yùn)行后可以發(fā)現(xiàn),在IE6,7中,與list-style:none的表現(xiàn)一模一樣. 所以我推測(cè)在IE6,7中當(dāng)UL具有float:left和display:inline屬性后,設(shè)置了list-style:none,則list-style-position也默認(rèn)為inside了;
所以我得出的總結(jié)是 在IE6,7下,當(dāng)UL不具有float:left;display:inline;時(shí): 無(wú)論有沒(méi)有l(wèi)ist-style:none這個(gè)屬性,列表符都被隱藏,不占位置(下面代碼中的5,6) 當(dāng)UL具有float:left;display:inline;屬性時(shí) list-style:none,列表符被隱藏,但是仍然留有位置(list-style-position:inside);(下面代碼中的 UL1,ul3) 未設(shè)置list-style:none;列表符被隱藏,也不占位(list-style-position:outside)(代碼UL4)
而UL02 在參與測(cè)試的各瀏覽器中表現(xiàn)都比較理想
最后這一段代碼對(duì)比一下各種情況下list-style的表現(xiàn),尤其注意4,5,6在IE6,7下的表現(xiàn)
運(yùn)行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運(yùn)行]
通過(guò)上面代碼表現(xiàn)結(jié)果的對(duì)比,我認(rèn)為: 在firefox中只要list-style-type為none ,則無(wú)論list-stype-position的值為outside或inside , list-style都能很好的被隱藏 而在IE6,7中,僅設(shè)置list-style:none,并不足以解決所有問(wèn)題 所以我認(rèn)為在css reset的時(shí)候使用 list-style:none outside none 更好
經(jīng)典論壇交流: http://bbs.blueidea.com/thread-2984999-1-1.html
本文鏈接:http://m.95time.cn/tech/web/2010/7616.asp
出處:藍(lán)色理想
責(zé)任編輯:bluehearts
◎進(jìn)入論壇網(wǎng)頁(yè)制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評(píng)論。
|