Ну, вот на этой скрипке у меня есть две дивы, выровненные с display:flex
и flex-grow
: https://jsfiddle.net/h7bm23ts/2/Ведение ребенка DIV с расширяя Flexbox DIV
window.longer = function() {
document.getElementsByClassName("child2")[0].innerHTML += "like this and ";
};
* {
font-family: sans-serif;
}
.wrapper {
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
.box1 {
background-color: beige;
height: 300px;
flex-grow: 2;
}
.box2 {
background-color: cyan;
height: 300px;
flex-grow: 1;
}
.child1 {
background-color: green;
}
.child2 {
background-color: gray;
}
<div class="wrapper">
<div class="box1">
some nonsense
</div>
<div class="box2">
longer nonsense <button onclick="window.longer();"> even longer </button>
<div class="child1">
this child should be able to expand this div
</div>
<div class="child2">
this child should wrap when too much content is appended
</div>
</div>
</div>
Однако содержание в одном из divs является динамическим, и когда на дочерний div его добавляется больше содержимого, родительский div расширяется и блокирует коробки, разрушая макет с помощью нескольких щелчков мыши.
Как заставить серый div расширяться на большее количество контента и заставить его просто принять ширину своего родителя как «строгого» и обернуть его?
EDIT: Я обосновался на https://jsfiddle.net/h7bm23ts/12/.
насчет удаления 'Flex-обертывание: обертывание 'из контейнера? https://jsfiddle.net/h7bm23ts/5/ –
Не совсем понятно, что именно вы пытаетесь сделать. Если бежевый div не разрешен, он должен иметь определенный размер. 'flex-grow: 2' недостаточно. Что-то вроде этого - https://jsfiddle.net/6bzbg2tq/2/ –
@Michael_B: Голубой div по-прежнему толкает бежевый div влево, а после точки содержание в бежевом div будет неразборчивым. Люди действительно предлагали это дважды. – sikerbela