Блок на весь экран | CSS
If the height of the containing block is not specified explicitly (i.e., it depends on content height), and this element is not absolutely positioned, the percentage value is treated as ‘0’ (for ‘min-height’) or ‘none’ (for ‘max-height’). [w3.org]
html, body < height: 100%; margin: 0; padding: 0; overflow: hidden; >body < overflow: auto; /* добавить полосу прокрутки */ > main
Блок шириной на весь экран монитора выровнять по центру окна браузера
У многих сайтов, в том числе у «Шпаргалки блоггера» содержание ограничено определённой шириной и горизонтально выравнивается по середине экрана.
header, nav, main, footer
Для того, чтобы контент выходил за пределы этих 1200px , но был ограничен шириной окна браузера, достаточно такого кода:
Картинка на весь экран CSS
Особенно здорово смотрятся изображения. Они занимают необходимое им пространство, но не более ширины окна браузера.
Код немного доработан, опираясь на статью «Размер изображения меняется при изменении экрана браузера». Там же написан соответствующий вариант для видео.
7 комментариев:
Agent_Smith Полезная штука, спасибо Вам) NMitra Для себя делала :)) Другие прописывают max-width для каждого отдельного тега (p, pre и т.п.), а не для всей колонки main. Анонимный С высотой блока не работает. просто по ширине экрана, ниже обрезается и никуда не скролится NMitra Ничего не поняла 🙂 Приведите пример, пожалуйста. Анонимный о Иван Сафронов не работает данный метод NMitra Так не может быть: на данной странице ведь работает. Покажите URL, где внедрён код и поясните что именно хотите сделать. Например, блок с заголовком «Популярное».
Как расширить div на полную высоту с sticky footer в CSS
Для того чтобы блок div мог занимать всю высоту родительского элемента, примените CSS-свойство height со значением 100% . Помните, что это будет функционировать только в случае, когда у родительского элемента задана высота. Для распространения div на всю высоту окна браузера используйте vh в значении height: 100vh .
Скопировать код
.full-height < height: 100%; /* применяется, когда у родителя задана высота */ >.viewport-height < height: 100vh; /* распространяется на всю высоту видимой части окна браузера */ >
Назначьте нужный класс своему div :
Скопировать код
Если ваш div находится внутри других блоков, каждый родительский элемент должен иметь указанную высоту; в противном случае свойство height: 100% не будет функционировать.
Укрощение высоты: познакомьтесь с min-height
В случаях, когда div должен подстраиваться под различные размеры окна браузера, свойство min-height: 100vh станет вашим надёжным помощником. Это обеспечит минимальную высоту элемента, равную высоте видимой области.
Скопировать код
.responsive-full-height
Если на странице есть элементы с фиксированной высотой, такие как шапка или подвал, используйте функцию 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 теперь аналогичен лифту, который проходит через все этажи здания без остановок.
: Быстрое движение от самого низа до вершины.
Маленькие, но важные детали: учтите нюансы
Хотите идеально растянуть элемент на всю высоту? Обратите внимание на следующие нюансы:
- Для 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 на всю высоту, установите высоту для или главного контейнера.
- Используйте свойство background для создания интересного фона для div .
- Учитывайте специфику отображения на устройствах различных размеров для создания адаптивного дизайна.
Следующий пример демонстрирует базовую структуру и сброс стилей для начала работы:
CSS: настройка высоты div под высоту экрана браузера
Если вам необходимо, чтобы div занимал всю высоту окна браузера, в CSS следует использовать значение 100vh , где vh сокращенно означает 100% высоты вьюпорта.
Скопировать код
.full-height < height: 100vh; /* Превращаем высоту div в высоту небоскрёба */ >
Это базовое правило гарантирует, что div будет занимать высоту всего экрана и при этом будет гибко подстраиваться под разные размеры устройств.
Вопрос о процентах: отношение и расположение
В тех ситуациях, когда 100vh функционирует как общий ориентир, его значение может варьироваться в зависимости от высоты родительских контейнеров и контекста позиционирования. Чтобы устойчиво закрепить макет при условии, что div занимает задуманное пространство, следует установить элементам html и body высоту height: 100% :
Скопировать код
html, body < height: 100%; /* Обеспечиваем надежный основание для наших потомков – элементов div */ >
Применение абсолютного позиционирования с помощью top: 0; и bottom: 0; заставляет div автоматически растянуться по вертикали, заполнив все доступное место. Помните, однако, что родительские элементы div не должны иметь абсолютного или относительного позиционирования, поскольку они могут «испортить» макет, вызывая нежелательные «препятствия» на пути!
Отметим, что 1vh равняется 1% высоты вьюпорта и функционирует как переменная величина, поддающаяся гибкой адаптации. Эта адаптивность в многоколоночном режиме потребует комбинации height: 100vh; и width: 50%; для формирования колонок равной высоты.
Визуализация
Вот простой визуальный пример того, как div занимает 100% высоты окна браузера:
Скопировать код
️ Окно браузера | |----------------| | | | | | div < | | height: 100vh; | | Он растягивается на всё отведенное | | вертикальное пространство. |----------------| |
Представьте div, функционирующий по принципу лифта: он непрерывно движется вверх ⬆️
Добавление «пиксельной пыли»: визуальное разделение
При работе с большим количеством элементов div , визуальное разграничение может быть очень полезным. Используйте свойство background-color для визуального усиления тех div , которые занимают всю доступную им высоту в сложных макетах.
Скопировать код
.full-height < height: 100vh; background-color: #e0e0e0; /* Одели div в новый "костюм" */ >
В эпоху «Плавающего» и «Гибкого»
Конкретные техники с использованием свойства float могут помочь достичь устойчивого позиционирования. Но что делать, если div находится в контексте Flex или Grid? Не волнуйтесь! В контейнере flex родительский элемент может иметь значение display: flex; , тогда как дочерний div примет свойство flex: 1; .
Это свойство заставляет дочерний элемент расширяться, занимая все доступное пространство на вертикальной плоскости.
Путь к отзывчивости и совместимости с браузерами
Хотя наш герой 100vh надежно борется в большинстве современных браузеров, всегда стоит внимательно проверить кросс-браузерную совместимость! Opera Mini и некоторые мобильные браузеры могут интерпретировать vh по-своему, поэтому убедитесь, что у вас есть план действий для этих капризных браузеров.
Полезные материалы
- Fun with Viewport Units | CSS-Tricks — Наглядное изучение работы vh и vw единиц в CSS.
- height – CSS: Cascading Style Sheets | MDN — Официальное описание свойства height в CSS.
- CSS Height, Width and Max-width | W3Schools — Практическое использование и учебные материалы по размерам в CSS.
- css – Chrome / Safari not filling 100% height of flex parent | Stack Overflow — Дискуссия специалистов о решении проблем с заполнением 100% высоты в Flexbox.
- Grid | Codrops — Глубокое изучение CSS Grid.
- html – Make body have 100% of the browser height | Stack Overflow — Обсуждение и стратегии для достижения 100%-ной высоты элемента body.
- The trick to viewport units on mobile | CSS-Tricks — Информация об единицах просмотра на мобильных устройствах.
Как растянуть div на 100% по вертикали (CSS)
Мы регулярно выпускаем такие полезные статьи. Подпишитесь на наш Телеграм-канал, чтобы получать оповещения о новых публикациях.
Задача
Растянуть div по вертикали на 100% относительно родительского блока или экрана. Резиновая высота div.
Решение
Ваш div займет 100% по вертикали только в том случае, если высота родительского блока задана 100%. Так что последовательно прописываем высоту 100% у всех блоков по иерархии, включая body и html.
Пока мы не проставим высоту 100% всем блокам, в который вложен целевой div, ничего не выйдет. Как только пропишем, все встанет как надо.
Резиновый по вертикали сайт
Таким же образом мы можем задать высоту внутреннего div не 100%, а меньше, тем самым обеспечив сохранение пропорций верстки на разных экранах по вертикали.
html < height: 100%; >body < height: 100%; >html, body < margin: 0; padding: 0; >.pagecontent