Мне нужен flexbox высотой 100% с нижним колонтитулом для детей с 50px. Возможно ли без калькуляции (100% - 50 пикселей)?
вот моя попытка:
body, html{
height:100%;
}
.container {
height: 100%;
display: flex;
flex-direction: column;
background-color:red;
}
.flex-1 {
background-color: yellow;
}
.flex-A {
background-color: blue;
display: flex;
flex-direction: column;
height: 100%;
}
.flex-1-child {
background-color: purple;
overflow-y: auto;
height: calc(100% - 50px);
}
.flex-2-child {
background-color: green;
height: 50px;
}
.text{
height: 500px;
}<div class = "container">
<div class = "flex-1">test</div>
<div class = "flex-A">
<div class = "flex-1-child">
<div class = "text">test2</div>
</div>
<div class = "flex-2-child">
<div>test</div>
</div>
</div>
</div>У меня нет стопроцентной высоты.
Спасибо за помощь.
Нет, это переполнение в порядке, но выход за пределы не должен происходить из-за 100% высоты.






Измените height: calc(100% - 50px); на flex: 1;, и он максимально увеличит свою высоту.
Я думаю, это то, что ты хочешь? https://jsfiddle.net/shuding/3ss44wuk/1
Привет, спасибо за ответ, но почему у меня переполнение контейнера?
@Spawnrad Это потому, что элемент .text имеет высоту 500 пикселей, а контейнер короче этого значения. Вы можете удалить 500px или заменить overflow-y: auto; на overflow-y: hidden;, чтобы избежать переполнения.
Это переполнение нормально. У меня есть еще одно переполнение, кроме этого.
@Spawnrad Понятно. Это вызвано полями элемента body. Добавление margin: 0; в body устранило это переполнение: jsfiddle.net/shuding/3ss44wuk/4
Просто используйте flex: 1 на динамическом элементе.
body, html{
height:100%;
}
.container {
height: 100%;
display: flex;
flex-direction: column;
background-color:red;
}
.flex-1 {
background-color: yellow;
}
.flex-A {
background-color: blue;
display: flex;
flex-direction: column;
height: 100%;
}
.flex-1-child {
background-color: purple;
overflow-y: auto;
flex: 1;
}
.flex-2-child {
background-color: green;
height: 50px;
}
.text{
height: 500px;
}<div class = "container">
<div class = "flex-1">test</div>
<div class = "flex-A">
<div class = "flex-1-child">
<div class = "text">test2</div>
</div>
<div class = "flex-2-child">
<div>test</div>
</div>
</div>
</div>Привет, спасибо за ответ. Как я могу установить контейнер на 100% высоту и не допустить переполнения?
Уберите статическую высоту с .text. Вы устанавливаете его на 500, что выше его родительского элемента, поэтому родительский элемент получит полосу прокрутки.
Это нормально. Родительская полоса прокрутки мне не нужна (контейнер высотой 100% без переполнения)
Удалите
overflow-y:auto, это то, что вы пытаетесь получить?