Comment désactiver le pliage des marges
P粉530519234
2023-08-21 23:21:12
<p>Existe-t-il un moyen de désactiver complètement le repli des marges ? La seule solution que j'ai trouvée (nommée "décollage") consiste à utiliser une bordure de 1 pixel ou un remplissage de 1 pixel. Je trouve cela inacceptable : des pixels supplémentaires compliquent inutilement les calculs. Existe-t-il un moyen plus raisonnable de désactiver cet effondrement de marge ? </p>
Une astuce intéressante pour désactiver la réduction des marges qui n'a aucun impact visuel, à ma connaissance, consiste à définir le remplissage de l'élément parent sur
0.05px
:Le rembourrage n'est plus 0, donc aucun effondrement ne se produit, mais en même temps le rembourrage est suffisamment petit pour qu'il soit visuellement arrondi à 0.
Si un remplissage supplémentaire est requis, appliquez uniquement un remplissage dans la "direction" où vous ne souhaitez pas que l'effondrement de la marge se produise, comme
padding-top: 0.05px;
.Exemple de travail :
EDIT : Valeur modifiée de
0,1
à0,05
. Comme Chris Morgan l'a mentionné dans les commentaires ci-dessous, et à partir de ce petit test vous pouvez voir que Firefox prend en compte le remplissage de0,1px
. Cependant,0.1
更改为0.05
。正如克里斯·摩根在下面的评论中提到的,并且从这个小测试中可以看出,似乎Firefox确实考虑了0.1px
的内边距。不过,0.05px
semble fonctionner.Il existe deux principaux types d'effondrement de marge :
Seulement dans ce dernier cas, l'utilisation d'un rembourrage ou de bordures empêchera le pliage. De plus, la seule différence lorsque vous utilisez quelque chose de différent de sa valeur par défaut (
.visible
)的overflow
属性应用于父元素都会防止折叠。因此,overflow: auto
和overflow: hidden
将产生相同的效果。也许使用hidden
) est que le contenu sera masqué de manière inattendue si l'élément parent a une hauteur fixeCertains autres attributs qui peuvent aider à corriger ce comportement lorsqu'ils sont appliqués à l'élément parent sont :
float: left / right
position: absolute
display: flex / grid
Vous pouvez les tester ici : http://jsfiddle.net/XB9wX/1/.
Je dois ajouter que, comme d'habitude, Internet Explorer est une exception. Plus précisément, dans IE 7, lorsqu'une certaine disposition (telle que
width
) est spécifiée pour l'élément parent, les marges ne s'effondrent pas.Source : article Sitepoint Réduire les marges