margin-inline
Définit les marges au début et à la fin d’une ligne. La version logique de margin-left et margin-right, qui comprend le sens d’écriture.
- Valeur initiale
0- Héritée
- Non
- Animable
- oui, en tant que longueur ou pourcentage
- S’applique à
- tous les éléments sauf les éléments internes des tableaux
- JavaScript
element.style.marginInline = "auto"
Exemple
#.toolbar {
display: flex;
align-items: center;
gap: 16px;
}
.toolbar .logout {
margin-inline-start: auto;
}<style>
.toolbar { padding: 8px 12px; border-radius: 12px; background: #18181b; }
.toolbar + .toolbar { margin-top: 10px; }
.toolbar a { color: inherit; text-decoration: none; }
.toolbar .logout { padding: 4px 12px; border-radius: 8px; background: #3f3f46; }
</style>
<nav class="toolbar">
<strong>CodeWorlds</strong>
<a href="#">Cours</a>
<a href="#" class="logout">Déconnexion</a>
</nav>
<nav class="toolbar" dir="rtl">
<strong>CodeWorlds</strong>
<a href="#">Cours</a>
<a href="#" class="logout">Déconnexion</a>
</nav>Une seule règle gère les deux sens. Dans la barre du haut, le lien de déconnexion se place à droite, et dans celle du bas, avec dir="rtl", à gauche, sans aucun style supplémentaire.
Définition et utilisation
#La propriété margin-inline est un raccourci pour margin-inline-start et margin-inline-end, les marges extérieures au début et à la fin de l’axe en ligne. L’axe en ligne suit le sens dans lequel le texte s’écoule sur une ligne. En français, cela correspond à la gauche et à la droite, donc margin-inline: 16px fonctionne comme margin-left: 16px; margin-right: 16px.
La différence apparaît avec un autre sens d’écriture. En arabe ou en hébreu (dir="rtl"), une ligne commence à droite, donc la marge de début se déplace elle aussi à droite. En écriture verticale (writing-mode: vertical-rl), les lignes vont de haut en bas, et les marges logiques se retrouvent en haut et en bas. La propriété physique margin-left reste à gauche quelle que soit la langue.
Le raccourci jumeau margin-block définit les marges sur l’axe de bloc, le long duquel s’empilent les paragraphes successifs. Dans un texte horizontal classique, ce sont le haut et le bas, avec pour composantes margin-block-start et margin-block-end. Dans les deux raccourcis, une valeur s’applique aux deux extrémités, et deux valeurs désignent dans l’ordre le début et la fin. Chacune peut être une longueur, un pourcentage ou auto.
Un détail utile : margin-inline: auto centre un bloc de largeur fixe et ne touche ni à la marge du haut ni à celle du bas, contrairement à margin: 0 auto. Les marges sur l’axe de bloc fusionnent entre voisins exactement comme les marges du haut et du bas.
Syntaxe
#margin-inline: <début> <fin>?;
margin-block: <début> <fin>?;Valeurs
#<longueur>
Une seule valeur : 40px au début et à la fin de la ligne, donc à gauche et à droite. Les rayures de fond montrent les marges.début fin
La première valeur est le début, la seconde la fin. Dans un texte écrit de gauche à droite, la marge n’apparaît qu’à gauche.- Avec une largeur fixe (ici
inline-size: 140px),autodes deux côtés centre le bloc, et les marges du haut et du bas restent inchangées. texte de droite à gauche
La même déclaration80px 0, mais dans un conteneur avecdir="rtl". La ligne commence à droite, donc la marge s’y déplace aussi.écriture verticale
En écriture verticale, la ligne va de haut en bas, donc la marge de début se retrouve en haut. L’élément se place contre le bord droit, car envertical-rlles blocs successifs s’empilent de droite à gauche.axe de bloc
Le raccourci pour l’axe de bloc. Dans un texte horizontal, il ajoute 24px au-dessus et au-dessous de l’élément.
Valeurs en pratique
#40px
.demo { margin-inline: 40px; }80px 0
.demo { margin-inline: 80px 0; }auto
inline-size: 140px), auto des deux côtés centre le bloc, et les marges du haut et du bas restent inchangées..demo { inline-size: 140px; margin-inline: auto; }dir="rtl"
80px 0, mais dans un conteneur avec dir="rtl". La ligne commence à droite, donc la marge s’y déplace aussi..demo { margin-inline: 80px 0; }vertical-rl
vertical-rl les blocs successifs s’empilent de droite à gauche..lane { writing-mode: vertical-rl; width: 100%; height: 150px; }
.demo { margin-inline: 40px 0; }margin-block: 24px
.demo { margin-block: 24px; }Compatibilité des navigateurs
#Largement disponible · depuis 2021
Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.
- Chrome
- Edge
- Firefox
- Safari
Bonnes pratiques
#- Pour centrer un conteneur de page,
margin-inline: autosuffit. À la différence demargin: 0 auto, il n’efface pas les marges du haut et du bas définies dans une autre règle. - Dans une rangée flex,
margin-inline-start: autorepousse l’élément à la fin de la ligne, et automatiquement de l’autre côté dans une mise en page de droite à gauche. - Si le site pourrait un jour avoir une version arabe ou hébraïque, écrivez vos composants directement avec les propriétés logiques. Il suffira ensuite de définir
dir="rtl"sur l’élément<html>.
Entrées associées
#- marginDéfinit l’espace extérieur d’un élément par rapport à ses voisins.
- padding-inlineDéfinit l’espace intérieur au début et à la fin d’une ligne. La version logique de padding-left et padding-right, qui comprend le sens d’écriture.
- inline-sizeDéfinit la taille d’un élément le long de la ligne de texte. En écriture horizontale, c’est la largeur, et sa paire block-size définit la hauteur.
- text-alignAligne le texte horizontalement : à gauche, à droite, au centre ou sur les deux bords.
- floatDéplace un élément vers le bord gauche ou droit, et le texte le contourne de l’autre côté.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.