好吧,我的情况如下:
我使用flexbox一行有3个div:1 | 2 | 3
div1
的宽度是固定的。Div2
“flexes”以占用1
和3
之间的可用空间,但应尽量减小其内容的大小(大小不一)。div3
需要是它包含的内容的宽度,它是可变的。
所以我有:
1 (fixed with) | 2 (flexes, but minimal width should be the width of the content) | 3 (width of content)
我想实现的是,如果所有三个div所在的容器变得太小,无法满足每个div的最小宽度要求,那么中间部分(div
2
)将被向下推。所以我得到:1 | 3
-----
2
我知道如何使用javascript实现这一点,但如果事先不知道
2
和3
内容的宽度,那么是否可以使用纯CSS解决方案?这里有一个代码笔,它还没有做我想做的,但可以作为一个起点来节省你一些时间:http://codepen.io/anon/pen/grBwEp
注:我知道怎样才能得到
1 | 3
-----
2
通过更改
1 | 2 | 3
属性。但是,我不能为开关设置固定的断点,因为我不知道内容的宽度,而且内容会有所不同。。。 最佳答案
如果添加child2
并按如下所示最后(width: 100%
)排序,则可以强制第二个子项(order: 3
)位于新行中:
.container {
display: flex;
flex-wrap: wrap;
}
.container > div {
text-align: center;
color: white;
font-weight: bold;
}
.container > div.child1 {
width: 150px;
background-color: red;
order: 1;
}
.container > div.child2 {
background-color: blue;
order: 3;
width:100%;
}
.container > div.child3 {
background-color: green;
order: 2;
}
<div class="container">
<div class="child1">1 (fixed width)</div>
<div class="child2">2 (flexes, but minimal width should be the width of the content)</div>
<div class="child3">3 (width of content)</div>
</div>
关于html - 纯CSS解决方案可将3个元素的中间部分压低,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36908513/