Как получить высоту элемента тела
Здесь общая высота всех <div>
составляет 900 пикселей, но функция jQuery возвращает высоту тела как 577 пикселей. (Если я удаляю тело CSS, он работает).
Есть ли решение этой проблемы?
$j(function() {
alert($j("body").height());
})
html, body {
height:100%;
}
<div style="height:200px">header</div>
<div style="height:500px">content</div>
<div style="height:200px">footer</div>
Ответы
Ответ 1
Set
html { height: 100%; }
body { min-height: 100%; }
вместо height: 100%
.
Результат jQuery верен, потому что вы установили высоту тела на 100% и, вероятно, высоту окна просмотра. Эти три DIV вызывали переполнение, потому что в элементе BODY недостаточно места для них. Чтобы понять, что я имею в виду, установите границу тега BODY и проверьте, где граница заканчивается.
Ответ 2
Просто используйте
$(document).height() // - $('body').offset().top
и/или
$(window).height()
вместо $('body').height();
Ответ 3
$(document).height(), кажется, делает трюк и дает общую высоту, включая область, которая видна только с помощью прокрутки.
Ответ 4
Я верю, что возвращаемая высота тела - это видимая высота. Если вам нужна общая высота страницы, вы можете обернуть ваши теги div в содержащем div и получить высоту этого.
Ответ 5
Мы пытались избежать использования специфического IE
$window[0].document.body.clientHeight
И выяснилось, что следующий jQuery не будет последовательно давать одно и то же значение, но в конечном итоге в какой-то момент нашего сценария загрузки страницы, который работал для нас и поддерживал кросс-браузерную поддержку:
$(document).height()