【发布时间】:2018-11-07 17:12:28
【问题描述】:
代码如下:
* {
margin:0;
padding: 0;
}
.first {
float: right;
width: 100%;
height: 40px;
background-color: black;
}
.second {
float: right;
background-color: red;
width: 50%;
height: 40px;
margin-left: -50%;
}
<div class="first"></div>
<div class="second"></div>
由于第一个 div 的宽度是 100%,所以第一行没有第二个 div 的空间,我以为第二个 div 会显示在下一行,但第二个 div 消失了。然后我发现第二个div的offsetLeft值是视口的-50%,等于第二个div自己的宽度。所以第二个 div 与第一个 div 放在同一行,但它的 offsetLeft 是负数,所以我看不到它。为什么当浮动元素的边距为负时会如此奇怪?
【问题讨论】:
-
你需要清除第二个div developer.mozilla.org/en-US/docs/Web/CSS/clear
-
@Gerard 谢谢。我知道 clear 会消除第一个浮动 div 的影响。但我就是想不通如果我不使用 clear,为什么第二个 div 的 offsetLeft 值为负数。
-
我认为第二个 div 没有放在第一个 div 的同一行。您的负左边距已从文档视图中删除了该元素。如果您检查并检查元素位置。
-
@Ashish 我检查了,我发现两个 div 的 offsetTop 值都是 0。所以我认为它们放在同一行。而第二个div的offsetLeft值是负数,这是我无法理解的。
-
将第二个 div 设置为
width: 100%;
标签: css