Я хочу, чтобы body имел 100% высоты браузера. Могу ли я сделать это с помощью CSS?
Я попытался установить height: 100%
, но это не работает.
Я хочу установить цвет фона для страницы, чтобы заполнить все окно браузера, но если на странице мало контента, я получаю уродливую белую полосу внизу.
Ответы:
Попробуйте также установить высоту HTML-элемента на 100%.
Тело ищет своего родителя (HTML), как масштабировать динамическое свойство, поэтому для HTML-элемента также должна быть установлена его высота.
Однако содержание тела, вероятно, нужно будет динамически менять. Установка минимальной высоты на 100% позволит достичь этой цели.
источник
body {min-height}
версию, то вы не можете использовать.body-child{height: 100%}
трюк.vh
->body { height: 100vh }
- проверьте ответ здесь stackoverflow.com/a/25829844/2680216В качестве альтернативы настройки оба
html
иbody
элемента высот100%
, вы можете также использовать окно просмотра-процентную длину.В этом случае вы можете использовать значение
100vh
- высоту области просмотра.Пример здесь
Это поддерживается в большинстве современных браузеров - поддержку можно найти здесь .
источник
margin: 0;
чтобы избежать постоянной вертикальной полосы прокрутки справа.Если у вас есть фоновое изображение, вы можете установить это вместо:
Это гарантирует, что ваш тег body будет продолжать расти, когда содержимое выше, чем область просмотра, и что фоновое изображение будет повторяться / прокручиваться / что угодно, когда вы начнете прокручиваться вниз.
Помните, что если вам нужно поддерживать IE6, вам нужно будет найти способ втиснуть
height:100%
тело, IE6 работаетheight
как и вmin-height
любом случае.источник
body{min-height: 100vh}
body { height: auto; }
чтобы полосы прокрутки не отображались в FireFox. кроме этого, работает отлично.Если вы хотите сохранить поля на теле и не хотите использовать полосы прокрутки, используйте следующую CSS:
Установка
body {min-height:100%}
даст вам полосы прокрутки.См. Демонстрацию на http://jsbin.com/aCaDahEK/2/edit?html,output .
источник
height: auto;
вbody
предложении для всплывающих полос прокрутки.источник
После тестирования различных сценариев, я считаю, что это лучшее решение:
Это динамично в том, что
html
иbody
элементы будут расширяться автоматически , если их переполнения содержимого. Я проверил это в последней версии Firefox, Chrome и IE 11.Смотрите полную скрипку здесь (для вас ненавидят за столом, вы всегда можете изменить его, чтобы использовать div):
https://jsfiddle.net/71yp4rh1/9/
При этом, есть несколько вопросов с ответами, размещенными здесь .
Использование вышеуказанного CSS приведет к автоматическому расширению html и элемента body, если их содержимое переполнится, как показано здесь:
https://jsfiddle.net/9vyy620m/4/
Как прокручиваете, замечаете повторяющийся фон? Это происходит потому, что высота элемента body НЕ увеличилась из-за переполнения дочерней таблицы. Почему он не расширяется как любой другой элемент блока? Я не уверен. Я думаю, что браузеры обрабатывают это неправильно.
Установка минимальной высоты тела на 100%, как показано выше, вызывает другие проблемы. Если вы сделаете это, вы не сможете указать, что дочерний элемент div или таблица занимают процентную высоту, как показано здесь:
https://jsfiddle.net/aq74v2v7/4/
Надеюсь, это кому-нибудь поможет. Я думаю, что браузеры обрабатывают это неправильно. Я ожидал бы, что рост тела автоматически отрегулируется, увеличиваясь, если его дети переполняются. Однако этого не происходит, когда вы используете 100% высоты и 100% ширины.
источник
height: 100vh
тоже не решение. Установка верхнего контейнера на100vh
высокий уровень и100vw
может вызвать проблемы, если контейнер имеет полосы прокрутки - тогда он будет больше, чем должен быть (и может привести к тому, что полосы прокрутки будут видны без необходимости). Этоheight: 100vh
также вызвало проблемы для нас на более новых устройствах Android (например, Xiaomi Mi 9 с Android 9), где контейнер был бы больше, чем сам экран, и создавал бы ненужную вертикальную полосу прокрутки для тела документа.В начале буквально каждого CSS-файла я использую следующее:
Поле 0 гарантирует, что элементы HTML и BODY не будут автоматически позиционироваться браузером, чтобы иметь место слева или справа от них.
Заполнение 0 гарантирует, что элементы HTML и BODY не будут автоматически толкать все внутри них вниз или вправо из-за настроек браузера по умолчанию.
Варианты ширины и высоты установлены на 100%, чтобы браузер не изменял их размер в ожидании фактического наличия автоматически устанавливаемого поля или отступа, с минимальными и максимальными значениями на случай, если произойдут какие-то странные, необъяснимые вещи, хотя вы вероятно, они не нужны.
Это решение также означает, что, как и я, когда я впервые начал работать с HTML и CSS несколько лет назад, вам не нужно будет указывать свой первый
<div>
вариант,margin:-8px;
чтобы он поместился в углу окна браузера.Перед публикацией я посмотрел свой другой полноэкранный CSS-проект и обнаружил, что все, что я использовал, было только
body{margin:0;}
и ничего, что работало хорошо в течение двух лет, над которыми я работал.Надеюсь, этот подробный ответ поможет, и я чувствую вашу боль. На мой взгляд, глупо, что браузеры должны устанавливать невидимую границу на левой, а иногда и на верхней стороне элементов body / html.
источник
width: 100%
body и html? Да, я понимаю, что с практической точки зренияbody { margin: 0; }
должно быть достаточно в большинстве случаев. Я просто хочу понять более тщательно.Быстрое обновление
Лучшее решение с сегодняшним CSS
источник
overflow: auto
здесь делают магию. Кстати, я использую Chrome.Вот:
источник
Вы также можете использовать JS при необходимости
источник
Пытаться
источник
width: 100%
body и html? Да, я понимаю, что с практической точки зренияbody { margin: 0; }
должно быть достаточно в большинстве случаев. Я просто хочу понять более тщательно.Пожалуйста, проверьте это:
Или попробуйте новый метод Viewport height:
Окно просмотра: если вы используете окно просмотра, значит экран любого размера будет иметь полную высоту экрана.
источник
width: 100%
body и html?Если вам не нужна работа по редактированию собственного CSS-файла и самостоятельному определению правил высоты, наиболее типичные CSS-фреймворки также решают эту проблему с помощью элемента body, заполняющего всю страницу, среди прочих проблем, легко с несколькими размеры видовых экранов.
Например, CSS-платформа Tacit решает эту проблему «из коробки», где вам не нужно определять какие-либо правила и классы CSS, и вы просто включаете файл CSS в ваш HTML.
источник
Работает для всех основных браузеров: FF, Chrome, Opera, IE9 +. Работает с фоновыми изображениями и градиентами. Полосы прокрутки доступны по мере необходимости контента.
источник
Я бы использовал это
Браузер будет использовать,
min-height: 100vh
и если каким-то образом браузер станет немного старше,min-height: 100%
будет запасной вариант.Это
overflow: auto
необходимо, если вы хотите, чтобы body и html увеличивали свою высоту при изменении размера экрана (например, до размера мобильного телефона)источник
Только с 1 строкой CSS ... Вы можете сделать это.
источник
100vh
на самом деле не то, что вы ожидаете для iOS Safari.все ответы на 100% правильные и хорошо объясненные, но я сделал что-то хорошее и очень простое, чтобы сделать его отзывчивым.
здесь элемент будет занимать 100% высоты порта обзора, но когда дело доходит до мобильного просмотра, он не очень хорошо выглядит на портретном представлении (мобильном), поэтому, когда порт обзора уменьшается, элемент будет сворачиваться и перекрываться друг на друга. поэтому, чтобы сделать его немного отзывчивым, вот код. надеюсь, кто-то получит помощь от этого.
Вот демоверсия JSfiddle.
источник
Здесь обновление
источник
О дополнительном пространстве внизу: ваша страница является приложением ASP.NET? Если это так, возможно, в вашей разметке есть все, что нужно. Не забудьте также оформить форму. Добавление
overflow:hidden;
в форму может удалить лишнее пространство внизу.источник
источник
width: 100%
body и html? Да, я понимаю, что с практической точки зренияbody { margin: 0; }
должно быть достаточно в большинстве случаев. Я просто хочу понять более тщательно.В CSS3 появился новый метод.
Это делает ViewPort на 100% равным высоте.
Так что ваш код должен быть
источник