Avancé15 min de lecture

Propriétés logiques

Apprends les propriétés logiques CSS qui s'adaptent aux différents modes d'écriture et directions de texte, en remplaçant les propriétés physiques comme margin-left par des alternatives relatives au flux comme margin-inline-start.

Propriétés physiques vs. logiques

Les propriétés CSS traditionnelles comme margin-left, padding-right, width et height sont physiques — elles font toujours référence à la même direction physique sur l'écran, quelle que soit la langue ou le mode d'écriture.

Les propriétés logiques remplacent les directions physiques par des directions relatives au flux :

PhysiqueLogique (écriture horizontale)Signification
margin-left / margin-rightmargin-inline-start / margin-inline-endLe long de l'axe en ligne (texte)
margin-top / margin-bottommargin-block-start / margin-block-endLe long de l'axe de bloc (empilement)
padding-left / padding-rightpadding-inline-start / padding-inline-endEspacement interne sur l'axe en ligne
widthinline-sizeTaille le long de l'axe en ligne
heightblock-sizeTaille le long de l'axe de bloc

Pourquoi utiliser les propriétés logiques ?

Dans une langue de gauche à droite (comme le français), margin-inline-start équivaut à margin-left. Mais dans une langue de droite à gauche (comme l'arabe), elle devient automatiquement margin-right. Cela rend ton CSS prêt pour l'internationalisation sans dupliquer les règles.

Propriétés logiques raccourcies

Les propriétés logiques ont des raccourcis pratiques :

  • margin-inline — Définit à la fois margin-inline-start et margin-inline-end. Avec deux valeurs, la première est le début et la seconde est la fin.

    css
    .box { margin-inline: 20px 10px; }
  • margin-block — Définit à la fois margin-block-start et margin-block-end.

    css
    .box { margin-block: 16px; } /* équivalent à haut et bas */
  • padding-inline et padding-block — Même principe pour l'espacement interne.

  • inset-inline et inset-block — Équivalents logiques de left/right et top/bottom pour les éléments positionnés.

  • border-inline et border-block — Définissent les bordures sur les axes logiques.

Modes d'écriture

La propriété writing-mode modifie l'orientation des axes de bloc et en ligne :

  • horizontal-tb — Par défaut. L'axe en ligne est horizontal (gauche à droite), l'axe de bloc est vertical (haut en bas).
  • vertical-rl — L'axe en ligne est vertical (haut en bas), l'axe de bloc est horizontal (droite à gauche).
  • vertical-lr — L'axe en ligne est vertical, l'axe de bloc est horizontal (gauche à droite).

Les propriétés logiques s'adaptent automatiquement à n'importe quel mode d'écriture.

Propriétés logiques en pratique

html
<style>
  .card {
    /* Dimensionnement logique */
    inline-size: 300px;
    block-size: auto;

    /* Espacement interne logique */
    padding-block: 16px;
    padding-inline: 24px;

    /* Marge logique — auto centre horizontalement */
    margin-inline: auto;
    margin-block: 20px;

    /* Bordure logique */
    border-inline-start: 4px solid blue;

    background-color: #f8f8f8;
  }

  .card p {
    /* Marge logique pour l'espacement des paragraphes */
    margin-block-end: 12px;
  }
</style>

<div class="card">
  <h3>Propriétés logiques</h3>
  <p>Cette carte utilise des propriétés logiques partout.</p>
  <p>Elle s'adaptera si la direction d'écriture change.</p>
</div>

Dans une langue de droite à gauche (RTL), à quelle direction physique correspond `margin-inline-start` ?

Prêt à pratiquer ?

Crée ton compte gratuit pour accéder à l'éditeur de code interactif, lancer les défis et suivre ta progression.