在《CSS Mastery》一書的第5章中,作者說IE和Opera使用margin-left來縮進(jìn)列表,而Safari和Firefox使用padding-left。經(jīng)過我的實(shí)際測(cè)試,發(fā)現(xiàn)Opera 9(我實(shí)測(cè)的是Opera 9.23)同F(xiàn)F和Safari一樣,也是使用padding-left的。更精確的說,它們的默認(rèn)樣式應(yīng)該是:
ol, ul { padding-left:40px; }
而IE的默認(rèn)樣式是:
ol, ul { margin-left:30pt; }
Opera 8或者以前的版本是否和IE一樣?有興趣的同志可以自行測(cè)試。
但這至少說明一點(diǎn),除了微軟之外的瀏覽器廠商都達(dá)成一致意見,list的縮進(jìn)應(yīng)該使用padding來控制。其實(shí)這很好理解,縮進(jìn)的是每一個(gè)item而不是整個(gè)的list。設(shè)計(jì)者對(duì)list有怎樣的期望呢?比如說設(shè)置了ul的background:green,多數(shù)人應(yīng)會(huì)期待整個(gè)ul(即包括了padding的部分)都使用綠色背景色,而不會(huì)希望在list的左側(cè)缺失30pt(通常等于40px)。其次,marker部分(就是item之前的小圓點(diǎn)或者數(shù)字序號(hào)部分)是在li之外的,但從邏輯上說它屬于list的一部分,在list之內(nèi)。而IE使用margin,實(shí)際上就導(dǎo)致了marker部分是懸于list之外。實(shí)際上,如果list獲得了layout(hasLayout),你就發(fā)現(xiàn)marker不見了!因?yàn)樵贗E臭名昭著的layout模型里,hasLayout之后,元素對(duì)象會(huì)自行處理其所占據(jù)區(qū)域的呈現(xiàn),但是無法處理其區(qū)域之外。這也是其的width/height實(shí)際上類似min-width/min-height的原因,因?yàn)樗鼰o法繪制overflow到外面的部分。
新聞熱點(diǎn)
疑難解答
圖片精選