Как сделать блок на всю высоту экрана
Короткий ответ
Единица vh — процент высоты окна, поэтому 100vh — это весь экран:
.hero {
min-height: 100vh;
min-height: 100dvh;
}Вторая строка с dvh перекрывает первую там, где её понимают. На телефоне 100vh бывает выше видимой области из-за адресной строки, а dvh учитывает её.
Пример в окне
Пример ниже — отдельное маленькое окно, поэтому vh в нём считается от высоты окна примера:
<style>
body { margin: 0; }
.hero { min-height: 100vh; display: grid; place-items: center; background: linear-gradient(teal, navy); color: white; }
</style>
<section class="hero"><h1>Welcome</h1></section>Какую единицу выбрать
svh — высота при показанных панелях браузера (самая маленькая), lvh — при скрытых (самая большая), dvh меняется на ходу. Для первого экрана сайта обычно хватает dvh или svh.
Частая ошибка
height: 100vh жёстко ограничивает блок: если текста больше, чем помещается на экране, он вылезет наружу и налезет на следующую секцию. min-height разрешает блоку расти, поэтому для секций используйте его.
Функции из этого ответа
- min-height — Минимальная высота: элемент не ниже этой высоты, но может расти.
- height — Высота элемента.
- px, em, rem, %, vw, vh — Единицы длины в CSS: абсолютные пиксели и относительные единицы.