#html #positioning
#HTML #позиционирование
Вопрос:
Я изо всех сил пытаюсь автоматически настроить HTML DIV до нижней части страницы:
<div style='position:absolute; top:0; bottom:0; left:0; right:0; margin:auto; font-size:10vmin; background:orange'>
<header style="display:flex; justify-content:center; align-items:center; height:26px; font:11px/24px Arial; border:none; color:#2E3F58; background:#B1DBFF 0% 0% no-repeat padding-box;">Header 1</header>
<button type="button" style="display:inline-flex; align-items:center; font:11px/24px Arial; border:none; color:black; background:none; cursor:pointer; outline:0 !important">Header 2</button>
<table style="height:26px; width:100%; color:#FFF; background:red"></table>
<div id="content" style="text-align:center; color:silver; font-size:10vmin; top:0; bottom:0; left:0; right:0; background:green">content</div>
</div>
https://jsfiddle.net/0nx9zbmt/
Это та часть, которая не настраивается до нижней части, как я хотел бы сделать, поэтому вся нижняя часть веб-страницы становится зеленой:
<div id="content" style="text-align:center; color:silver; font-size:10vmin; top:0; bottom:0; left:0; right:0; background:green">content</div>
Есть идеи? Я новичок в модели flex box и не могу использовать ее должным образом.
Ответ №1:
Использовать height: 100%;
для содержимого div
<div id="content" style="height: 100%; text-align:center; color:silver; font-size:10vmin; top:0; bottom:0; left:0; right:0; background:green">content</div>
Примечание: попробуйте использовать CSS
классы вместо встроенных CSS
, чтобы это выглядело чище и было легко понять код.
также top:0; bottom:0; left:0; right:0;
не будет иметь эффекта без свойства position.
Комментарии:
1. Спасибо, но тогда я получаю полосу прокрутки с правой стороны, которая не предназначена.
2. затем вам нужно уменьшить высоту заголовка 1 заголовка 2 и красного раздела (таблицы) следующим образом: height: calc(100% — 90 пикселей); установите для этого значение содержимого div вместо 100%
Ответ №2:
Если вам нужно настроить положение элемента, вы должны добавить position: relative;
position: absolute;
или position: fixed;
к стилям элемента. В противном случае ваши top
значения , bottom
, left
и right
будут проигнорированы.
В вашем случае. Вы можете добавить position: absolute;
, потому что вы задаете ему абсолютную позицию. Также вам нужно удалить это top: 0;
, потому что вы не устанавливаете никакого значения top
. Вам просто нужно, чтобы он был внизу.
Итак, это ваш окончательный код.
<div style='position:absolute; top:0; bottom:0; left:0; right:0; margin:auto; font-size:10vmin; background:orange'>
<header style="display:flex; justify-content:center; align-items:center; height:26px; font:11px/24px Arial; border:none; color:#2E3F58; background:#B1DBFF 0% 0% no-repeat padding-box;">Header 1</header>
<button type="button" style="display:inline-flex; align-items:center; font:11px/24px Arial; border:none; color:black; background:none; cursor:pointer; outline:0 !important">Header 2</button>
<table style="height:26px; width:100%; color:#FFF; background:red"></table>
<div id="content" style="text-align:center; color:silver; font-size:10vmin; position: absolute; bottom:0; left:0; right:0; background:green;">content</div>
</div>
Подробнее о css position
: https://www.w3schools.com/css/css_positioning.asp
Комментарии:
1. Когда я запускаю ваш код, между красной таблицей и зеленым разделом содержимого появляется оранжевая секция. Я имел в виду, что вся нижняя часть должна стать зеленой под красной таблицей.
2. Извините, вам нужно добавить
width: 100%
и избавиться от всего позиционирования. Таким образом, зеленый элемент получит все оставшееся пространство.