【发布时间】: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:both、overflow:hidden 并且对浏览器没有特殊的语义含义。
这让我可以打破浮动,而不会在代码中放入误导性/模棱两可和冗长的 HTML 元素(如 <div class="clear"></div>),但仍然让我的未浮动父级容纳所有浮动的子级。但是,这似乎不再适用于 FireFox 的许多情况。问题:为什么..?
似乎也没有办法检查侧边栏中的这些伪元素以了解实际情况。
感谢和问候
【问题讨论】:
-
他们一直是
::after和::before,但IE不支持双冒号,所以当然非正式地达成了妥协。 -
这只是在特定版本的ff中吗?
-
我也有一种感觉,这在某种程度上与this
-
如果某些事情没有按您的预期工作,然后发布一个测试用例(jsfiddle.net 或jsbin.com)来演示该问题。 "micro clearfix"(如答案中所建议)对我有用。
-
请注意, :before 和 :after 将块作为元素的 kids 插入,而不是在元素本身之前/之后。这对你来说重要吗?如果没有指向显示您的问题的实际测试用例的链接,就很难判断...