Высота тела 100% отображение вертикальной полосы прокрутки
из любопытства, учитывая приведенный ниже пример, почему наличие поля на # container div вызывает появление вертикальной полосы прокрутки в браузере? Контейнер намного меньше по высоте, чем высота корпуса, которая установлена на 100%.
Я установил отступы и поля в 0 для всех элементов, кроме контейнера#. Обратите внимание, что я намеренно опустил абсолютное позиционирование на #container div. В этом случае, как браузер вычисляет высоту тела и как на это влияет маржа?
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
* { padding:0; margin:0;}
html, body { height:100%; }
#container
{
padding:10px;
margin:50px;
border:1px solid black;
width: 200px;
height: 100px;
}
</style>
</head>
<body>
<div id='container'>
</div>
</body>
</html>
например, на JSFiddle
11 ответов:
если вы рисуете фоны
html
иbody
(давая каждому свой цвет), вы быстро заметите, чтоbody
сдвигается вниз вместе с#container
и#container
сам не смещается от вершиныbody
на всех. Это побочный эффект маржа развал, который я подробно освещаю здесь (хотя этот ответ описывает немного другую настройку).именно это поведение вызывает полосу прокрутки появляются, так как вы объявили
body
чтобы иметь 100% высотуhtml
. Обратите внимание, что фактическая высотаbody
не влияет, так как поля никогда не включаются в вычисления высоты.
немного поздно, но, может быть, это кому-то поможет.
добавлять
float: left;
до#container
удаляет полосу прокрутки, как говорит W3C:•поля между плавающей коробкой и любой другой коробкой не разрушаются (даже между поплавком и его дочерними элементами в потоке).
основываясь на ответе @BoltClock♦, я исправил его, обнулив поле...
такhtml,body, #st-full-pg { height: 100%; margin: 0; }
работает, где идентификатор "st-full-pg" присваивается панели div (которая дополнительно содержит заголовок панели и тело панели)
Я нашел решение: добавить отступ: 1px 0; к телу предотвращает появление вертикальных полос прокрутки
html, body { height: 100%; overflow: hidden; }
Если вы хотите удалить прокрутку тела, добавьте следующий стиль:
body { height: 100%; overflow: hidden; }
Я видел эту проблему исправлена до того, как вы положили все содержимое
body
в div называется wrap. Стиль обертывания должен быть установлен вposition: relative; min-height: 100%;
. На позицию#container
div 50px сверху и слева поместите div внутри обертки с прокладкой, установленной на 50px. Поля не будут работать с wrap и div, которые мы только что сделали, но они будут работать в#container
и все внутри него.
добавлять
float:left;
приятно, но будет мешать центральному горизонтальному позиционированию с помощьюmargin:auto;
Если вы знаете, насколько велика ваша маржа, вы можете учитывать это в своем проценте высоты, используя calc:
height: calc(100% - 50px);
поддержка браузера хорошая, но только IE11+ https://caniuse.com/#feat=calc