12

960 grid's clearfix vs HTML5 Boilerplate's clearfix - 有什么区别?

这是在 Nathan Smith 的 960 网格的 css 中找到的 clearfix:

/* http://www.yuiblog.com/blog/2010/09/27/clearfix-reloaded-overflowhidden-demystified */

.clearfix:before,
.clearfix:after {
  content: '\0020';
  display: block;
  overflow: hidden;
  visibility: hidden;
  width: 0;
  height: 0;
}

.clearfix:after {
  clear: both;
}

/*
  The following zoom:1 rule is specifically for IE6 + IE7.
  Move to separate stylesheet if invalid CSS is a problem.
*/

.clearfix {
  zoom: 1;
}

这是在 Paul Irish 的 HTML5 Boilerplate 中找到的 clearfix:

/* The Magnificent Clearfix: Updated to prevent margin-collapsing on child elements.
   j.mp/bestclearfix */

.clearfix:before, .clearfix:after {
    content: "\0020"; 
    display: block; 
    height: 0; 
    overflow: hidden;
}

.clearfix:after { clear: both; }

/* Fix clearfix: blueprintcss.lighthouseapp.com/projects/15318/tickets/5-extra-margin-padding-bottom-of-page */

.clearfix { zoom: 1; }

如您所见,它们非常相似。然而它们是不同的。

有没有人对此有任何见解?

哪个更好?为什么?

4

2 回答 2

5

我们的 clearfix 已更新为:

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

Nicolas Gallagher在这篇文章中提供了详细信息

于 2011-06-30T19:18:34.730 回答
5

唯一的区别是 960 的内部有这个.clearfix:before, .clearfix:after

visibility: hidden;
width: 0;

除此之外,它们是相同的。

height: 0; overflow: hidden 应该不需要任何其他声明来隐藏伪元素。

我的理论是 HTML5 Boilerplate 人员已经严格验证了任何浏览器都不需要这两个额外的声明,然后将它们删除。

于 2011-06-29T18:02:20.453 回答