Что такое vh, vw, vmin и vmax в CSS
Viewport-единицы: vh, vw, vmin, vmax
Эти CSS-единицы основаны на размерах области просмотра (viewport). Это полезно для создания адаптивной, "резиновой" вёрстки.
Обзор единиц
Единица | Значение | Что означает |
---|---|---|
1vh | 1% от высоты окна | Высота в 1/100 от viewport height |
1vw | 1% от ширины окна | Ширина в 1/100 от viewport width |
1vmin | 1% от меньшего значения vh или vw | Минимум из ширины/высоты |
1vmax | 1% от большего значения vh или vw | Максимум из ширины/высоты |
Пример
.box {
width: 50vmin; /* будет 50% от меньшей стороны окна */
height: 50vmax; /* будет 50% от большей стороны окна */
background: lightcoral;
}
Такой блок будет адаптироваться под ориентацию экрана: при повороте устройства меняются vmin/vmax
.
Применение
vh
иvw
— для полноэкранных секций, блоков, слайдов.vmin
— чтобы блоки не выходили за пределы меньшей стороны.vmax
— для создания элементов, которые растягиваются по большей стороне (например, при горизонтальной вёрстке).
Важно для мобильных
- Мобильные браузеры изменяют высоту
vh
, когда показывают/скрывают адресную строку. Чтобы решить эту проблему:
Используйте CSS-переменные с JavaScript:
document.documentElement.style.setProperty('--vh', `${window.innerHeight * 0.01}px`);
.full-height {
height: calc(var(--vh, 1vh) * 100);
}
Совет:
Используйте vmin
/vmax
для адаптивных шрифтов, отступов и масштабирования интерфейса, особенно если не хотите привязываться только к ширине или высоте экрана.