Как растянуть высоту div, чтобы заполнить Родительский div-CSS
у меня есть страница с ДИВС, как показано ниже
<div id="container">
<div id="A">
</div>
<div id="B">
<div id="B1"></div>
<div id="B2">B2</div>
</div>
<div id="C"></div>
<div id="D">
</div>
</div>
С укладки как:
html, body {
margin: 0;
padding: 0;
border: 0;
}
#B, #C, #D {
position: absolute;
}
#A{
top: 0;
width: 100%;
height: 35px;
background-color: #99CC00;
}
#B {
top: 35px;
width: 200px;
bottom: 35px;
background-color: #999999;
z-index:100;
}
#B2 {
margin-top: -35px;
bottom: 0;
background-color: #FFFFFF;
width: 200px;
overflow: scroll;
}
#B1 {
height: 35px;
width: 35px;
margin-left: 200px;
background-color: #CC0066;
}
#C {
top: 35px;
left: 200px;
right: 0;
bottom: 35px;
background-color: #CCCCCC;
}
#D {
bottom: 0;
width: 100%;
height: 35px;
background-color: #3399FF;
}
Я хочу настроить высоту div B2
чтобы заполнить (или растянуть) весь div B
(помечено зеленой рамкой) и не хочу пересекать нижний колонтитул div D. Вот рабочая скрипка демо(обновлено). Как я могу решить эту проблему??
6 ответов:
используйте свойство "min-height"
Будьте осторожны с отступами, полями и границами:)html, body { margin: 0; padding: 0; border: 0; } #B, #C, #D { position: absolute; } #A{ top: 0; width: 100%; height: 35px; background-color: #99CC00; } #B { top: 35px; width: 200px; bottom: 35px; background-color: #999999; z-index:100; } #B2 { min-height:100%; height:100% margin-top: -35px; bottom: 0; background-color: red; width: 200px; overflow: scroll; } #B1 { height: 35px; width: 35px; margin-left: 200px; background-color: #CC0066; } #C { top: 35px; left: 200px; right: 0; bottom: 35px; background-color: #CCCCCC; } #D { bottom: 0; width: 100%; height: 35px; background-color: #3399FF; }
Если вы собираетесь использовать B2 для целей укладки вы можете попробовать этот "хак"
#B { overflow: hidden;} #B2 {padding-bottom: 9999px; margin-bottom: -9999px}
предположим, что у вас есть
<body> <div id="root" /> </body>
С обычным CSS, вы можете сделать следующее. Смотрите рабочее приложение https://github.com/onmyway133/Lyrics/blob/master/index.html
#root { position: absolute; top: 0; left: 0; height: 100%; width: 100%; }
С flexbox, вы можете
html, body { height: 100% } body { display: flex; align-items: stretch; } #root { width: 100% }
моей целью было создать div, который всегда был ограничен в общем окне браузера фиксированной суммой.
что работало, по крайней мере на firefox, было это
<div style="position: absolute; top: 127px; left: 75px;right: 75px; bottom: 50px;">
поскольку фактическое окно не принудительно прокручивается, div сохраняет свои границы до края окна во время всех повторных размеров.
надеюсь, это сэкономит кому-то немного времени.
Я бы решил это с помощью решения javascript (jQUery), если размеры могут отличаться.
window.setTimeout(function () { $(document).ready(function () { var ResizeTarget = $('#B'); ResizeTarget.resize(function () { var target = $('#B2'); target.css('height', ResizeTarget.height()); }).trigger('resize'); }); }, 500);