Как растянуть блок на всю высоту страницы?
Вопрос по CSS . Задача: есть высокий блок-контейнер, он по высоте не помещается на один экран (например, div , в котором много параграфов), надо задать фон этому блоку-контейнеру, чтобы он был закрашен полностью. Нашел вот такое решение: задать всем блокам-родителям height: 100%; , а блоку-контейнеру задать min-height: 100%; . Вот пример:
html, body < height: 100%; >div
text text text text
text text text text
text text text text
text text text text
text text text text
text text text text
text text text text
text text text text
text text text text
text text text text
text text text text
text text text text
text text text text
text text text text
Не понимаю, почему это работает. Похоже на «шаманство». min-height задает минимальную высоту. Получается, что минимальная высота содержимого дива равна 100% высоты содержимого div . Посмотрел в devtools, выяснилось, что div может быть по высоте больше, чем body и html .
Отслеживать
34.4k 15 15 золотых знаков 65 65 серебряных знаков 94 94 бронзовых знака
задан 4 янв 2017 в 13:37
2,049 3 3 золотых знака 18 18 серебряных знаков 35 35 бронзовых знаков
что собственно вам не понятно? как по другому сделать высоту блока на всю страницу?
4 янв 2017 в 13:41
мне не понятно, почему это работает. как связана минимальная высота с высотой на всю страницу?
4 янв 2017 в 13:45
высота родителя — 100% страницы. минимальная высота вашего блока — 100% родителя -> 100% страницы. Можете задать блоку высоту в 100vh, результат будет тот же) про эти единицы измерения можете поискать информацию. ее полно)
4 янв 2017 в 13:53
правильно, а минимальная высота вашего блока — 100% боди — что и есть 100% страницы. Просто для этих целей используйте height: 100vh)
4 янв 2017 в 13:58
высота боди — 100% высоты хтмл, высота хтмл — 100% высоты вьюпорта. а вьюпорт — это область просмотра, а не вся страница
4 янв 2017 в 14:04
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Почему это работает?
Потому что div просто переполняет (вылазит за границы) body и всё. Задавая overflow: hidden; для body мы увидим, что div просто обрезается (если высота экрана небольшая).
html, body < height: 100%; overflow: hidden; >div
text text text text
text text text text
text text text text
text text text text
text text text text
text text text text
text text text text
text text text text
text text text text
text text text text
text text text text
text text text text
text text text text
text text text text
Как с этим быть?
Это задавание height: 100%; блокам всех уровней вложенности довольно неудобно. Задайте просто нужному вам блоку min-height: 100vh; , где vh — единицы высоты экрана. У body тогда будет по умолчанию height: auto; и body просто будет подстраиваться под содержимое.
Отслеживать
ответ дан 4 янв 2017 в 13:53
Vadim Ovchinnikov Vadim Ovchinnikov
9,644 4 4 золотых знака 35 35 серебряных знаков 72 72 бронзовых знака
спасибо за ответ. не понимаю, как связана минимальная высота с высотой на всю страницу
4 янв 2017 в 14:02
я знаю, что див переполняется. и что при задании overflow: hidden; это переполнение «обрезается». вопрос в том, как див по высоте оказался больше боди и хтмл
4 янв 2017 в 14:14
Да потому что body и html , когда им задают 100% занимают один экран. А div занимает минимум один экран, но может и больше (как в данном случае) при min-height: 100%; .
4 янв 2017 в 14:20
@Dimon Вам помог ответ на вопрос?
4 янв 2017 в 14:24
идею с 100vh подкинули
4 янв 2017 в 15:24
Работу min-height: 100% можно понять на примере с установкой прилипающего футера. При этом есть стили:
* < margin: 0; padding: 0; >html, body, .wrapper < height: 100%; >.content < box-sizing: border-box; min-height: 100%; padding-bottom: 90px; >.footer
ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй ййй
ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц ццц
ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу ууу
ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк ккк
еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее еее
При этом min-height: 100% работает ТАК:
- Если СОДЕРЖИМОГО МАЛО у блока content , то его высота МИНИМАЛЬНО равна 100% высоты вьюпорта ( wrapper — это 100% от высоты body , body — это 100% от высоты html , а html — это 100% от высоты viewport ). При этом у блока content есть нижний paddind -буфер отрицательный, а у блока блока footer есть отрицательный margin , который позволяет в случае, когда много содержимого, «наползти» на этот padding -буфер.
- Если же содержимое НЕ ВЛЕЗАЕТ на экран (содержимого МНОГО в блоке content ), то высота определяется содержимым — содержимое растягивает.
Еще раз повторю, чтобы все запомнили — если содержимого мало, высота блока равна высоте вьюпорта (это и есть МИНИМАЛЬНОЕ значение высоты, то есть, меньше быть не может, а больше — пожалуйста, если сможешь растянуть содержимым), если много — высота блока БОЛЬШЕ высоты вьюпорта и определяется содержимым, которое на эту высоту и растягивает.
Ширина одного div в зависимости от другого
Текст обтекает блок 1 справа. Внутри этого блока находятся блоки 2(картинка) и 3(описание картинки). Как сделать, чтобы блок с описанием становился по ширине таким же как и блок с картинкой?
Размер картинки не фиксирован(картинки могут быть любого размера) и ограничений на количество символов описания нет.
1 2 3 4 5 6
текст div id="1" style="float: left;"> div id="2">img src="картинка">/div> div id="3">описание картинки/div> /div> текст
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Плавающая ширина блока div в зависимости от содержимого
Здравствуйте, помогите красиво решить задачу, которая прикреплена к вложению Моё решение ниже.
HEIGHT одного блока DIV относительно другого
Есть блоки DIV (например main и left), у блока left высота (height) 800px, позиционирование.
Как изменить высоту одного div при изменении высоты другого
Как изменить высоту одного блока div при изменении высоты другого — HTML, CSS. В блоке справа меню.
Регистрация: 27.08.2012
Сообщений: 82
Ну если описание будет шире картинки то он блок растянет, что бы ты не делал, выход делать фиксированную ширину.
div id="1" style="float: left;width:XXXpx;">
Либо прятать их под класс и в CSS прописывать ширину класса
Регистрация: 15.10.2014
Сообщений: 64
Сообщение от thebaron 
Ну если описание будет шире картинки то он блок растянет, что бы ты не делал, выход делать фиксированную ширину.
Фиксированную ширину задавать нельзя, т.к. размеры блоков зависят от ширины картинки (а ширина картинки меняется в зависимости от самой картинки).
203 / 152 / 44
Регистрация: 24.11.2013
Сообщений: 1,106
Dimento, ну а если текст шире картинки, ты куда его хочешь деть?
Добавлено через 3 минуты
Сообщение от Dimento 
размеры блоков зависят от ширины картинки
думаю можно через js получать ширину
div id="2">img src="картинка">/div>
и присваивать эту ширину
div id="3">описание картинки/div>
Регистрация: 15.10.2014
Сообщений: 64
Сообщение от Давран 
Dimento, ну а если текст шире картинки, ты куда его хочешь деть?
Если описание шире картинки — оно переносится на новую строку.
Да, по всей видимости, только через js или php функцию getimagesize, но думал как-то без этого обойтись..
203 / 152 / 44
Регистрация: 24.11.2013
Сообщений: 1,106
Сообщение от Dimento 
1 2 3 4
$(document).ready(function(){ var w=$("#2").outerWidth(); $("#3").css({"width":w}); });
Регистрация: 27.08.2012
Сообщений: 82
Если я загружу картинку в over9999 ширину? У тебя редактор по любому должен будет задавать либо автоматически ширину, либо ты её сам указываешь. Туда в редактор(Если таковой будет) и запили переменную, которая потом унаследуется в ширину блока
203 / 152 / 44
Регистрация: 24.11.2013
Сообщений: 1,106
thebaron, может лучше написать
max-width:900;
например и уже не будет страшна картинка в 9999+px
Регистрация: 27.08.2012
Сообщений: 82
Сообщение от Давран 
thebaron, может лучше написать
Код CSS
1
max-width:900;
например и уже не будет страшна картинка в 9999+px
В этом решении(Повторюсь если есть редактор) сделать так куда проще чем подключать дополнительные скрипты
50 / 49 / 10
Регистрация: 27.05.2014
Сообщений: 232
Давран, +
overflow: hidden;
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Как изменить высоту одного блока div при изменении высоты другого?
вообщем на странице есть 3 блока div 1 центральный с установленной высотой auto и 2 боковых в.

Необходимо сделать резиновость одного дива в зависимости от другого, Как это реализовать на html и css
Добрый день, уважаемые форумчане! Подскажите, пожалуйста, как сделать верстку в html и css, чтобы.

Размещение нескольких блоков div внутри другого блока div
Хочу сделать шапку веб-страницы. Прикреплю ниже небольшую схему того, как она будет выглядеть. Хочу.
Можно ли задать один блок div относительно другого div-а?
Привет. Пытаюсь сделать слои, по этому примеру. Там они используют абсолютное позиционирование и.
Размеры блочных элементов в CSS
Эта объемная статья учебника будет посвящена важным темам, задача которых заключается в том, чтобы расставить по полочкам методы работы с блочными элементами, объянить читателю для чего применяется изменение модели вычисления ширины и высоты элементов, как управлять переполнением блочных элементов, и как работать с минимальными и максимальными размерами элементов.
При изучении блочной модели CSS мы разобрали, что свойства width и height устанавливают ширину и высоту внутренней области элемента (content area), которая может содержать текст, изображения и прочие элементы.
В блочной модели CSS существует разница между значениями ширины и высоты, которые вы задаете для элемента и размером пространства, которое браузер резервирует для его отображения. Общая ширина и высота элементов представляет собой область окна браузера, которая состоит из ширины и высоты внутренних отступов, границ и указанных для них пользовательских значений.

Рис. 99 Схема вычисления общей ширины и высоты элементов.
Общая ширина элемента вычисляется по формуле:
width (ширина) + padding-left (левый внутренний отступ) + padding-right (правый внутренний отступ) + border-left (левая граница) + border-right (правая граница).
Общая высота элемента вычисляется по формуле:
height (высота) + padding-top (верхний внутренний отступ) + padding-bottom (нижний внутренний отступ) + border-top (верхняя граница) + border-bottom (нижняя граница).
Допустим, у нас есть следующие стили для элемента :
div width: 150px; /* устанавливаем ширину элемента */ height: 150px; /* устанавливаем высоту элемента */ padding: 10px; /* устанавливаем внутренние отступы элемента */ border: 5px; /* устанавливаем границы элемента */ >
Общая ширина элемента:
150 пикселей (пользовательское значение ширины) + 10 пикселей (левый внутренний отступ) + 10 пикселей (правый внутренний отступ) + 5 пикселей (левая граница) + 5 пикселей (правая граница) = 180 пикселей .
Общая высота элемента:
150 пикселей (пользовательское значение высоты) + 10 пикселей (нижний внутренний отступ) + 10 пикселей (верхний внутренний отступ) + 5 пикселей (нижняя граница) + 5 пикселей (верхняя граница) = 180 пикселей .
И так, мы с Вами рассмотрели, как классически происходит вычисление общей ширины и высоты элементов. Минусы этой модели заключаются в том, что вам необходимо проводить математические вычисления, чтобы понять какую действительно ширину, либо высоту имеет тот, или иной элемент. Удобно ли это?
Изменение модели вычисления ширины и высоты элементов

С выходом стандарта CSS 3 добавлено свойство box-sizing, оно позволяет изменить, применяемую по умолчанию CSS модель, с помощью которой вычисляются ширина и высота элементов.
Для того, чтобы понять стоит ли нам использовать альтернативные способы вычисления ширины и высоты элементов, давайте рассмотрим пример, в котором создадим четыре блока одной ширины, при этом мы будем использовать процентные значения:
Пример вычисления ширины и высоты элементов div display: inline-block; /* устанавливаем элементы как блочно-строчные (выстраиваем в линейку) */ width: 25%; /* устанавливаем ширину элемента */ height: 100px; /* устанавливаем высоту элемента */ > .test background-color: red; /* задаем цвет заднего фона */ > .test2 background-color: green; /* задаем цвет заднего фона */ > .test3 background-color: blue; /* задаем цвет заднего фона */ > .test4 background-color: yellow; /* задаем цвет заднего фона */ > /* обязательно прочтите пояснение ниже */ class = "test">class = "test2">class = "test3">class = "test4"> 