Ответ 1
Просто добавьте height: 100%;
к стилю #B2
. min-height
не требуется.
У меня есть страница с divs, как показано ниже
<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. Вот рабочая скрипка демо (обновлено). Как я могу решить эту проблему?
Просто добавьте height: 100%;
к стилю #B2
. min-height
не требуется.
Используйте свойство "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}
То, что подходит моей цели, было создание div, который всегда был ограничен в общем окне браузера фиксированной суммой.
Что работало, по крайней мере, на firefox, было это
<div style="position: absolute; top: 127px; left: 75px;right: 75px; bottom: 50px;">
Поскольку фактическое окно не принудительно прокручивается, div сохраняет свои границы до края окна во время повторного калибровки.
Надеюсь, что это кому-то поможет.
Предположим, что у вас есть
<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%
}
Я бы разрешил его с помощью 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);