Логические свойства CSS и subgrid
Физические и логические оси
Классические свойства привязаны к экрану: left, width, margin-top. При смене языка (RTL), вертикальной вёрстке или печати «верх» и «лево» перестают совпадать с направлением чтения.
Логические свойства описывают отступы и размеры относительно потока текста:
| Физическое | Логическое (горизонтальный LTR) |
|---|---|
margin-left | margin-inline-start |
margin-right | margin-inline-end |
margin-top | margin-block-start |
margin-bottom | margin-block-end |
width | inline-size |
height | block-size |
left / right | inset-inline-start / inset-inline-end |
Сокращения:
.card {
margin-inline: 1rem; /* start + end по inline-оси */
padding-block: 0.5rem 1rem;
border-inline-start: 3px solid #2563eb;
}
При direction: rtl inline-start окажется справа — не нужно дублировать правила [dir="rtl"] .card { margin-right: … }.
writing-mode
Меняет, где «inline», а где «block»:
.vertical-label {
writing-mode: vertical-rl;
inline-size: 2rem;
}
Полезно для подписей осей, азиатской типографики, боковых вкладок. Flex и Grid учитывают writing-mode при align-* и justify-*.
Практика — форма и карточка
.form-row {
display: flex;
gap: 1rem;
align-items: center;
}
.form-row label {
inline-size: 8rem;
text-align: end;
margin-inline-end: 0.5rem;
}
[dir="rtl"] .form-row label {
text-align: start;
}
Один набор правил работает в LTR и RTL без зеркальных копий файла.
Subgrid в CSS Grid
В Flexbox и Grid дочерняя сетка по умолчанию не знает о линиях родителя: колонки карточек внутри ячейки могут не совпасть с колонками страницы.
subgrid передаёт треки родителя потомку:
.page {
display: grid;
grid-template-columns: repeat(12, 1fr);
gap: 1rem;
}
.card {
grid-column: span 4;
display: grid;
grid-template-columns: subgrid;
grid-column: span 4; /* занимает 4 колонки родителя */
}
.card__header,
.card__body,
.card__footer {
grid-column: 1 / -1; /* на всю ширину subgrid */
}
Для строк:
.layout {
display: grid;
grid-template-rows: auto 1fr auto;
}
.panel {
display: grid;
grid-template-rows: subgrid;
grid-row: 2;
}
Поддержка и fallback
Subgrid поддерживают современные Chrome, Firefox, Safari. Fallback: явные grid-template-columns в компоненте или Flex без совпадения линий.
Связь с container queries
Адаптивный дизайн и @container реагируют на ширину контейнера; логические свойства — на направление текста. В карточке внутри sidebar часто сочетают:
.card {
container-type: inline-size;
padding-inline: 1rem;
}
@container (min-width: 280px) {
.card__title {
font-size: 1.25rem;
}
}
Краткий итог
Логические свойства (margin-inline, block-size, …) делают вёрстку устойчивой к RTL и writing-mode. Subgrid выравнивает внутреннюю сетку компонента с сеткой страницы. Оба приёма дополняют Grid из главы Flex и Grid, а не заменяют его.
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). В CSS тег используется как селектор по типу, например p { color: black; }. Тег используется для подключения внешних ресурсов к HTML-документу. Наиболее распространённое применение — подключение CSS-файлов. CSS custom properties - именованные значения для повторного использования, темизации и централизованного управления стилями. Контентная боксовая модель в CSS - как width и height задают размер контентной области и взаимодействуют с отступами и границами. Мы разберём различные примеры типовых элементов интерфейса, в формате HTML и CSS. Можете добавлять и экспериментировать - для удобства, в HTML-части будет создаваться элемент, а в CSS - стиль. Группировка селекторов без дублирования, нулевая специфичность :where и условный родитель :has. Порядок применения стилей через @layer — сброс, база, компоненты, утилиты без гонки специфичности. prefers-reduced-motion, prefers-contrast, forced-colors и связка с семантикой HTML. Сводные таблицы — что использовать, чего избегать и на что смотреть осторожно в повседневной вёрстке, включая мобильные экраны. Flexbox - одноосевая раскладка с распределением пространства и выравниванием дочерних элементов в контейнере. Как работает CSS, как читать единицы измерения и планировать размещение. Апострофы — не являются частью синтаксиса CSS, но могут встречаться в строках (например, в content).CSS
Подключение и организация CSS-кода
Переменные в CSS
Блочная модель и механизм каскадирования
Типовые элементы интерфейса
Селекторы :is, :where и :has
Каскадные слои @layer
Доступность и пользовательские настройки в CSS
Практические рекомендации по CSS
Flexbox и CSS Grid
Основные стили в CSS
Синтаксис и пунктуация в CSS