打開template.css閱讀第一行時,震驚了,第一眼居然沒看懂。。。。。。以下就是OOCSS下的template.css第一行代碼:
1.body{overflow:hidden; _overflow:visible; _zoom:1;}
2.main{overflow:hidden; _overflow:visible; _zoom:1;}
短短三個屬性竟然包含了浮動、浮動清除、Haslayout、IE6兼容性、最小高度不同瀏覽器下實(shí)現(xiàn)、瀏覽器Hack、overflow的各種用途等等一系列的問題及知識點(diǎn)。
接下來分析這行代碼里面各個屬性真正的意義:
1.overflow:hidden寫在應(yīng)用在包裹元素上的.body和.main,其目的是利用其清除浮動的特性而非隱藏內(nèi)部元素特性。
2.為了兼容性要觸發(fā)IE6/7的hasLayout。這里運(yùn)用overflow:hidden的特性以最小的代價在IE7下清除浮動效果同時并觸發(fā)hasLayout,一舉二得。IE6用的是專有Hack和zoom屬性(_zoom:1)來觸發(fā)hasLayout。
3.既然我們使用overflow:hidden是為了清除浮動,所以我們絕對不能讓元素有高度屬性。而實(shí)際工作中,往往要求必要的基本高度來達(dá)到合理的布局要求,那么這個時候需要使用最小高度min-height,根據(jù)前面的知識我們得知IE6實(shí)現(xiàn)最小高度的方法是用height實(shí)現(xiàn),而我們的overflow:hidden為了清除浮動大局觀是不允許出現(xiàn)固定高度的,使用了hidden再添加了height,那么overflow的特性則發(fā)生轉(zhuǎn)變,變成了隱藏溢出的功能。這里次利用IE6下的overflow:visible的bug,讓IE6下的父元素自動撐開,達(dá)到了所謂的清除浮動的目的,可以說的上是歪打正著,于是乎,產(chǎn)生了_overflow:visible的寫法。
短短的一行代碼,總結(jié)下來也不過是上面短短的幾句話,但是其一系列的知識點(diǎn)串聯(lián)往往發(fā)現(xiàn)還有很長的一段路要走,希望這篇文章能夠帶給你些許的啟示!