gpt4 book ai didi

css - 在 div float 上具有相对位置的 div

转载 作者:太空狗 更新时间:2023-10-29 15:47:02 25 4
gpt4 key购买 nike

我不明白为什么当最后一个在其后声明时,一个向右或向左浮动的 div 不在具有相对位置的 div 之上或用背景色定义。

这是 html:

<html>
<body>
<div class="container">
Main container <br/><br/>

<div class="header">This is the header</div>
<div class="text-right">Right text</div>
<div class="footer">This is the footer</div>
</div>
</body>

这是CSS:

.header {
background-color:blue;
border: solid;
color: white;
border-color:black;
height: 100px;
}

.text-right{
float: right;
border: solid;
background-color: green;
}

.container{
padding: 10px;
border: solid;
}

.footer{
padding-top: 50px;
border: solid;
background-color: yellow;
position: relative;
}

我知道我可以使用 .clear: both 规则来纠正这个问题,但我的主要观点是:为什么当我在 .footer 规则中设置背景颜色或位置或两者时, float div 在页脚?

非常感谢!

最佳答案

一边看一边写的很好post ,在帖子的最后,作者谈到了z-order的内部工作,但也说如果你想了解更多,this next one will be a much more detailed article

关键是元素在 z 轴上的顺序。

作者是这样说的:

If we do not specify any z-index values, the default stacking order from closest to the user to furthest back is as follows:

1. Positioned elements, in order of appearance in source code
2. Inline elements
3. Non-positioned floating elements, in order of appearance in source code
4. All non-positioned, non-floating, block elements in order of source code
5. Root element backgrounds and borders

正如我们所见,定位元素(1)总是在非定位元素(3-4)之上。如果我放置一个只有 float 属性的 div,这个元素将不会“定位”到表面上。

在这种情况下,第二个元素,我的页脚 div,用相对属性值定位,将位于前一个元素的顶部,而不仅仅是我不添加 clear: both 属性在 float div 属性之后或者因为最后一个添加在 float 元素之后但是因为它被定位了!

就像powerbuoy说的,你必须设置一个相对于 float 元素的位置,才能让 float 元素到达栈顶。但这还不够。因为这两个元素现在处于同一级别并且因为它们都相互交叉,所以您必须告诉引擎哪个将是第一个,这就是为什么您必须再次将 z-order 设置为 float 元素的 1 就像说的那样动力浮标。

我不是一个很好的作家,因此,我强烈建议您阅读我之前提到的引用文章。我想你会对这个案例有很深的解释。

关于css - 在 div float 上具有相对位置的 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8604636/

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