css float與positon相關問題

1.IE7、IE8、FF、safari….
position設定為absolute時,
上下左右四邊計算位置的邊際,是以margin推出去後的上下左右位置作為邊界

2.IE6
子元素設定為float,如果父元素沒有指定寬度時,父元素的高度不會自動被撐高。
但是只要父元素有指定寬度,則父元素高度就會自動撐高
如果想在不指定寬度的情況下讓父元素撐高,
則必須替IE6補丁做一個高
_height:1%;
簡單來講就是指定一個高度,然後因為IE的特性就是有指定高度,會觸發haslayout,
因此內容超過的時候會自動將父元素撐高。
利用這點讓IE6的高度抵消掉float元素造成的無法撐高父元素的問題。

其他瀏覽器
子元素設定為float,父元素不管有沒有指定寬度,父元素都不會自動被撐高,
必須在父元素加上overflow:auto才能解。

(適用所有瀏覽器)
父元素與子元素都有設定float時,會把子元素設定float無法把父元素撐高的問題抵消掉。也就是說如果子元素跟父元素都有設定float為left或right的話,在所有瀏覽器呈現都會顯示父元素被撐高。但是這種設定方法的問題點在於設定float之後位置會移動。個人認為不是一個很好的解法,分IE6跟其他瀏覽器,一個用寬度指定或高度補丁,一個用父元素設定overflow在邏輯上會比較好記一點。如果真的要用float去抵消子元素float造成的無法撐高問題,那父元素就必須增加width跟clear,免得底下的元素又浮上來。但是使用float有一個好處是如果子元素設定負值的margin,假設設定overflow該子元素會被隱藏。但如果用float的方式就不會被隱藏。