1、{clear:both;}設置了clear 屬性的元素,其上邊框位置會緊貼浮動元素的 margin-bottom 邊界位置渲染,使包含浮動元素的容器高度正常。所以適用于浮動元素后面容器之內(nèi)有個非浮動元素,或是額外添加一個新的空元素。
2、.after-clear-float :after{content:""; display:block; clear:both;}利用偽類添加新元素,原理同上,所以只適用于父容器最后一級子元素是浮動的,即浮動元素后面沒有非浮動元素把它和父容器隔開。只是IE6/7不支持:after 偽元素。
3、{overflow:hidden;}或overflow:auto;創(chuàng)建了overflow 樣式值為非visilbe的元素,實際上是創(chuàng)建了 CSS 2.1 規(guī)范定義的 Block Formatting Contexts,會重新計算其內(nèi)部元素位置,從而獲得確切高度。這樣父容器也就包含了浮動元素高度。這個名詞過于晦澀,在 CSS 3 草案中被變更為名詞 Root Flow,顧名思義,是創(chuàng)建了一個新的根布局流,這個布局流是獨立的,不影響其外部元素的。測試時當子元素同時混有浮動元素和非浮動元素時效果并不好。IE6/7 中并不被支持。
4、{display:table}或{display:table-cell}當元素 display 值被設定為 table 或 table-cell 時,同樣也創(chuàng)建了 CSS 2.1 規(guī)范定義的 Block Formatting Contexts。這樣父容器也就包含了浮動元素高度。IE6/7 中并不被支持。
5、使用表格類元素作為浮動元素容器。把浮動元素匡在td里就木有浮動問題,而且木有兼容問題。當使用 TABLE TD TH 等 TABLE 系列標簽時, 元素的 display 值實際上說是 display: table 系列,這同樣也創(chuàng)建了 CSS 2.1 規(guī)范定義的 Block Formatting Contexts。這樣父容器也就包含了浮動元素高度。同時在 IE 6/7 中,TABLE TD TH 等 TABLE 系列標簽天然擁有 haslayout 特性。
6、浮動父元素。雖然這種方式并沒有兼容問題,但實際使用中并不推薦。因為很容易推斷出,頁面中只要有一個浮動元素,使用該方法清理浮動將不可避免的使頁面所有元素都浮動才可以達到預期效果。
7、觸發(fā) hasLayout。下面是原文的這部分內(nèi)容:
樣例:
新聞熱點
疑難解答