Абсолютная высота DIV 100% - PullRequest
       34

Абсолютная высота DIV 100%

23 голосов
/ 01 февраля 2010

Я работал над этим в течение последних нескольких часов, и поиск в Интернете и стековый поток не получили большой поддержки. Как заставить #gradient и #holes заполнить всю страницу?

Я использовал функцию проверки элементов в Safari, и когда я выделяю элемент body, он не заполняет все окно. alt text

HTML:

<body>

    <div id="gradient"></div>
    <div id="holes"></div>

    <div id="header">Header Text</div>
</body>

CSS:

html, body {
    height:100%;

    margin:0;
    padding:0;
}

body {
    background-image:url(../Images/Tile.png);
    background-color:#7D7D7D;
    background-repeat:repeat;
}

#gradient {
    background-image:url(../Images/Background.png);
    background-repeat:repeat-x;

    position:absolute;
    top:0px;
    left:0px;
    height:100%;
    right:0px;
}

#holes {
    background-image:url(../Images/Holes.png);
    background-repeat:repeat;

    position:absolute;
    top:2px;
    left:2px;
    height:100%;
    right:0px;
}

#header {
    background-image:url(../Images/Header.png);
    background-repeat:repeat-x;

    position:absolute;
    top:0px;
    left:0px;
    width:100%;

    padding-top:24px;
    height:49px; /* 73 - padding */

    color:rgb(113, 120, 128);
    font-family:Helvetica, Arial;
    font-weight:bold;
    font-size:24px;
    text-align:center;
    text-shadow:#FFF 0px 1px 0px;
}

Ответы [ 11 ]

38 голосов
/ 07 октября 2011

Обратите внимание, что свойство высота , указанное в процент , равно , рассчитанному по отношению к содержащему блоку .., которое не обязательно должно быть немедленным ancestor - "Содержащий блок для позиционированного блока устанавливается ближайшим позиционированным предком или, если его нет, начальным содержащим блоком " . Могу поспорить, что это происходит в случае спрашивающего, так как нет предка (тот, у которого position: имеет значение relative или absolute).

Таким образом, «содержащий блок» преобразуется в начальный содержащий блок , который соответствует размерам области просмотра (окна). Установка position:relative в body будет учитывать высоту body и полностью растягивать абсолютно позиционированное содержимое вдоль body.

Подробнее о содержании блока здесь.

16 голосов
/ 14 декабря 2012

У меня была такая же проблема. Исправлено путем изменения положения: абсолютное положение: фиксированное.

3 голосов
/ 01 февраля 2010

Ну, мне кажется, что ваш элемент со всем содержимым перемещен.Если это так, то оно не собирается расширять тело, пока оно не очищено.

3 голосов
/ 01 февраля 2010

[обновление]
новый подход
Это должно сделать это ..

использование display:table на ваших 2 элементах должно сделать это ( это работает в моих тестах ) (но теперь вам нужно будет присвоить значения ширины ..

Однако я не уверен, стоит ли вам определять вложенные элементы как ячейки таблицы и т. Д., Которые станут неуправляемыми.

Попробуйте, хотя ..

<час /> старая не рабочая версия
Вы пробовали на #gradient и #holes следующее?

#gradient {
  height:auto!important;
  height:100%;
  min-height:100%;
  ..
  ..
}
#holes{
  height:auto!important;
  height:100%;
  min-height:100%;
  ..
  ..
}
2 голосов
/ 05 ноября 2010
$('div.class').css({'height':(($(document).height()))+'px'});
1 голос
/ 01 февраля 2010

Вы пытались настроить как это?

#holes {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
}

Растянет элемент, чтобы заполнить всю область страницы

1 голос
/ 01 февраля 2010

Лучший способ - использовать JavaScript. min-height поддерживается не всеми браузерами.

Javascript с использованием прототипа:

<script type="text/javascript">
var height = $(document.body).getHeight();
document.write('<div id="yourdiv" style="height:'+height+'px;width:100%;"></div>');
</script>
0 голосов
/ 23 марта 2015

Примените стили CSS как к #gradient & #holes, так и поместите скрипт после DIV.

0 голосов
/ 01 февраля 2010

Если честно, я думаю, что просто собираюсь overflow:auto на моем контенте, чтобы не нужно было прокручивать всю страницу

0 голосов
/ 01 февраля 2010

Я думаю, вы все сделали правильно. Это работает в Chrome (также WebKit!) И в IE7 / 8 / Quirks всякий раз, когда вы устанавливаете width: 100% на #gradient и #holes, не можете сейчас тестировать сафари на Mac (только дома), но теоретически Вы должны видеть это правильно.

Тем не менее, может быть, это что-то типа doctype, попробуйте другие?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...