css 浮動后的元素不論是什么display的都默認是block就是設置inline也是block
IE/6出現雙邊框的原因
出現雙邊距的條件是當浮動元素的浮動方向和margin的方向一致時才會出現。也就是說,並不是只有塊狀元素左浮動,且具有左外邊距時才有這個BUG,當一個盒子右浮動的同時有一個向右的margin-right的時候,IE6也會把margin-right解析為原來的2倍。當有多個同行元素都浮動了,而且都有同方向的margin,則只有最靠近浮動方向的元素有雙邊距bug。(如果都是一個方向的浮動那么第一個只有雙邊距,但同時也有右邊的浮動,那么也同樣是雙邊距,原理是相對誰浮動的)
解決這個bug有兩個方法:
- 給float的元素添加一個display:inline (錯誤!!!) 其實不用加,浮動的元素本身會變成block元素,加了也不會生效
- 給ie6寫一個hack,其值是正常值的一半,即_margin-right:10px;這個方法不推薦,因為要加hack寫法,而這個是要盡量避免寫的。但是這個正好能夠說明這個bug的真實存在。
本來以為,將display設置為inline后,就改變了BUG產生的條件之一,即必須是塊狀元素。但是后來又看到了下面這段話:“熟悉規則的人知道浮動元素自動設置為”block”元素,而不管他們之前是什么。這說明浮動元素上的{display: inline;}會被忽略,事實上所有的瀏覽器沒有呈現任何改變,包括IE。但是,它不知何故讓IE停止將浮動元素的邊界翻倍。”
參考博客