body {
margin: 0;
background: pink;
color: #fff;
}
.box {
margin-top: 20px;
background: red;
}
.bottom {
text-align: right;
background: green;
animation: animate 2s infinite alternate linear;
}
@keyframes animate {
from {
margin-top: 10px;
}
to {
margin-top: -40px;
}
}
<div class="box">
some content
</div>
<div class="bottom">
other content
</div>
发生了什么?
如您所见,我们有两个div没有任何复杂样式的样式(简单地是背景色)。我div通过应用负数使第二个与第一个重叠margin-top。我期望看到一个完全重叠,但事实并非如此。第二个div在第一个内容和背景之间滑动,这对我来说是一个奇怪的行为。
动画与此处无关,我只是使用它来更好地表现行为。我们可以简单地添加负边距而不使用动画,我们将拥有相同的东西:
body {
margin: 0;
background: pink;
color: #fff;
}
.box {
margin-top: 20px;
background: red;
}
.bottom {
margin-top:-10px;
text-align: right;
background: green;
}
<div class="box">
some content
</div>
<div class="bottom">
other content
</div>
所以我的问题是:为什么会这样?
顺便说一下,我们都知道CSS会有些棘手的事情,当我们初次面对它们时就不会怀疑(例如边距折叠,从主体到html的背景传播,空白问题等等)。但是他们在某处有清楚的解释,我希望找到一个我可以清楚理解的官方资源,不仅会得到“可能是因为...”,“我怀疑这与...有关”,“它与...有关。”等
噜噜哒
斯蒂芬大帝