CSS единицы измерения lh и rlh

Источник: «LH and RLH: The CSS Units That Make Vertical Spacing Easy»
Изучение новых относительных единиц измерения CSS основанных на высоте строки и позволяющих отказаться от угадывания вертикального ритма.

Единица измерения lh

CSS единица измерения lh представляет вычисленный line-height элемента. Если у элемента line-height: 1.5, то 1lh равно этому вычисленному значению. Это создаёт прямую связь между текстом и измерениями расстояния между строками.

/* Традиционный подход с магическими числами */
.spacing-old {
margin-top: 24px;
padding-bottom: 48px;
}

/* Использование lh для создания точных интервалов в тексте */
.spacing-new {
margin-top: 1lh;
padding-bottom: 2lh;
}

Поля формы часто содержат текст разного размера (метки, поля ввода, сообщения об ошибках). Единицы измерения lh автоматически регулируют интервалы в зависимости от размера текста, сохраняя визуальную гармонию даже при увеличении/уменьшении масштаба текста. Если поле формы содержит текст большего размера, расстояние между ними пропорционально увеличивается.

/* Разметка формы - соблюдение единого расстояния между полями */
.form-field {
margin-bottom: 1lh;
}

Карточки могут содержать большое количество текста разного размера (заголовки, описания, метаданные). CSS единицы измерения lh обеспечивают поля и отступы между элементами пропорционально размеру текста. Это позволяет избежать появления ненужных отступов при переносе текста или динамическом изменении содержимого карточки.

/* Компоненты карточки - соблюдение пропорционального расстояния между текстовыми блоками */
.card-content {
padding: 1lh;
gap: 0.5lh;
}

Текст статьи часто изменяет размер при разных размерах экрана. Единица измерения lh сохраняет правильное соотношение интервалов между заголовками и абзацами при изменении размера текста. Это очень важно для удобства чтения — при увеличении или уменьшении размера текста пробелы изменяются пропорционально.

/* Разметка статей - создание ритма между абзацами и заголовками */
.article h2 {
margin-top: 2lh;
}

.article p {
margin-bottom: 1lh;
}

Единица измерения rlh

CSS единица измерения rlh отличается тем, что всегда ссылается на line-height корневого элемента (:root). Это обеспечивает согласованность во всём документе, независимо от того, где применяется. Это делает её ценной для глобальных шаблонов интервалов.

:root {
line-height: 1.5;
}

.global-spacing {
--space-unit: 1rlh;
margin-block: var(--space-unit);
gap: var(--space-unit);
}

Макеты должны содержать согласованные интервалы по всему сайту. Единицы измерения rlh обеспечивают равномерность интервалов между компонентами, поскольку ссылаются на высоту строки корневого элемента, а не на локальные размеры текста.

Это предотвращает распространённую проблему, когда разные размеры текста в компонентах создают несогласованные отступы и поля.

При изменении высоты строки корневого элемента все интервалы пропорционально изменяются, сохраняя визуальную согласованность.

:root {
line-height: 1.5;
}

/* Согласованные отступы между компонентами */
.layout-grid {
gap: 1rlh;
padding: 2rlh;
}

/* Отступы между секциями */
.section {
margin-block: 3rlh;
}

В навигационных элементах часто сочетаются разные размеры текста — например, логотип рядом с элементами навигации. Использование rlh позволяет сохранить расстояние между элементами независимо от стиля текста.

Единицы измерения rlh предотвращает неравномерное расположение элементов навигации при изменении размера текста. Интервалы остаются привязанными к высоте строки корневого элемента, создавая стабильную визуальную структуру.

.nav {
/* Согласованные отступы заголовка */
height: 4rlh;
padding-block: 1rlh;
}

.nav-items {
gap: 1rlh;
}

Вертикальный ритм — создание последовательного интервала, направляющего взгляд вниз по странице. Единица измерения rlh отлично справляется с этой задачей, поскольку сохраняет выравнивание по высоте строки корневого элемента.

:root {
line-height: 1.5;
}

.global-spacing {
--space-unit: 1rlh;
margin-block: var(--space-unit);
gap: var(--space-unit);
}

Это означает, что все элементы могут быть привязаны к единой базовой сетке, создавая гармоничный поток. При изменении размеров текста сетка остаётся стабильной, потому что она привязана к корневому элементу, а не к отдельным элементам.

Выбор между lh и rlh

Единицы измерения lh лучше подходят для интервалов на уровне компонентов, когда необходимо, чтобы элементы масштабировались в зависимости от размера текста — например, поля форм, карточки и контент статей.

Единицы измерения rlh лучше подходят для интервалов на уровне всего сайта, где важна последовательность — макеты, навигация и вертикальный ритм.

Продуманное сочетание обоих блоков позволит создавать гибкие, удобные в сопровождении макеты, визуально гармоничные при разных размерах экрана и масштабах текста.

Комментарии


Дополнительные материалы

Предыдущая Статья

HTML элемент search

Следующая Статья

CSS @supports