Единицы в CSS
Вы уже умеете писать объявление вроде color: teal. Свойствам размера нужна вторая идея: насколько большой. Одно font-size: 16 недопустимо для большинства длин — браузеру нужна единица, чтобы понять, что значит «16».
Что такое единицы CSS?
Единицы CSS — это окончания измерения у значений длины — например px, rem, %, vw и vh. Абсолютные единицы сохраняют один размер независимо от родителя. Относительные масштабируются от чего-то ещё: шрифта элемента, корневого шрифта, размера родителя или viewport.
Абсолютные и относительные одним взглядом
Используйте эту таблицу как карту. Не нужна каждая единица в первый день — изучите семейства, затем практикуйте повседневные.
📊 Частые единицы длины CSS
| Единица | Семейство | Типичное применение |
|---|---|---|
| px | Абсолютная (пиксели экрана) | Рамки, тонкая подстройка иконок, линии 1px |
| rem | Относительно корневого размера шрифта | Текст страницы и согласованные отступы |
| em | Относительно собственного шрифта элемента | Padding, растущий с локальным текстом |
| % | Относительно размера родителя | Гибкая ширина внутри контейнера |
| vw | Относительно ширины viewport | Секции на всю ширину (осторожно) |
| vh | Относительно высоты viewport | Высота hero, полноэкранные панели |
Пиксели (px)
px — абсолютная единица на экране. Предсказуема для тонких рамок и мелких фиксированных деталей. Менее идеальна как единственная единица для всей типографики на адаптивном сайте, потому что не масштабируется автоматически с предпочтением корневого шрифта пользователя так, как может rem.
Пиксельные размеры для рамки карточки
css.card {
border: 1px solid #cbd5e1;
border-radius: 8px;
width: 320px;
}
Когда px всё ещё хорош
Предпочитайте px для волосных рамок, смещений тени и мелкого UI-хрома с фиксированным краем. Предпочитайте относительные единицы, когда макет должен «дышать» с размером шрифта или шириной контейнера.
rem и em
rem относителен к размеру шрифта корневого элемента (обычно <html>). em относителен к размеру шрифта текущего элемента (или родителя — в зависимости от свойства). Для новичков rem — более безопасный выбор по умолчанию для font-size и многих отступов, потому что остаётся согласованным во вложенных элементах.
Типографика от корня с rem
csshtml {
font-size: 100%; /* often 16px in browsers */
}
.lead {
font-size: 1.25rem; /* ~20px if root is 16px */
margin-bottom: 0.75rem;
}
em одним предложением
Используйте em, когда хотите, чтобы значение масштабировалось с локальным шрифтом — например padding, который растёт, если текст компонента увеличивается. Если вложенные em умножаются и «убегают», переведите эти размеры на rem.
Проценты (%)
Процент относителен к измерению родителя. При width: 50% элемент стремится к половине ширины родителя (когда у родителя задана ширина). Проценты — классический инструмент гибких раскладок внутри контейнера.
Гибкая ширина в процентах
css.sidebar {
width: 30%;
}
.main {
width: 70%;
}
Единицы viewport (vw и vh)
1vw — это 1% ширины viewport; 1vh — 1% высоты viewport. Мощны для полноэкранных hero, но легко злоупотребить — текст только в vw может стать нечитаемым на очень широких или узких экранах.
Высота viewport для hero
css.hero {
min-height: 80vh;
padding: 2rem;
}
Практичная привычка по умолчанию
Стартовая привычка: rem для размеров шрифта и большей части вертикальных отступов, % или гибкие инструменты раскладки (позже: Flexbox/Grid) для ширин, и px для рамок и мелких фиксированных деталей. Возвращайтесь к единицам viewport при секциях на всю ширину — не для каждого margin.
Попробуйте сами
- Создайте правило
.cardсwidth: 80%,max-width: 24remиborder: 1px solid #94a3b8. - Задайте
.card h2 { font-size: 1.5rem; }и короткий абзац в1rem. - Добавьте секцию
.banner { min-height: 40vh; }над карточкой. - Измените размер окна и корневой
html { font-size: … }, чтобы почувствовать, как по-разному реагируют%,vhиrem. - По желанию: переведите заголовок в
1.5emвнутри.cardи посмотрите, удивит ли вложенность.
Частые ошибки
- Писать
font-size: 16без единицы — недопустимо для длины в стандартном CSS - Использовать только
pxдля всех шрифтов на сайте, который должен уважать масштаб/предпочтения - Вкладывать много
em, пока текст не станет огромным или крошечным - Задавать текст body только через
vw, чтобы строки «взрывались» на больших мониторах - Считать, что высота
%работает, когда у родителя нет явной высоты
Кратко
- Значениям длины обычно нужна единица (
px,rem,%,vw, …) - Абсолютные фиксированы; относительные масштабируются от шрифта, родителя или viewport
- Предпочитайте
remдля текста,%/системы раскладки для ширин,pxдля тонких рамок emмасштабируется с локальным шрифтом;vw/vh— с viewport- Подбирайте единицу под задачу — не навязывайте одну везде
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху