Modèle de boîte CSS : margin, padding, border et display

Visualiseur du modèle de boîte CSS

Modèle de boîte CSS : margin vs padding, border, display | We.Inc

Faites glisser les curseurs du contenu, du padding, de la bordure et de la marge et regardez le modèle de boîte se redessiner, avec box-sizing, la fusion des marges, les styles de bordure et toutes les valeurs de display comparées en direct.

Chaque élément est dessiné sous forme de rectangles imbriqués : le contenu, puis le padding (l'espace à l'intérieur de la bordure, peint avec le fond), puis la bordure, puis la marge (un espace transparent à l'extérieur qui repousse les voisins). Avec box-sizing: border-box, la largeur que vous définissez inclut le padding et la bordure, ce qui rend les mises en page bien plus prévisibles. La propriété display décide de la façon dont les boîtes s'enchaînent.

Les quatre couches, de l'intérieur vers l'extérieur

Déplacez les quatre curseurs : le schéma, la taille totale mesurée et le CSS changent ensemble. Sous le visualiseur, vous pouvez basculer box-sizing, voir deux marges fusionner en une seule, et comparer block, inline, inline-block, flex, grid et none côte à côte sur les trois mêmes éléments.

Questions fréquentes

Quelle différence entre margin et padding ?

Le padding se trouve à l'intérieur de la bordure : il est rempli par le fond de l'élément et fait partie de sa zone cliquable. La marge se trouve à l'extérieur de la bordure, est toujours transparente et ne sert qu'à séparer l'élément des autres. Les marges verticales entre blocs peuvent aussi fusionner, alors que le padding ne fusionne jamais.

Pourquoi mon élément est-il plus large que la largeur définie ?

Avec la valeur par défaut box-sizing: content-box, width ne s'applique qu'au contenu, et le padding et la bordure s'y ajoutent. Une boîte de 300px avec 20px de padding et une bordure de 2px s'affiche sur 344px de large. Passez à box-sizing: border-box et elle reste à 300px, le contenu se réduisant pour tenir.

Quand les marges fusionnent-elles ?

Les marges haute et basse des boîtes de type block dans le flux normal fusionnent quand elles se touchent : entre éléments frères, et entre un parent et son premier ou dernier enfant quand aucune bordure, aucun padding ni contenu inline ne les sépare. La plus grande marge l'emporte. Les marges ne fusionnent jamais dans les conteneurs flex ou grid, ni horizontalement.

Quelle différence entre display: none et visibility: hidden ?

display: none retire complètement l'élément de la mise en page : l'espace se referme et les lecteurs d'écran l'ignorent. visibility: hidden garde l'espace réservé mais ne peint rien, et le contenu est aussi masqué pour les technologies d'assistance. opacity: 0 conserve à la fois l'espace et la possibilité de cliquer ou de donner le focus.

Puis-je définir une largeur sur un élément inline ?

Non. La largeur, la hauteur et les marges verticales sont ignorées sur une simple boîte inline comme un span. Le padding vertical est peint mais n'écarte pas les lignes. Passez-le en inline-block, ou faites du parent un conteneur flex, et ces dimensions commencent à s'appliquer.

content-box et border-box en chiffres

Des bordures au-delà de la simple ligne

Comment display change la boîte

Margin ou padding ? Choisissez selon le besoin

Lequel utiliser

La fusion des marges, en direct

La première paire montre deux éléments frères dont les marges de 24px et 40px se rencontrent : l'écart est de 40px, pas de 64px. La deuxième paire se trouve dans un conteneur flow-root, qui empêche la fusion des marges du parent et de l'enfant, et la troisième utilise flex, où rien ne fusionne.

Fusion entre frères et entre parent et enfant

Modifiez les marges et observez les écarts. Ajouter padding-top: 1px à la boîte extérieure empêche aussi la fusion du parent et de l'enfant.

Styles de bordure et rayons

Les huit styles de bordure visibles

groove, ridge, inset et outset ombrent la bordure pour simuler du relief. Ils rendent mieux à partir de 4px.

Formes de rayon : arrondi, pilule, cercle, ellipse

Un très grand rayon comme 999px crée une pilule de n'importe quelle longueur. 50% sur un carré donne un cercle.

Chaque valeur de display sur les trois mêmes éléments

Valeurs de display comparées

block, inline, inline-block, flex et grid côte à côte

Chaque ligne contient les trois mêmes spans avec width: 80px et du padding. Seul inline ignore la largeur.

display: none vs visibility: hidden vs opacity: 0

Trois façons de masquer, comparées

L'élément du milieu masqué de trois façons

Remarquez l'espace laissé par visibility et opacity, et l'espace refermé avec display: none.

Le reset border-box

Appliquer border-box partout

Les pseudo-éléments sont inclus car ce sont aussi des boîtes. Le Preflight de Tailwind inclut déjà cette règle.

Équivalents Tailwind

Utilitaires du modèle de boîte dans Tailwind (échelle d'espacement par défaut, 1 unité = 0.25rem)

Visualiseur du modèle de boîte

Couche de marge

Boîte affichée (bord de la bordure)

Espace occupé, marges comprises

Le jaune est la marge, la ligne bleue la bordure, le vert le padding, le bleu clair le contenu.

largeur de bordure

Copier le CSS

Commencer gratuitement · Sans carte bancaire

Voir aussi: Guides

Produit

Pour qui

Fonctionnalités

Ressources

Entreprise

Plan du site