У тела есть 100% высоты браузера
Я хочу, чтобы у тела было 100% высоты браузера. Могу ли я сделать это с помощью CSS?
Я попытался установить height: 100%
, но он не работает.
Я хочу установить цвет фона для страницы, чтобы заполнить все окно браузера, но если на странице мало контента, я получаю уродливую белую панель внизу.
Ответы
Ответ 1
Попробуйте также установить высоту HTML-элемента на 100%.
html,
body {
height: 100%;
}
Тело ищет своего родителя (HTML) для масштабирования динамического свойства, поэтому для HTML-элемента также должна быть установлена его высота.
Однако содержание тела, вероятно, нужно будет динамически менять.
Установка минимальной высоты на 100% позволит достичь этой цели.
html {
height: 100%;
}
body {
min-height: 100%;
}
Ответ 2
В качестве альтернативы для установки высоты элементов html
и body
до 100%
вы также можете использовать длины в разрезе в процентах.
5.1.2. Длины в процентах по видовому экрану: vw, vh, vmin, vmax units
Длины в процентах в окне просмотра относятся к размеру исходного содержащего блока. Когда высота или ширина исходного содержащего блока изменяется, они соответственно масштабируются.
В этом случае вы можете использовать значение 100vh
- которое является высотой области просмотра.
Пример здесь
body {
height: 100vh;
}
body {
min-height: 100vh;
}
Это поддерживается в большинстве современных браузеров. поддержка можно найти здесь.
Ответ 3
Если у вас есть фоновое изображение, вам нужно будет установить это вместо:
html{
height: 100%;
}
body {
min-height: 100%;
}
Это гарантирует, что тег вашего тела может продолжать расти, когда контент выше, чем область просмотра, и что фоновое изображение продолжает повторяться/прокручиваться/что угодно, когда вы начинаете прокрутку вниз.
Помните, что если вам нужно поддерживать IE6, вам нужно найти способ клина в height:100%
для тела, IE6 рассматривает height
как min-height
в любом случае.
Ответ 4
Если вы хотите сохранить поля на теле и не хотите полосы прокрутки, используйте следующий css:
html { height:100%; }
body { position:absolute; top:0; bottom:0; right:0; left:0; }
Настройка body {min-height:100%}
даст вам полосы прокрутки.
Смотрите демонстрационную версию http://jsbin.com/aCaDahEK/2/edit?html,output.
Ответ 5
html, body
{
height: 100%;
margin: 0;
padding: 0;
}
Ответ 6
То, что я использую в начале буквально каждого используемого файла CSS, выглядит следующим образом:
html, body{
margin: 0;
padding: 0;
min-width: 100%;
width: 100%;
max-width: 100%;
min-height: 100%;
height: 100%;
max-height: 100%;
}
Поля 0 гарантируют, что элементы HTML и BODY не будут автоматически размещены браузером, чтобы иметь некоторое пространство слева или справа от них.
Отметка 0 гарантирует, что элементы HTML и BODY автоматически не будут выталкивать все из них вниз или вправо из-за настроек браузера.
Варианты ширины и высоты установлены на 100%, чтобы гарантировать, что браузер не будет изменять их размер в ожидании фактического наличия заданного поля или заполнения, с минимальным и максимальным набором на случай, если произойдет какое-то странное, необъяснимое дело, хотя вы, вероятно, не нуждаетесь в них.
Это решение также означает, что, как и в случае, когда я впервые начал работать с HTML и CSS несколько лет назад, вам не придется указывать свой первый <div>
a margin:-8px;
, чтобы он соответствовал углу браузера окно.
Прежде чем я разместил сообщение, я посмотрел на свой другой проект в полноэкранном CSS и обнаружил, что все, что я использовал, было просто body{margin:0;}
и ничего больше, что отлично работало в течение двух лет, над которыми я работал.
Надеюсь, что этот подробный ответ поможет, и я чувствую вашу боль. На мой взгляд, глупо, что браузеры должны устанавливать невидимую границу слева, а иногда и верхнюю часть элементов body/html.
Ответ 7
После тестирования различных сценариев я считаю, что это лучшее решение:
html {
width:100%;
height: 100%;
display: table;
}
body {
width:100%;
display:table-cell;
}
html, body {
margin: 0px;
padding: 0px;
}
Он динамичен тем, что элемент html и body автоматически расширятся, если их содержимое переполняется. Я тестировал это в последней версии Firefox, Chrome и IE 11.
Посмотрите здесь полную скрипку (для вас там нет поклонников стола, вы всегда можете изменить ее, чтобы использовать div):
https://jsfiddle.net/71yp4rh1/9/
С учетом сказанного существует несколько вопросов с ответами, размещенными здесь.
html, body {
height: 100%;
}
Использование вышеуказанного CSS приведет к тому, что html и элемент body НЕ будут автоматически расширяться, если их содержимое переполняется, как показано здесь:
https://jsfiddle.net/9vyy620m/4/
Как вы прокручиваете, обратите внимание на повторяющийся фон? Это происходит потому, что высота элемента тела НЕ увеличилась из-за переполнения его дочерней таблицы. Почему он не расширяется, как любой другой элемент блока? Я не уверен. Я думаю, что браузеры обрабатывают это неправильно.
html {
height: 100%;
}
body {
min-height: 100%;
}
Установка минимальной высоты 100% на тело, как показано выше, вызывает другие проблемы. Если вы это сделаете, вы не можете указать, что дочерний div или таблица занимает процентную высоту, как показано ниже:
https://jsfiddle.net/aq74v2v7/4/
Надеюсь, это поможет кому-то. Я думаю, что браузеры обрабатывают это неправильно. Я ожидал бы, что рост тела будет автоматически регулироваться, увеличиваясь, если его дети переполняются. Однако это не происходит, если вы используете 100% высоту и 100% ширину.
Ответ 8
Быстрое обновление
html, body{
min-height:100%;
overflow:auto;
}
Лучшее решение с сегодняшним CSS
html, body{
min-height: 100vh;
overflow: auto;
}
Ответ 9
Здесь:
html,body{
height:100%;
}
body{
margin:0;
padding:0
background:blue;
}
Ответ 10
Пожалуйста, проверьте это:
* {margin: 0; padding: 0;}
html, body { width: 100%; height: 100%;}
Или попробуйте новый метод Высота видового экрана:
html, body { width: 100vw; height: 100vh;}
Viewport:
Если ваш используемый видовой экран означает, что содержимое экрана любого размера будет иметь полную высоту экрана.
Ответ 11
Вы также можете использовать JS
var winHeight = window.innerHeight ||
document.documentElement.clientHeight ||
document.body.clientHeight;
var pageHeight = $('body').height();
if (pageHeight < winHeight) {
$('.main-content,').css('min-height',winHeight)
}
Ответ 12
Try
<html style="width:100%; height:100%; margin: 0; padding: 0;">
<body style="overflow:hidden; width:100%; height:100%; margin:0; padding:0;">
Ответ 13
Только с 1 строкой CSS... Вы можете сделать это.
body{ height: 100vh; }
Ответ 14
Если вы не хотите работать с редактированием собственного CSS файла и сами определяете правила высоты, наиболее типичные рамки CSS также решают эту проблему, если элемент тела заполняет всю страницу, среди прочих проблем, в легкость с несколькими размерами видовых экранов.
Например, Tacit CSS framework решает эту проблему из коробки, где вам не нужно определять какие-либо правила CSS и классы, и вы просто включаете CSS файл в свой HTML.
Ответ 15
Попробуйте добавить:
body {
height: 100vh;
}
Ответ 16
html {
background: url(images/bg.jpg) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
min-height: 100%;
}
html body {
min-height: 100%
}
Работает для всех основных браузеров: FF, Chrome, Opera, IE9+. Работает с фоновыми изображениями и градиентами. Полосы прокрутки доступны в виде содержимого.
Ответ 17
Я бы использовал это
html, body{
background: #E73;
min-height: 100%;
min-height: 100vh;
overflow: auto; // <- this is needed when you resize the screen
}
<html>
<body>
</body>
</html>
Ответ 18
все ответы на 100% правильны и хорошо объяснены,
но я сделал что-то хорошее и очень простое, чтобы сделать его отзывчивым.
здесь элемент будет занимать 100% высоты порта просмотра, но когда дело доходит до мобильного просмотра, оно не выглядит хорошо особенно на портретном (мобильном), поэтому, когда порт просмотра становится меньше, элемент будет рушиться и перекрываться на каждом Другие. поэтому, чтобы сделать его немного отзывчивым, это код.
надеюсь кто-то получит помощь от этого.
<style>
.img_wrap{
width:100%;
background: #777;
}
.img_wrap img{
display: block;
width: 100px;
height: 100px;
padding: 50px 0px;
margin: 0 auto;
}
.img_wrap img:nth-child(2){
padding-top: 0;
}
</style>
<div class="img_wrap">
<img src="https://i.pinimg.com/originals/71/84/fc/7184fc63db0516a00e7d86900d957925.jpg" alt="">
<img src="https://i.pinimg.com/originals/71/84/fc/7184fc63db0516a00e7d86900d957925.jpg" alt="">
</div>
<script>
var windowHeight = $(window).height();
var elementHeight = $('.img_wrap').height();
if( elementHeight > windowHeight ){
$('.img_wrap').css({height:elementHeight});
}else{
$('.img_wrap').css({height:windowHeight});
}
</script>
здесь JSfiddle Demo.
Ответ 19
Здесь обновление
html
{
height:100%;
}
body{
min-height: 100%;
position:absolute;
margin:0;
padding:0;
}
Ответ 20
О дополнительном пространстве внизу: ваша страница - приложение ASP.NET? Если это так, возможно, в вашей разметке есть почти все. Не забудьте также форматировать форму. Добавление overflow:hidden;
в форму может удалить дополнительное пространство внизу.
Ответ 21
@media all {
* {
margin: 0;
padding: 0;
}
html, body {
width: 100%;
height: 100%;
} }
Ответ 22
CSS3 имеет новый метод.
height:100vh
Он делает ViewPort на 100% равным высоте.
Итак, ваш код должен быть
body{
height:100vh;
}