Pourquoi ce style CSS de marge supérieure ne fonctionne-t-il pas ?
P粉512729862
2023-08-23 23:07:58
<p>J'ai essayé d'ajouter une valeur <code>margin</code> sur un <code>div</code> Tout fonctionne bien sauf la valeur la plus élevée, qui semble ignorée. Mais pourquoi? </p>
<p><strong>Mes attentes :</strong></p><p><br /></p>
<p><strong>Ce que j'ai obtenu :</strong></p><p><br /></p>
<p><strong>Code : </strong></p>
<p><br /></p>
<pre class="brush:css;toolbar:false;">#outer {
largeur : 500 px ;
hauteur : 200px ;
contexte : #FFCCCC ;
marge : 50px auto 0 auto ;
bloc de visualisation;
}
#intérieur {
arrière-plan : #FFCC33 ;
marge : 50px 50px 50px 50px ;
remplissage : 10 px ;
bloc de visualisation;
}</pré>
<pre class="brush:html;toolbar:false;"><div id="outer">
<div id="intérieur">
Bonjour le monde!
</div>
</div></pre>
<p><br /></p>
<p>W3Schools n'explique pas pourquoi cela se produit avec <code>margin</code>. </p>
Essayez-le à l'intérieur
div
上使用display: inline-block;
. Comme ça :Ce que vous voyez réellement, c'est que les
#inner
元素的上边距 折叠到#outer
元素的上边缘,仅保留#outer
marges sont intactes (bien qu'elles ne soient pas montrées dans l'image). Les bords supérieurs des deux cases sont alignés car leurs marges sont égales.Voici les points pertinents de la spécification W3C :
Vous pouvez effectuer l'une des opérations suivantes pour éviter que les marges ne s'effondrent :
Les options ci-dessus empêchent les marges de s'effondrer car :
Les marges gauche et droite se comportent comme prévu car :