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