CSS Logical Properties

Logical properties adapt to writing-mode and direction (LTR/RTL), making CSS truly internationalized.

Physical โ†’ Logical Property Mapping

Physical (old)Logical (new)Notes
widthinline-sizeHorizontal in LTR
heightblock-sizeVertical in LTR
min-width / max-widthmin-inline-size / max-inline-size
margin-leftmargin-inline-startFlips in RTL
margin-rightmargin-inline-end
margin-topmargin-block-start
margin-bottommargin-block-end
padding-leftpadding-inline-start
padding-rightpadding-inline-end
border-leftborder-inline-start
topinset-block-start
leftinset-inline-start
text-align: lefttext-align: start
float: leftfloat: inline-start

Shorthand Logical Properties

/* inline = horizontal (left/right in LTR) */
margin-inline: 16px;         /* = margin-left + margin-right */
padding-inline: 24px 16px;   /* start end */

/* block = vertical (top/bottom) */
margin-block: 8px 16px;      /* = margin-top + margin-bottom */
padding-block: 12px;

/* inset = all sides */
inset: 0;                    /* = top/right/bottom/left */
inset-inline: 0 auto;        /* left=0, right=auto */

RTL Layout Example

/* Works for BOTH Arabic (RTL) and English (LTR) */
.nav-item {
  padding-inline-start: 16px;   /* left in LTR, right in RTL */
  border-inline-start: 3px solid var(--primary);
  margin-inline-end: 8px;
}

/* Activate RTL */
html[dir="rtl"] { direction: rtl; }