1. 程式人生 > >清除浮動的方式以及各自的優劣

清除浮動的方式以及各自的優劣

兩個 基礎上 為什麽 不能 isp 問題 osi 固定 eight

為什麽要清除浮動
浮動會使當前標簽產生向上浮的效果,導致不同瀏覽器在計算父級元素高度,或者顯示前後標簽位置的時候產生意想不到的問題。


清除浮動的方法

  1. 為父元素定義height
  2. 設置父元素浮動,同時為其設置高度
  3. 在浮動元素的後面添加一個空的div標簽,並為新添加的標簽設置clear:both
  4. 在浮動元素的後面添加一個空的br標簽,並為新添加的標簽設置clear:both
  5. 為父元素設置overflow:hidden
  6. 為父元素設置overflow:auto
  7. 為父元素設置display:table
  8. 為父元素設置zoom屬性,並為其添加一個偽類:after,同時設置偽類clear:both

每種方法的分析

  1. 為父元素設置高度,至少可以保證父元素級別的內容可以正常顯示,但是有兩個問題:
    ①父元素固定高度,而內部子元素的高度可能是動態的,這樣會導致出現滾動條
    ②浮動元素的兄弟元素位置的顯示可能還是不正常。
  2. 為父元素設置高度,原理與上面的類似,只是在第一個的基礎上添加了浮動
  3. 為浮動元素後面添加空的div,然後設置空div清除浮動,會導致代碼冗余,當頁面浮動元素較多時,HTML代碼中會有很多空div,顯得很low。
  4. 與第三個相似,只是div標簽換為了br標簽。
  5. 為父元素設置zoom屬性,同時設置overflow:hidden,會導致當子元素的內容為動態的時候,內容可能會被隱藏,且不能配合position:relative儀器使用。
  6. 與overflow:hidden相比,overflow:hidden的問題是可能會出現滾動條。
  7. 為父元素設置display:table,個人感覺會出現未知的問題。
  8. 為父元素設置zoom屬性,並配合偽類一起使用時,瀏覽兼容性好,但問題是必須兩個配合使用。

推薦方法
推薦使用第八種方法,原因:

  • 代碼簡單,無冗余HTML代碼
  • 兼容性好,大部分瀏覽器都支持。

清除浮動的方式以及各自的優劣