Я ищу решение CSS для следующей проблемы. Внутри контейнера у нас есть два блока, выровненных по вертикали так, чтобы они заполняли всю область контейнера, не перекрывались, а при увеличении нижнего из них верхний сокращался (не растягиваясь по размеру контейнера).
Предположим, мы начнем с макета, созданного с помощью кода ниже (посмотрите его в браузере). Следующие два требования должны быть выполнены:
Когда размер .box
изменяется, .top
и .bottom
вместе заполняют всю его область, но высота .bottom
остается фиксированным.
Когда высота из .bottom
изменяется, .top
' высота изменяется; на .box
это не влияет.
Итак, я хочу, чтобы вся эта блочная модель управлялась (например, изменялась с помощью JavaScript) только .box
ширина / высота и .bottoms
* высота все остальное настраивается CSS автоматически.
Код (он далек от решения, и я знаю, что это можно сделать с помощью небольшого количества JavaScript, но давайте найдем чистое решение CSS):
<html>
<head>
<style>
.box {
position:fixed;
top:20px;
left:20px;
width:200px; /* these adjust the whole box size,*/
height:320px; /* children cannot stretch out of these limits*/
background:silver;
}
.top {
clear:left;
height:280px; /* we want it to be like '100%-bottom's height'!*/
margin: 3px;
background: white;
border: red 1px solid;
}
.bottom {
position:absolute;
bottom:0;
//top:0;
left:0;
right:0;
margin: 3px;
height: 27px; /* this adjusts how top & bottom are sized inside the box*/
background: white;
border: blue 1px solid;
}
</style>
</head>
<body>
<div class="box">
<div class="top">Top</div>
<div class="bottom">Bottom</div>
</div>
</body>
</html>