Отступы — самая частая зона, где логические свойства реально окупаются. У них появляются удобные шорткаты, которых в физическом мире просто нет. Самый известный из них — margin-inline: auto.
margin
У margin восемь логических свойств плюс две удобные парные формы:
- margin-inline-start / margin-inline-end — левый/правый отступ для LTR-текста, обратные стороны для RTL.
- margin-block-start / margin-block-end — верхний/нижний отступ для горизонтального текста.
- margin-inline — шорткат для обоих inline-отступов сразу.
- margin-block — шорткат для обоих block-отступов.
Самый ценный из них — margin-inline: auto для горизонтального центрирования блока:
.modal {
inline-size: 480px;
margin-inline: auto;
}
Раньше для того же эффекта писали margin-left: auto; margin-right: auto или короткое margin: 0 auto — но второе обнуляет ещё и вертикальные отступы, что не всегда хочется. margin-inline: auto — точно одно действие: центрирование, ничего лишнего.
Запись с двумя значениями
Шорткаты margin-inline и margin-block принимают одно или два значения. Два — это start и end по соответствующей оси:
.notice {
margin-inline: 16px 24px; /* start: 16px, end: 24px */
margin-block: 0 12px; /* start: 0, end: 12px */
}
padding
У padding зеркальный набор: padding-inline-start / -end, padding-block-start / -end и шорткаты padding-inline / padding-block. Поведение и синтаксис — точно такие же.
.button {
padding-inline: 16px;
padding-block: 8px;
}
Это эквивалент padding: 8px 16px в горизонтальной LTR-вёрстке. Разница — в читаемости: padding требует помнить порядок «вертикаль/горизонталь», а padding-inline/padding-block читаются как описание, без необходимости вспоминать соглашение.
Сводная таблица логических отступов
| Физическое | Логическое |
|---|---|
| margin-left / margin-right (для LTR) | margin-inline-start / margin-inline-end |
| margin-top / margin-bottom | margin-block-start / margin-block-end |
| margin: 0 auto | margin-inline: auto |
| padding: 8px 16px | padding-block: 8px; padding-inline: 16px; |