【问题标题】:css clearfix behavior not the same for firefox and chromeFirefox 和 chrome 的 css clearfix 行为不一样
【发布时间】:2013-03-23 22:15:44
【问题描述】:

我在一个 div 上使用这个类进行 css clearfix,它的计算宽度为 0,但其中包含宽度 x 的内容。

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

发生的事情是,在我使用这个类之后,在 chrome 中,div 采用了其内容的宽度。 但在 Firefox 中,div 采用其父级的宽度。

行为不应该是 div 在两个浏览器中都采用其内容的宽度吗? 可能是什么问题?

【问题讨论】:

  • OT:我永远无法理解为什么人们会使用这些极其丑陋的 clearfixes ......
  • 那么请推荐一个
  • 你能发布一个 jsFiddle 或者至少一个完整的代码示例吗?

标签: html css css-float clearfix


【解决方案1】:

如果它不干扰您的其他样式,您可以使用overflow: hidden; 强制容器展开浮动内容等。

请参阅此 jsFiddle:http://jsfiddle.net/mBSCj/,它适用于所有主流浏览器。

【讨论】:

  • 只要你没有溢出的内容(想想下拉菜单),这是一个非常好的清除浮动的方法。
  • @cimmanon 是的,当我忘记使用它时,我已经绊倒了自己几次,但我通常发现这是最简洁和一致的方法,特别是因为它没有t 需要额外的元素或伪元素。
【解决方案2】:

还有另一种在不使用额外标记的情况下清除浮动的方法。它比 micro clearfix 早了好几年。

http://www.positioniseverything.net/easyclearing.html

.clearfix:after {
    content: " ";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}

【讨论】:

    猜你喜欢
    • 2015-10-01
    • 1970-01-01
    • 2010-11-18
    • 2017-10-17
    • 2016-04-19
    • 2011-02-25
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多