保证金底部 100% 和保证金顶部 -100% 不起作用

Margin Bottom 100% and Margin Top -100% not working

我无法理解为什么我的第三个 div 在我使用 margin-top 时没有以 -100% 的高度堆叠。我正在使用 Greensock 为 divs 的运动制作动画,而 margin-left 对于第一个 div 非常有效。但是当我尝试将上面的 div 向下移动时,它会更高。我知道高度是基于宽度的,但据我了解,如果我使用 100%,尺寸是多少并不重要。我首先尝试使用 margin-bottom 但它没有用。任何帮助将不胜感激。谢谢你。这是 jsFiddle https://jsfiddle.net/kqyyq78q/

<body>
<a id="overlay"></a>
<div id="start">
<img src="http://imgh.us/roadtest1.svg" id="road" />
</div>
<div id="num1">
<img src="http://imgh.us/roadtest2.svg" id="road" />
</div>
<div id="num2">
<img src="http://imgh.us/roadtest3.svg" id="road" />
</div>
</body>

html,
body {
width: 100%;
height: 100%;
margin-top: 0;
margin-bottom: 0;
margin-right: 0;
margin-left: 0;
overflow: hidden;
font-size: 100%;
position: absolute;
}

#overlay {
z-index: 8;
position: fixed;
margin-left: 50%;
padding-top: 20%;
}

#road {
width: 100%;
height: auto;
}

#start {
width: 100%;
height: 100%;
position: fixed;
text-align: center;
}

#num1 {
width: 100%;
height: 100%;
position: fixed;
margin-left: 100%;
}

#num2 {
width: 100%;
height: 100%;
position: fixed;
margin-top: -100%;
}

实际情况是您在边距上使用了百分比,就好像它们是相对于图像高度一样。

边距和边距的百分比是相对于宽度的。这意味着只要标记的宽度不等于其高度,您的 margin-top: -100%; 规则就会越过标记。另一方面,css规则top: -100%;基于身高的,并且会起作用。

我稍微修改了您的代码以显示 a working example of this

#num2 {
  width: 100%;
  height: 100%;
  position: absolute;
  top: -100%;
}