Как расширить div на полную высоту с sticky footer в CSS
Быстрый ответ
Для того чтобы блок div мог занимать всю высоту родительского элемента, примените CSS-свойство height со значением 100%. Помните, что это будет функционировать только в случае, когда у родительского элемента задана высота. Для распространения div на всю высоту окна браузера используйте vh в значении height: 100vh.
.full-height {
height: 100%; /* применяется, когда у родителя задана высота */
}
.viewport-height {
height: 100vh; /* распространяется на всю высоту видимой части окна браузера */
}
Назначьте нужный класс своему div:
<!-- В контейнере с заданной высотой -->
<div style="height: 300px;">
<div class="full-height">Здесь я, протяжённый div!</div>
</div>
<!-- На всём экране -->
<div class="viewport-height">Я дохожу до небес!</div>
Если ваш div находится внутри других блоков, каждый родительский элемент должен иметь указанную высоту; в противном случае свойство height: 100% не будет функционировать.

Укрощение высоты: познакомьтесь с min-height
В случаях, когда div должен подстраиваться под различные размеры окна браузера, свойство min-height: 100vh станет вашим надёжным помощником. Это обеспечит минимальную высоту элемента, равную высоте видимой области.
.responsive-full-height {
min-height: 100vh;
}
Если на странице есть элементы с фиксированной высотой, такие как шапка или подвал, используйте функцию calc с min-height, чтобы учесть их размеры:
.content-with-footer {
min-height: calc(100vh – 50px); /* учитывается подвал высотой 50px */
}
Современные рыцари: Flexbox и CSS Grid
Для безупречной адаптивной верстки без необходимости дополнительных высотных расчётов вам помогут flexbox или CSS Grid:
.flex-container {
display: flex;
flex-direction: column;
min-height: 100vh;
}
.flex-item {
flex: 1; /* Занимает все доступное пространство в контейнере */
}
А чтобы начать стилизацию с чистого листа, сбросьте отступы и поля:
html, body {
margin: 0;
padding: 0;
height: 100%; /* Позволяет дочерним элементам распространиться на весь экран */
}
Визуализация
Визуализируйте веб-страницу как здание, где каждый блок div — это этаж.
🏢 -> 🌐 : Здание соответствует полной высоте веб-страницы.
Чтобы макет div занял все доступное пространство от первого этажа до крыши, в CSS задайте height: 100%:
div {
height: 100%;
}
Ваш блок div теперь аналогичен лифту, который проходит через все этажи здания без остановок.
🔝🛗🔝: Быстрое движение от самого низа до вершины.
Маленькие, но важные детали: учтите нюансы
Хотите идеально растянуть элемент на всю высоту? Обратите внимание на следующие нюансы:
- Для Safari на iOS используйте
-webkit-fill-availableсmin-height. - Помните, что различие в высоте окон браузеров может вызвать проблемы, особенно в мобильной версии. Воспользуйтесь готовыми решениями с ресурсов типа Stack Overflow.
- Свойство
overflowпригодится, если содержаниеdivпревышает 100% высоты. - Для масштабирования и адаптивности предпочтительно использовать единицы
remдля полей и отступов. - Если у дочерних элементов указан
min-height, родительскому контейнеру назначьтеposition: relative.
Встроенный код поможет адаптировать страницу под параметры мобильных экранов:
.full-height-mobile {
min-height: 100vh; /* стандартная высота окна браузера */
min-height: -webkit-fill-available; /* особые условия для iOS */
}
Элегантные решения: преодолеваем трудности
Понимание принципов работы HTML и базовых стилей поможет вам в создании идеального дизайна:
- Всегда открывайте и закрывайте HTML-теги — это важно для структуры документа.
- Прежде чем задать
divна всю высоту, установите высоту для<body>или главного контейнера. - Используйте свойство
backgroundдля создания интересного фона дляdiv. - Учитывайте специфику отображения на устройствах различных размеров для создания адаптивного дизайна.
Следующий пример демонстрирует базовую структуру и сброс стилей для начала работы:
<!DOCTYPE html>
<html lang="ru">
<head>
<style>
html, body {
height: 100%;
margin: 0;
padding: 0;
}
/* Готовы к дальнейшему применению стилей */
</style>
</head>
<body>
<div id="full">Я полностью занимаю высоту окна браузера!</div>
<!-- Здесь может быть дополнительный контент -->
</body>
</html>
Полезные материалы
- Полное руководство по Flexbox | CSS-Tricks — станьте экспертом по flexbox и создавайте адаптивные макеты.
- Полное руководство по CSS Grid | CSS-Tricks — изучите все нюансы работы с CSS Grid.
- Введение в модель CSS Box – CSS: Cascading Style Sheets | MDN — для веб-дизайнера знание CSS Box Model является основой.
- height – CSS: Cascading Style Sheets | MDN — подробное рассмотрение свойства
heightв CSS. - html – Как сделать div на 100% высоты окна браузера – Stack Overflow — рекомендации по созданию
divна всю высоту экрана. - Как создать изображение на весь экран — как сделать фоновые изображения на весь экран с помощью CSS.
- Can I use... Support tables for HTML5, CSS3, etc — сервис проверки поддержки различных свойств CSS и элементов HTML5 разными браузерами.


