CSS逻辑属性

逻辑属性根据书写模式和方向(LTR/RTL)自动适配,使CSS真正国际化。

物理属性 → 逻辑属性对照

物理属性(旧)逻辑属性(新)说明
widthinline-sizeLTR中为水平
heightblock-sizeLTR中为垂直
min-width / max-widthmin-inline-size / max-inline-size
margin-leftmargin-inline-startRTL中翻转
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

逻辑属性简写

/* 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布局示例

/* 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; }