考虑以下HTML和CSS
.outer {
border: 1px solid red;
margin-left: -10px;
}
.inner {
border: 1px solid black;
width: 50px;
margin-left: 10px;
}
body {
border: 1px solid blue;
}
<div class="outer">
<div class="inner">
inner
</div>
</div>
内部和外部div之间的左侧1px额外间距来自哪里?
将负边距更改为-11px,它可以正常工作(无间隙)。
你也可以删除所有边距并与上面的“负面+正面”情景进行比较,看看两者是如何不相同的。
谢谢。
在搞清楚之后,我只是想分享以下内容,以防对未来的访问者有所帮助。
box-sizing: border-box
答案 0 :(得分:3)
我认为这与.outer
边界有关。您可以在下面看到,当红色边框向左移动10px
时,如果它没有向左移动(当边距为0
时),则会有一个间隙。
因为.inner
div与.outer
div相对,所以它不会“填满”它创建的1px
间隙,只需移动.outer
10个像素即可左边。
在这里你可以看到差距。 (它看起来像2个像素,因为页面放大了200%)
额外的“证据”表明额外的空间来自.outer
div,
如果您移除1px
边框的.outer
宽度,则还会删除间隙:
答案 1 :(得分:2)
对不起,错误的回答,我正急着写......数学:
(-10pxMargin + 10pxMargin + 1pxBorder) = 1
你需要
(-11pxMargin + 10pxMargin + 1pxBorder) = 0
如果这一点足够清楚,请告诉我,问题是边距不包括边界。
答案 2 :(得分:1)
额外的像素来自.outer
元素。
.outer {
margin-left: -10px;
}
.inner {
border: 1px solid black;
width: 50px;
margin-left: 10px;
}
body {
border: 1px solid blue;
}
<div class="outer">
<div class="inner">
inner
</div>
</div>
答案 3 :(得分:0)
而不是使用border
外部元素。您可以使用outline
。
.outer {
outline: 1px solid red;
}
.inner {
border: 1px solid black;
width: 50px;
margin-left: 10px;
}
body {
border: 1px solid blue;
}
<div class="outer">
<div class="inner">
inner
</div>
</div>