Visualiseur du modèle de boîte CSS, gratuit

Ajustez marge, bordure, padding et dimensions du contenu et voyez le modèle de boîte CSS en direct.

Dimensions

Padding (px)

Bordure (px)

Marge (px)

marge
bordure
padding
200 × 120

  

Comment utiliser

  1. Saisissez les valeurs du modèle de boîte : définissez marge, bordure, padding et dimensions du contenu dans les champs ou les curseurs interactifs.
  2. Explorez la visualisation : le diagramme classique de boîtes imbriquées se met à jour en temps réel, marge (orange), bordure (jaune), padding (vert) et contenu (bleu), tous clairement étiquetés.
  3. Copiez le CSS : cliquez sur Copier le CSS pour obtenir les propriétés complètes du modèle de boîte de l'élément configuré.

Pourquoi utiliser le visualiseur du modèle de boîte CSS ?

Le modèle de boîte CSS est l'un des concepts les plus fondamentaux de la mise en page web, et l'une des sources de bugs les plus courantes, surtout en mélangeant les valeurs de box-sizing, la fusion de marges et le dimensionnement des bordures. Ce visualiseur interactif rend le modèle de boîte concret et tangible : vous ajustez les valeurs et voyez immédiatement comment marge, bordure et padding s'empilent autour du contenu. Essentiel pour apprendre, déboguer et enseigner le CSS.

Fonctionnalités

Questions fréquentes

Quelle est la différence entre content-box et border-box ?

Avec content-box (par défaut), width et height s'appliquent uniquement à la zone de contenu, padding et bordure s'ajoutent à la taille totale de l'élément. Avec border-box, width et height incluent padding et bordure, ce qui rend les tailles plus prévisibles. La plupart des CSS resets modernes appliquent box-sizing: border-box à tous les éléments.

Qu'est-ce que la fusion de marges ?

Quand deux marges verticales se touchent (entre éléments block adjacents ou entre parent et premier/dernier enfant), elles fusionnent en une seule marge égale à la plus grande des deux valeurs. Cela ne se produit pas avec les enfants flex ou grid, ni avec des éléments ayant du padding ou des bordures.

Comment retirer l'espace supplémentaire sous les éléments inline ?

Les éléments inline (comme <img>) ont un petit espace en dessous d'eux causé par l'alignement de la ligne de base du line-height. Corrigez-le en mettant display: block sur l'élément, ou vertical-align: bottom, ou font-size: 0 sur le parent.

Ce que le modèle de boîte CSS définit vraiment

Le modèle de boîte CSS est la représentation rectangulaire de chaque élément sur une page web. Chaque élément possède quatre boîtes concentriques : la boîte de contenu (où vivent le texte, les images, les éléments enfants), la boîte de padding (espace entre le contenu et la bordure, à l’intérieur de la limite visible), la boîte de bordure (le contour visible dessiné autour du padding) et la boîte de marge (espace transparent à l’extérieur de la bordure qui sépare cet élément de ses voisins). La taille visible totale d’un élément est contenu + padding + bordure ; la marge est invisible mais repousse les autres éléments.

Le concept critique est box-sizing. Par défaut (box-sizing: content-box, valeur de la spécification CSS 1), les propriétés width et height s’appliquent uniquement à la boîte de contenu. Si vous définissez width: 200px; padding: 20px; border: 2px solid, la largeur rendue totale est 200 + 40 + 4 = 244 pixels. C’est contre-intuitif : un élément « large de 200px » prend en réalité 244 pixels d’espace horizontal. L’alternative box-sizing: border-box (ajoutée dans CSS 3) inverse ceci : la propriété width est la taille visible totale incluant padding et bordure, donc la zone de contenu rétrécit pour s’adapter. border-box est ce à quoi la plupart des développeurs s’attendent ; c’est devenu le standard de facto via le reset CSS « * { box-sizing: border-box } » de Paul Irish en 2012.

Comprendre le modèle de boîte est important parce que les bogues de mise en page tracent presque toujours leur origine à une confusion sur quelle valeur s’applique à quelle boîte. « Pourquoi mon élément est-il plus large que ce que j’ai défini ? » est une surprise de content-box. « Pourquoi ma marge ne pousse-t-elle pas les frères vers le bas ? » est généralement un effondrement de marges. « Pourquoi padding-top: 50% se comporte-t-il bizarrement ? » parce que le padding en pourcentage est calculé par rapport à la largeur du parent, pas la hauteur. Chaque développeur CSS rencontre ces confusions ; ce visualiseur les rend concrètes en vous laissant ajuster les valeurs et voir la géométrie de boîte résultante en temps réel.

Comment cet outil fonctionne en coulisses

Le diagramme interactif est une série de divs colorés imbriqués correspondant à chaque boîte (marge en orange, bordure en jaune, padding en vert, contenu en bleu). Lorsque vous modifiez les valeurs d’entrée, JavaScript met à jour les attributs style inline des divs du diagramme afin qu’ils reflètent les valeurs numériquement et visuellement. Les proportions sont mises à l’échelle pour s’adapter à la zone de prévisualisation ; des valeurs en pixels absolus pousseraient le diagramme hors écran pour les entrées typiques.

Le calcul de la taille totale dépend du mode box-sizing. Pour content-box : largeur totale = largeur du contenu + padding-left + padding-right + border-left + border-right. Pour border-box : largeur totale = la valeur de width (padding et bordure sont soustraits de la zone de contenu). L’outil calcule les deux modes simultanément lorsque vous basculez box-sizing, ainsi vous pouvez comparer directement.

La sortie CSS générée utilise vos entrées comme valeurs de propriété : box-sizing: border-box; width: 200px; padding: 10px 20px; border: 2px solid; margin: 1rem auto;. Copiez ceci directement dans votre feuille de style et appliquez la classe correspondante. Rien ne quitte votre navigateur ; tout s’exécute localement en JavaScript. Pas d’analytique, pas de backend, pas de compte. Rafraîchissez et l’état est parti.

Brève histoire du modèle de boîte CSS

Flux du monde réel

Pièges courants et ce qu’ils signifient

Confidentialité : tout s’exécute dans votre navigateur

Les outils d’apprentissage et de visualisation CSS viennent en deux saveurs : pages HTML simples exécutant du JavaScript côté client (privées, rapides, pas de setup) et éditeurs cloud avec projets sauvegardés (collaboratifs mais avec compromis de confidentialité). Cet outil est du premier type. Vos valeurs entrées, votre état de bascule box-sizing, votre CSS généré : tout reste dans votre session navigateur. Rafraîchissez la page et l’état est parti sauf si vous avez copié le CSS d’abord.

Les enjeux de confidentialité sont faibles ici parce que les valeurs du modèle de boîte contiennent rarement des informations sensibles. Néanmoins, l’absence d’analytique compte : vous pouvez expérimenter librement sans que votre processus d’essai-erreur soit enregistré. Particulièrement utile dans des contextes de classe ou de formation d’entreprise où faire enregistrer les étudiants ou stagiaires sur des plateformes tierces est un point de friction. C’est une page statique unique sans backend, utilisable dans n’importe quel navigateur, y compris les machines d’entreprise verrouillées.

Quand un autre outil est le bon choix

Autres questions fréquentes

Devrais-je utiliser universel * { box-sizing: border-box } ?

Pour la plupart des projets, oui. La proposition de Paul Irish de 2012 est maintenant le défaut de l’industrie et s’aligne avec la façon dont la plupart des développeurs s’attendent à ce que width et height fonctionnent. Les frameworks comme Bootstrap, Tailwind, Bulma et Material UI sont livrés avec border-box comme défaut. Les projets modernes commençant en 2026 devraient définir *, *::before, *::after { box-sizing: border-box; } en haut de leur reset, et rarement avoir besoin de penser au box-sizing à nouveau. Des surcharges spécifiques vers content-box sont possibles pour des éléments individuels où border-box ferait foirer les choses.

Pourquoi ma marge pousse-t-elle le parent vers le bas au lieu de pousser les frères ?

C’est l’effondrement de marges. Quand la marge supérieure d’un enfant rencontre le bord supérieur du parent sans padding/bordure entre eux, la marge de l’enfant « s’échappe » et s’applique au parent à la place. Corrections : ajouter padding-top: 1px au parent (n’importe quelle valeur fonctionne), ajouter border: 1px solid transparent, définir le parent comme conteneur flex ou grid (l’effondrement est supprimé dans ces modes), ou utiliser display: flow-root sur le parent (une règle moderne explicite « établir un nouveau contexte de formatage de bloc »). Tous ces moyens empêchent la marge de s’effondrer à travers.

Quelle est la différence entre margin: auto et margin: 0 ?

margin: 0 signifie aucune marge ; l’élément se trouve contre ses voisins. margin: auto signifie que le navigateur calcule la marge pour distribuer l’espace horizontal restant, typiquement utilisé pour centrer un élément de bloc : margin-left: auto; margin-right: auto; divise également l’espace restant. margin: auto auto auto auto (ou raccourci margin: auto) centre à la fois horizontalement et verticalement à l’intérieur d’un conteneur flex. En dehors de flex/grid, seules les marges auto horizontales fonctionnent.

En quoi outline diffère-t-il de border ?

Outline dessine autour d’un élément mais est en dehors du modèle de boîte : il n’ajoute pas à la taille de l’élément et ne repousse pas les voisins. Border fait partie du modèle de boîte et ajoute à la taille rendue. Outline est typiquement utilisé pour les anneaux de focus (contours :focus-visible) où vous voulez un indicateur visible sans décaler la mise en page. Border est utilisé quand la ligne devrait faire partie de la structure de l’élément. Ne supprimez pas outline: none sans fournir un indicateur de focus alternatif ; faire cela casse l’accessibilité clavier.

Pourquoi utiliser des propriétés logiques comme margin-inline-start ?

Les propriétés logiques (margin-block-start, padding-inline, etc.) s’adaptent à la direction d’écriture du document. En anglais (de gauche à droite), margin-inline-start est la même chose que margin-left. En arabe ou en hébreu (de droite à gauche), elle devient margin-right automatiquement. Pour les sites qui supportent plusieurs langues, les propriétés logiques rendent l’internationalisation CSS automatique. Pour les sites uniquement en anglais, elles sont équivalentes en effet mais signalent l’intention plus clairement : « cette marge est au début du flux de texte » plutôt que « cette marge est du côté gauche ».

Comment créer une boîte à ratio d’aspect fixe ?

La manière moderne est la propriété CSS aspect-ratio : aspect-ratio: 16/9 sur un div rend sa hauteur automatiquement 9/16 de sa largeur. Supporté dans tous les navigateurs modernes (2021+). La technique héritée utilise padding-top en pourcentage : un div avec padding-top: 56.25% crée un ratio 16:9 (9/16 = 56,25%). L’astuce padding-top fonctionne toujours mais la syntaxe de propriété est plus propre. Utilisez aspect-ratio pour le nouveau code ; le hack hérité reste dans Tailwind et autres outils qui ont besoin d’un large support de navigateur.

Outils associés

Générateur CSS multi-colonnes, gratuit Générateur CSS Grid, gratuit Générateur CSS Flexbox, gratuit Générateur CSS de border-radius, gratuit