清除浮动代码的不同?

在一个common.css中发现了3中清除浮动,
他们有什么区别吗?

.clearfix{zoom:1; overflow:hidden;}
.clear{ clear:both; font-size:0; height:0; line-height:0;overflow:hidden}
.row {zoom: 1;}
.row:after {content: "";display: table;clear: both;}

我遇到子元素有浮动的情况,都是使用这段代码。

.clearfix:after{
  content:"";
  dispaly:block;
  clear:both;
}
.clearfix{
  zoom:1;
}

还是说不同情况不同对待?

阅读 5.3k
6 个回答

第二种用得比较多。
如果用overflow:hidden;很多情况下是不能用的

建议用第二种,第一种overflow兼容性不够好

clear:both 不多说
overflow:hidden 是会触发 内容格式化块 块级格式化上下文,所以内部浮动会被“清除” 让其不会影响外部元素
::after 伪元素也是用通过增加空内容display:block于用普通的clear 方法相比,个人看来似乎并没什么特殊的
zoom这个好像和ie 有关,不太清楚

第一种写法应该更多考虑了对IE的兼容。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题