Bonjour,
Il y a un comportement css, que je rencontre de plus en plus régulièrement et dont je n'arrive ni à comprendre pourquoi, ni comment l'éviter : Il s'agit du chevauchement des marges entre un bloc enfant et son parent.
Prenons par exemple deux div :
Donc avec ce code, pourquoi diable ai-je les deux marges qui se superposent au lieu de décaler le div enfant de 20 pixels à l'intérieur de son parent ?
Les solutions que je connais pour régler ce problème :
- mettre un float sur le parent
- mettre un overflow hidden ou auto sur le parent
- mettre une bordure sur le parent
Mais aucune ne me convient vraiment...
J'ai remarqué aussi de cette superposition des marges n'apparait que pour les marges top et bottom mais pas left ou right.
De plus IE (6 & 7) ne fait pas cette superposition.
Bref pour résumer, je ne comprends pas pourquoi ça se comporte comme ça, et comment faire pour le corriger élégamment.
Merci.
Il y a un comportement css, que je rencontre de plus en plus régulièrement et dont je n'arrive ni à comprendre pourquoi, ni comment l'éviter : Il s'agit du chevauchement des marges entre un bloc enfant et son parent.
Prenons par exemple deux div :
<div id="parent">
<div id="enfant">
Test
</div>
</div>
#parent{
background-color:red;
height:100px;
margin-top:50px;
width:100px;
}
#enfant{
background-color:blue;
height:80px;
margin-top:20px;
width:100px;
}
Donc avec ce code, pourquoi diable ai-je les deux marges qui se superposent au lieu de décaler le div enfant de 20 pixels à l'intérieur de son parent ?
Les solutions que je connais pour régler ce problème :
- mettre un float sur le parent
- mettre un overflow hidden ou auto sur le parent
- mettre une bordure sur le parent
Mais aucune ne me convient vraiment...
J'ai remarqué aussi de cette superposition des marges n'apparait que pour les marges top et bottom mais pas left ou right.
De plus IE (6 & 7) ne fait pas cette superposition.
Bref pour résumer, je ne comprends pas pourquoi ça se comporte comme ça, et comment faire pour le corriger élégamment.
Merci.