Warum funktioniert dieser CSS-Rand-Top-Stil nicht?
P粉512729862
2023-08-23 23:07:58
<p>Ich habe versucht, einen <code>margin</code>-Wert zu einem <code>div</code> hinzuzufügen. Bis auf den höchsten Wert, der scheinbar ignoriert wird, funktioniert alles einwandfrei. Aber warum? </p>
<p><strong>Meine Erwartungen:</strong></p><p><br /></p>
<p><strong>Was ich habe:</strong></p><p><br /></p>
<p><strong>Code: </strong></p>
<p><br /></p>
<pre class="brush:css;toolbar:false;">#outer {
Breite: 500px;
Höhe: 200px;
Hintergrund: #FFCCCC;
Rand: 50px auto 0 auto;
Bildschirmsperre;
}
#innere {
Hintergrund: #FFCC33;
Rand: 50px 50px 50px 50px;
Polsterung: 10px;
Bildschirmsperre;
}</pre>
<pre class="brush:html;toolbar:false;"><div id="outer">
<div id="inner">
Hallo Welt!
</div>
</div></pre>
<p><br /></p>
<p>W3Schools erklärt nicht, warum dies mit <code>margin</code> passiert. </p>
尝试在内部
div
上使用display: inline-block;
。就像这样:您实际上看到的是
#inner
元素的上边距 折叠到#outer
元素的上边缘,仅保留#outer
边距完好无损(尽管图像中未显示) 。两个盒子的顶部边缘彼此齐平,因为它们的边距相等。以下是 W3C 规范中的相关要点:
您可以执行以下任一操作来防止边距折叠:
上述选项防止边距折叠的原因是:
左右边距的表现符合您的预期,因为: