gpt4 book ai didi

css - clearfixed 元素之上的 float 元素

转载 作者:太空宇宙 更新时间:2023-11-04 09:53:08 24 4
gpt4 key购买 nike

我遇到了这个非常有趣的事情。正在摆弄花车和 clearfix。我有一个部分(容器),其中包含 3 个左浮动的 div 框,为了避免容器折叠,我在其上使用了 clearfix 方法。就像之前和之后的那个一样,清空内容,显示 block 和清除两者。没什么特别的。现在,为了查看此 clearfix 如何处理顶部和底部的边距,我在容器外部的顶部创建了一个 div 框。容器的顶部和底部边距均为 50 像素,因此效果很好。但奇怪的是,当我试图将一个橙色盒子漂浮在容器外时,盒子变成了包含在容器内的容器,以尊重容器的 child 。我觉得这很奇怪,因为那个盒子不在容器标签内,而是在外面。我知道 float 元素已从正常文档流中删除,因此容器的 margin-top 不能再在 div 框上中继,因为它已从文档流中删除并且唯一依赖的元素是 body left。但我的问题是:如果橙色盒子不是它的 child ,为什么橙色盒子会包含在棕色容器内?之前:

Before:

float 后:右;应用于橙色框: After float: right; was applied to orange box:

我的意思是橙色盒子本来可以奇怪地移动到任何其他地方,但当它甚至不是容器的 child 时,它就不能很好地包含在容器内,他们是 sibling 。这里到底发生了什么?

基本代码:

<body>
<div id="box1"></div>
<section class="clearfix">
<div class="one">One</div>
<div class="two">Two</div>
<div class="three">Three</div>
</section>
<div id="box"></div>
</body>

.clearfix:before,
.clearfix:after {
content: "";
display: block;
clear: both;
}

#box {
width: 300px;
height: 100px;
background: blue;
}

#box1 {
width: 300px;
height: 50px;
background: orange;
float: right;
}

最佳答案

正如您提到的,您在橙色框上使用 float:right 并且它进入其他 div 中,那么是的,您在使用 float 后没有使用 clear:both。请记住,如果您在 on 部分之前和之后使用 clearfix 将不起作用。您必须在 float div 之后使用 clear:fix ,否则它会中断流程并导致您所看到的问题。

参见demo .我只是在向右浮动的 div 之后使用 clear:both ,一切看起来都很好。为了使它更简单,请在使用 float:right 或 left 时尝试清除,您不会遇到任何问题。如果你在最后一个 li 之后仍然使用 ul li 标签得到这个,使用 clear div 你就完成了。希望这对您有所帮助。

关于css - clearfixed 元素之上的 float 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38947686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com