這幾篇都是跟haslayout有關的
斯芬克斯之迷——ie私有属性haslayout的困扰
如何避开麻烦的margin叠加(margin collapsing)
這兩篇主要是在講
- firefox底下float元素不會佔用到高度,以至於父元素不會自動延展高度,而IE的會。實際上firefox是有遵從W3C標準的。而IE會自動延展高度是因為如果有設定寬高,會觸發haslayout(這是很常發生的)。在firefox底下以在父元素上加overflow:hidden來解(如果在父元素上加上float:left;或right,也可解。外國看到的範例比較多用這個解法,裡如wordpress裡面的設定就是用float而不用overflow。)
- firefox底下,第一個子元素的margint-top與最後一個子元素的margin-bottom會被父元素搶走。IE也會。這是符合W3C的margin塌陷。但是如果子元素有設定float,在IE底下因為會觸發haslayout,反而避開了塌陷問題。這個的解法同上,就是在父元素加上overflow:hidden;或float屬性。但是如果子元素沒有設定float,父元素設定overflow只會適用於iE7以上,IE6不適用。所以在IE6底下要用height:1%;的方式來解。
斯芬克斯之谜续——IE下失效的margin-left/right
這個應該是我有遇過,但是那時候沒有歸納出是這個原因。
ie hasLayout property – 終結 ie bugs 之「有編置」性質(ie only)
此篇是特性說明,有興趣的瞭解haslayout的可以參考看看。