Что такое 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 для адаптивных шрифтов, отступов и масштабирования интерфейса, особенно если не хотите привязываться только к ширине или высоте экрана.