轉自:http://www.cnblogs.com/mizzle/archive/2011/07/14/2105961.html
 

css清除浮動各種方法:
1,在浮動元素後面增加<br/>標籤;
  <br/>標籤有自帶的清除浮動屬性;
2,在浮動元素後面增加一個清除浮動層;
  <div>
    <div style="float:left"></div>
    <div style="float:left"></div>
    <div style="c​​lear:both"></div>
  </div>
3給浮動元素添加overflow:auto樣式;
4,為最後浮動元素設置如下樣式:  

/*清理浮動*/ .clearfix:after {  visibility:hidden;  display:block;  font-size:0;  content:" ";  clear:both;  height:0; .clearfix {  zoom:1; }


其原理是,在「高級」瀏覽器中使用:after 偽類在浮動塊後面加上一個非display:none 的不可見塊狀內容來,並給它設置clear:both 來清理浮動。在ie6 和7 中給浮動塊添加haslayout 來讓浮動塊撐高並正常影響文檔流。



5,另一種簡潔的辦法:

.cf:before, .cf:after {     content:"";     display:table; .cf:after {     clear:both; .cf {     zoom:1; }


原理還是一樣的。使用:after 偽類來提供浮動塊後的clear:both。不同的是,隱藏這個空白使用的是display: table。而不是設置visibility:hidden;height:0;font-size:0; 這樣的hack。


值得注意的是這里中的:before 偽類。其實他是來用處理top-margin 邊折疊的,跟清理浮動沒有多大的關係。但因為浮動會創建block formatting context,這樣浮動元素上的另而一元素上如果剛好有margin-bottom 而這個浮動元素剛好有margin-top 的話,應該讓他們不折疊(雖然這種情況並不常見) 。



文章標籤

jillyz 發表在 痞客邦 留言(0) 人氣(11,158)