【问题标题】:Why does clearfix hack only work on floated elements? [duplicate]为什么 clearfix hack 仅适用于浮动元素? [复制]
【发布时间】:2016-09-09 10:38:52
【问题描述】:

浮动元素和绝对定位元素都从文档流中取出。那么为什么 clearfix hack 只适用于浮动元素而不适用于绝对定位的元素呢?

【问题讨论】:

  • 它更像是css clear 属性,仅用于清除浮动
  • @DhavalChheda clearfix不是 css 属性。这是一种黑客行为。
  • 是的,但是 clearfix 使用了 clear 属性。并且 clear 属性只影响浮动 - 因为只有浮动可以被清除。定位元素没有“间隙”这样的概念。
  • @BoltClock clearfix 还在最后一个孩子之后添加content: " "。并且内容是块级的,不是绝对定位的。
  • 这和你的问题有什么关系?

标签: html css clearfix


【解决方案1】:

浮动: 当您浮动一个元素时,该元素不会被取出。 Float 不会从文档流中删除元素。

绝对位置: 当您定位一个元素时,该元素被取出(放置在其他元素之上)。 绝对定位从文档流中移除一个元素。给定绝对定位的元素将不再影响文档中其他元素的布局。

这是您可以轻松理解的最佳示例:Check this

【讨论】:

【解决方案2】:

有一个常见的误解,认为浮动是永久从文档流中删除的。

情况并非如此,浮动元素会从其在流中的标准位置移除,并根据指定的浮动方向在其当前行上尽可能向左或向右移动。

W3 Spec

浮点数是一个在当前行向左或向右移动的框。浮动(或“浮动”或“浮动”框)最有趣的特征是内容可能沿其侧面流动(或被“清除”属性禁止这样做)。内容从左浮动框的右侧向下流动,右浮动框的左侧向下流动。

浮动框向左或向右移动,直到其外边缘接触到包含块的边缘或另一个浮动的外边缘。如果有行框,则浮动框的外顶部与当前行框的顶部对齐。

浮动元素会影响它们周围的元素,绝对定位的元素不会。

W3 Spec 绝对定位

在绝对定位模型中,一个盒子相对于它的包含块显式地偏移。 完全从正常流程中移除(对后面的兄弟姐妹没有影响)。

注意到区别了吗?

因此,clearfix(或清除)只影响浮动元素。 clearfix 不用于清除浮动元素,它用于包含另一个元素内的浮动元素。

有一篇关于 CSS-Tricks 的精彩文章解释了 All About Floats 并涵盖了它们之间的区别和定位。

【讨论】:

  • 内容从左浮动框的右侧流下,从右浮动框的左侧流下。 内容仅指文字和图片?
  • 是的...如果可以的话。 - learnlayout.com/float.html
  • 和内容的显示类型有关系吗?例如。是否只有inline 元素围绕浮动元素流动,块级元素将它们视为绝对位置元素?
  • 是的,不,块元素不能围绕浮动元素流动,因为它们默认为 100% 宽,因此它们在同一行上没有空间。
  • 但是即使我们给div 赋予一定的宽度,它也不会围绕浮动元素流动。
猜你喜欢
  • 2016-01-13
  • 2023-04-02
  • 2016-10-15
  • 1970-01-01
  • 2014-09-22
  • 1970-01-01
  • 1970-01-01
  • 2017-05-05
  • 2020-12-25
相关资源
最近更新 更多