clearfix hack做为一种无需借助额外标签清除浮动的方法已经人尽皆知了,本文给出一种优化方案,可以进一步减少所需css的数量……

Demo: Micro clearfix hack

Known support: Firefox 3.5+, Safari 4+, Chrome, Opera 9+, IE 6+

micro clearfix基于 Thierry Koblentz’s “clearfix reloadedreloaded优化而来,适用于现代浏览器(modern browsers)

下面是micro clearfix的代码片段

1
2
3
4
5
6
7
8
9
10
11
.cf:before,
.cf:after {
content: " ";
display: table;
}
.cf:after {
clear: both;
}
.cf {
*zoom: 1;
}

“micro clearfix”生成伪类元素,并将其display属性设置为table,这样就会创建一个匿名table-cell,同时生成了新的BFC,这样意味着
:before伪类会阻止上边距折叠,:after伪类用于清除浮动,好处是不用隐藏产生的内容了,所需要的css代码就变少了。

为了清除浮动包含:before选择器是没必要的,但是:before的加入可以阻止top-margins折叠,这样有两个好处:

同其他使用BFC方式清除浮动一样,确保了视觉上的一致,例如使用overflow:hidden
IE 6/7中使用zoom:1 时,确保了视觉上的一致
N.B.: 有一个细节:IE 6/7中在新的BFC中浮动元素的下边距是不会包含在内的,进一步的描述可以看这里: Better float containment in IE using CSS expressions.
content:” “的使用避免了一个Opera的bug,如果contenteditable属性同时出现在元素中时,这个bug会在待清除元素周围生成空格。一种可选的修复方案是使用 font:0/0 a,多谢Sergio Cerrutti测试出这个bug

转载于:一种代码量更少的(micro clearfix)清除浮动的hack

英文版:A new micro clearfix hack,转载标明出处,谢谢!

本文地址: https://lxchuan12.github.io/2016/08/19/20160819-css-micro clearfix-hack/