Pourquoi ce style CSS de marge supérieure ne fonctionne-t-il pas ?
P粉512729862
P粉512729862 2023-08-23 23:07:58
0
2
470
<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>
P粉512729862
P粉512729862

répondre à tous(2)
P粉141035089

Essayez-le à l'intérieurdiv上使用display: inline-block;. Comme ça :

#outer {
    width:500px; 
    height:200px; 
    background:#FFCCCC;
    margin:50px auto 0 auto;
    display:block;
}
#inner {
    background:#FFCC33;
    margin:50px 50px 50px 50px;
    padding:10px;
    display:inline-block;
}
P粉170438285

Ce que vous voyez réellement, c'est que les #inner 元素的上边距 折叠#outer元素的上边缘,仅保留#outermarges 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 :

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal