在前端中經常會在布局方面需要清除浮動,我自己總結了一下,清除浮動的幾種方法,也有清除浮動的原理,這也是面試中經常會問到的。
1.overflow:hidden
父元素設定overflow:hidden屬性
原理:必須定義width或zoom=1,同時不能定義height。使用overflow:hidden會觸發BFC(塊級格式化上下文)/(這裡的BFC會在後面一篇文章詳解),浏覽器會自動檢查浮動區域的高度。
缺點:不能和position配合使用,因為超出的尺寸會被隐藏。
優點:代碼量少,簡單。
2.父級div定義僞類:after和zoom
.clearfix:after{
content:"";
height:;
display:block;
clear:both; //清除浮動
visibility:hidden;
}
.clearfix{
zoom:; // 相容IE
}
原理:IE8以上才支援 :after
優點:不容易出現錯誤
缺點:代碼多,不易記
3.使用雙僞元素清除浮動
.clearfix:before,clearfix:after{
display:table;
content:"";
clear:both;
}
.clearfix{
zoom:;
}
缺點:不嚴謹
4.在結尾處加空div标簽:clear:table
在要清浮動的地方的結尾加上一個空div标簽
<div class="clearfloat"></div>
.clearfloat{clear:both;}
原理:添加一個空div,利用css提高clear:both清除浮動,讓父級div能自動擷取高度。
5.父級div定義overflow:auto
原理:必須定義width或zoom:1,使用overflow:auto時,浏覽器會自動檢查浮動區域的高度。
6.BFC(Block Formatting Contexts)
觸發BFC 的幾種規則:
- 浮動元素,float除none以外的值
- 絕對定位元素:position(absolute,fixed)
- display為以下其中之一:inline-blocks,table-cells,table-captions
- overflow除visible以外的值:hidden,auto,scroll,inherit(包括IE8都不支援)