【问题标题】:Pseudo-elements ignored by FireFoxFireFox 忽略的伪元素
【发布时间】:2012-04-12 01:13:03
【问题描述】:

女士们先生们,

很长一段时间以来,我一直在使用以下 CSS 技术通过清除来打破浮动:

{
    display: block;
    content: ".";
    clear: both;
    font-size: 0;
    line-height: 0;
    height: 0;
    overflow: hidden;
}

然后我会将这组规则分配给 :before:after 伪元素(或者,现在,似乎是 ::before::after,尽管它们应该回退到底漆)。从逻辑上讲,这与在元素之前或之后创建块元素完全相同,具有clear:bothoverflow:hidden 并且对浏览器没有特殊的语义含义。

这让我可以打破浮动,而不会在代码中放入误导性/模棱两可和冗长的 HTML 元素(如 <div class="clear"></div>),但仍然让我的未浮动父级容纳所有浮动的子级。但是,这似乎不再适用于 FireFox 的许多情况。问题:为什么..?

似乎也没有办法检查侧边栏中的这些伪元素以了解实际情况。

感谢和问候

【问题讨论】:

  • 他们一直是::after::before,但IE不支持双冒号,所以当然非正式地达成了妥协。
  • 这只是在特定版本的ff中吗?
  • 我也有一种感觉,这在某种程度上与this
  • 如果某些事情没有按您的预期工作,然后发布一个测试用例(jsfiddle.netjsbin.com)来演示该问题。 "micro clearfix"(如答案中所建议)对我有用。
  • 请注意, :before 和 :after 将块作为元素的 kids 插入,而不是在元素本身之前/之后。这对你来说重要吗?如果没有指向显示您的问题的实际测试用例的链接,就很难判断...

标签: css firefox css-float


【解决方案1】:

使用这个:

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

它是跨浏览器并且有效。

例子:

<div class="clearfix">
   <div style="float:left;">1</div>
   <div style="float:left;">2</div>
   <div style="float:left;">3</div>
   <div style="float:left;">4</div>
</div>

添加了style="float:left;" 以显示它们是浮动的,但不要使用内联 CSS。 不需要额外的标记来清除。

【讨论】:

  • 我正要发布这个,但我太慢了:) 更多信息:css-tricks.com/snippets/css/clear-fix
  • 没用,这一次既不是 Chrome 也不是 FireFox。啊,顺便说一句...感谢您的努力,但没有人试图回答我的问题。
  • Francisc,澄清一下:您的意思是在元素本身上添加类clearfix,还是在我提到的剩余&lt;div&gt; 上添加......?跨度>
  • 您在要清除的元素上添加clearfix。至于您的具体问题,您需要提及 FireFox 的版本。此外,您的明确修复不适用于不支持伪元素的浏览器。
  • 对不起,现在工作。一定是错误的放置和不正确的边距使用。非常感谢。
猜你喜欢
  • 2013-06-12
  • 2017-06-07
  • 2018-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-27
  • 2022-07-18
相关资源
最近更新 更多