2008-09-19 7 views
24

Donc, est-ce que la réduction des marges se produit essentiellement lorsque vous ne définissez aucune marge ou marge ou marge à un élément div donné?CSS Margin Collapsing

Répondre

73

Non. Lorsque vous avez deux marges verticales adjacentes, plus des deux est utilisé et l'autre est ignorée. Par exemple, si vous avez deux éléments d'affichage de bloc, A, suivi de B en dessous, et A a une marge inférieure de 3em, tandis que B a une marge supérieure de 2em, alors la distance entre ils seront 3em.

Si vous définissez une bordure ou un remplissage, cela empêche l'effondrement. Dans l'exemple ci-dessus, la distance entre les deux éléments sera alors 5em.

Si vous ne définissez aucune marge, aucune marge ne sera réduite. Il n'a absolument rien à voir avec le type d'élément utilisé - il s'applique à tous les types d'éléments, et pas seulement aux éléments <div>. Pour plus de détails, lire the CSS 2.1 specification.

+6

Validera la réponse, moyennant quelques modifications: 1. Dans l'exemple '3em/2em', vous pouvez utiliser des unités absolues à la place; dans ce cas, le 2em/pourrait/être plus grand que le 3em 2. "Si vous définissez une bordure ou un remplissage ..." - ceci n'est vrai que dans certains cas, pas dans le cas standard 'A suivi de B' –

+0

3. "Si vous ne définissez aucun ..." conventionnellement vrai pour les DIV mais l'effondrement des marges affectera la plupart des éléments par défaut –

+7

+1 - bonne réponse. De plus, l'effondrement de la marge ne se produit pas lorsque les éléments sont flottants, positionnés de manière absolue ou en ligne. Plus d'infos: http://reference.sitepoint.com/css/collapsingmargins –

4

« l'expression des marges effondrement signifie que les marges adjacentes (pas de contenu non-vide, les zones de remplissage ou de la frontière ou la clairance les séparent) de deux ou plusieurs boîtes (qui peut être à côté de l'autre ou imbriqués) se combinent pour former une seule marge. "

Source: Box Model - 8.3.1 Collapsing margins