天天看點

目前用來清除“閉合(清除)浮動”的方法

 本來想把這個題目修改為“閉合浮動元素”或“清除浮動元素”,但想了一下,還是不修改為好。因為從這個題目我們可以更加容易的看出,如果您沒有閉合(清除)浮動元素,它将造成的後果是-----div的高度不能自動增加。

  言歸正傳

  目前用來清除“閉合(清除)浮動”的方法,主要是一下四種:

  1. 額外标簽法

  這種方法就是向父容器的末尾再插入一個額外的标簽,并令其清除浮動(clear)以撐大父容器。這種方法浏覽器相容性好,沒有什麼問題,缺點就是需要額外的(而且通常是無語義的)标簽。

  我個人不喜歡這種方法,但是它确實是W3C推薦的方法

  <div style="clear:both;"></div>

  或者使用

  <br style="clear:both;" />

  2. 使用after僞類

  這種方法就是對父容器使用after僞類和内容聲明在指定的現在内容末尾添加新的内容。經常的做法就是添加一個“點”,因為它比較小不太引人注意。然後我們再利用它來清除浮動(閉合浮動元素),并隐藏這個内容。

  這種方法相容性一般,但經過各種 hack 也可以應付不同浏覽器了,同時又可以保證html 比較幹淨,是以用得還是比較多的。

  #outer:after{

   content:".";

   height:0;

   visibility:hidden;

   display:block;

   clear:both;

  }

  3.設定overflow為hidden或者auto

  這種做法就是将父容器的overflow設為hidden或auot就可以在标準相容浏覽器中閉合浮動元素.

  不過使用overflow的時候,可能會對頁面表現帶來影響,而且這種影響是不确定的,你最好是能在多個浏覽器上測試你的頁面

  4.浮動外部元素,float-in-float

  這種做法就是讓父容器也浮動,這利用到了浮動元素的一個特性——浮動元素會閉合浮動元素。這種方式在 IE/Win 和标準相容浏覽器中都有較好的效果,但缺點也很明顯——父容器未必想浮動就浮動的了,畢竟浮動是一種比較特殊的行為,有時布局不允許其浮動也很正常。

  個人不是很贊成這種做法,但是從dudo最後的總結總可以看出,他好像很贊成這種做法.