Единицы измерения CSS в 2026 году

Единицы измерения в CSS: от пикселей до vw
1. Единицы измерения в CSS?
CSS – это язык стилей, а его задача – описать как выглядит элемент. При этом важна позиция, цвет, размер. Единицы измерения позволяют определять размеры, расстояния и шрифты как в абсолютных величинах, так и в относительных. Именно благодаря этому можно создавать гибкие макеты, которые будут корректно отображаться на разных устройствах, разрешениях и браузерах.
2. Классификация единиц
2.1. Абсолютные единицы
| Единица | Описание | Пример |
|---|---|---|
px |
Пиксель – фиксированная точка, эквивалентна 1/96 дюйма (на большинстве экранов) | width: 200px; |
pt |
Точка – 1/72 дюйма, традиционно используется в печати | font-size: 12pt; |
pc |
"Пачка" – 12 пунктов | margin: 1pc; |
in |
Дюйм | margin: 1in; |
cm |
Сантиметр | margin: 2.54cm; |
mm |
Миллиметр | margin: 10mm; |
Важно: В веб‑дизайне абсолютные единицы редко применяются, так как они не учитывают плотность пикселей (DPI), масштаб браузера и пользовательские настройки. Поэтому чаще всего используют относительные и гибридные единицы.
2.2. Относительные единицы
| Единица | Описание | Пример |
|---|---|---|
% |
Процент от родительского элемента | width: 50%; |
em |
Относительно текущего размера шрифта (на родителе) | font-size: 1.5em; |
rem |
Относительно корневого элемента (html) |
font-size: 1rem; |
ch |
Ширина символа «0» в текущем шрифте | width: 20ch; |
ex |
Высота «x» в текущем шрифте | height: 2ex; |
vh |
Высота окна просмотра (viewport height) | height: 50vh; |
vw |
Ширина окна просмотра (viewport width) | width: 100vw; |
vmin |
Меньшая из vw и vh | font-size: 2vmin; |
vmax |
Большая из vw и vh | font-size: 3vmax; |
vwc |
1% ширины контентной области (не браузерного окна) | margin: 2vwc; |
vb |
1% высоты контентной области | height: 5vb; |
Ключевой момент: Относительные единицы делают стили более гибкими.
emиremособенно популярны для масштабируемых интерфейсов и доступности (accessibility).
2.3. Гибридные и специальные единицы
fr– фракция, используется в CSS‑Grid для распределения свободного пространства.calc()– функция, позволяющая комбинировать различные единицы (calc(100% - 80px)).min(),max()– функции, которые принимают набор выражений и возвращают минимум/максимум.clamp()– задаёт диапазон значений (clamp(1rem, 2vw, 3rem)).
3. Практические примеры использования
3.1. Адаптивные шрифты с rem и clamp()
html {
font-size: 16px; /* Базовый размер */
}
body {
font-size: clamp(0.9rem, 2.5vw, 1.1rem);
}
- Проблема: При маленьком экране
font-sizeстановится слишком мал. - Решение:
clamp()позволяет задать минимум и максимум, а внутри использоватьvw, чтобы шрифт масштабировался плавно.
3.2. Полноэкранный контейнер с vh и vw
.fullscreen {
width: 100vw;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
}
- Проблема: При скроллинге иногда возникает «черная полоса» из-за учёта прокрутки.
- Решение: Использовать
100dvhвместо100vhв новых браузерах.
3.3. Сетка с фракциями fr
.grid {
display: grid;
grid-template-columns: 1fr 2fr 1fr;
}
- Пояснение:
frраспределяет свободное пространство пропорционально. Здесь второй столбец будет в два раза шире первых.
3.4. Динамический отступ с calc()
.card {
width: calc(50% - 20px);
margin: 10px;
}
- Проблема: Хочется, чтобы карточка занимала половину ширины, но с учётом отступа.
- Решение:
calc()делает вычисление «половины минус 20px».
4. Советы по работе с единицами
| Совет | Описание |
|---|---|
| Выбирайте единицы исходя из контекста | px удобно для пиксельных точек, но rem + clamp() лучше для шрифтов. |
| Соблюдайте единый стиль | Если используете rem для шрифта, не переходите на px только для заголовков без причины. |
Масштабируйте элементы с помощью vh/vw |
Отлично подходят для hero‑секций и фоновых изображений. |
| Проверяйте на разных устройствах | Используйте инструменты DevTools для переключения размеров экрана. |
| Учтите пользовательские настройки | При использовании em/rem пользователь может изменить базовый размер в браузере. |
| Обращайте внимание на кросс‑браузерную поддержку | Некоторые старые браузеры не поддерживают vwc/vb. |
Сократите px на больших экранах |
Пиксели фиксируются, но на 4K‑мониторах могут выглядеть «нечётко» из‑за плотности пикселей. |
5. Как использовать гибридные единицы для улучшения доступности
5.1. em и rem vs pt
В доступном дизайне важно, чтобы пользователь мог увеличить размер шрифта без потери читаемости. При использовании pt (точек) такой гибкости нет, потому что это абсолютная величина. rem позволяет задавать размер относительно корневого элемента, а пользователь может изменить font-size на уровне html, и все дочерние элементы автоматически масштабируются.
5.2. Функция clamp() для контрастности
p {
font-size: clamp(0.875rem, 2vw, 1.125rem);
}
- Плюс: При сжатом экране шрифт уменьшится, но не станет меньше 0.875rem.
- Минус: На больших экранах не станет слишком большим.
6. Частые ошибки и как их избежать
| Ошибка | Причина | Как исправить |
|---|---|---|
Использовать только px |
Пиксели фиксируют размер, игнорируя масштаб браузера | Перейти на rem/em и clamp() |
Неправильное применение vh |
vh учитывает полную высоту окна, включая строку состояния браузера |
При мобильных устройствах лучше использовать 100dvh |
Смешивание px и rem без причин |
Затрудняет поддерживаемость кода | Выберите одну систему измерений и придерживайтесь её |
Не учитывать box-sizing |
При расчёте ширины/высоты элементы могут «выходить» за пределы контейнера | Установите box-sizing: border-box; по умолчанию |
Переоценка возможностей vw |
На мобильных vw иногда уменьшает размеры слишком сильно |
Использовать clamp() с vw для сбалансированного эффекта |
7. Заключение
Единицы измерения в CSS – это не просто «чеклы», а мощный инструмент для создания адаптивных и доступных веб‑страниц. Понимание разницы между абсолютными и относительными единицами, умение комбинировать их с помощью calc(), min(), max(), clamp() и fr позволяет создавать интерфейсы, которые выглядят одинаково хорошо на любом устройстве и в любых условиях.
Если вы хотите сделать ваш сайт гибким и дружелюбным к пользователям, начните с выбора подходящей системы измерений и придерживайтесь её. Не бойтесь экспериментировать с clamp() и calc() – они откроют для вас новые горизонты гибкого дизайна.
Подсказка: Если вы разрабатываете сайт с нуля, задайте базовый
font-size: 16pxвhtml, а дальше используйтеremиclamp()для всех размеров. Это упростит поддержку и улучшит доступность.