【发布时间】:2016-04-29 00:47:07
【问题描述】:
好的,我的情况如下:
我使用 flexbox 连续有 3 个 div:
1 | 2 | 3
div 1 的宽度是固定的。 Div 2 'flexes' 以占用1 和3 之间的可用空间,但至少应为其内容的大小(变化)。 div 3 需要是它所包含的内容的宽度,因人而异。
所以我有:
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 解决方案?
这是一个尚未完成我想要的操作的 codepen,但可以用作为您节省一些时间的起点:http://codepen.io/anon/pen/grBwEp
注意:我知道如何获得1 | 2 | 3 或
1 | 3
-----
2
通过更改order 属性。但是,我无法为 switch 设置固定断点,因为我不知道内容的宽度,并且内容各不相同...
【问题讨论】:
-
您可以更改 div 的顺序,例如 1、3、然后 2,以便使用 css 轻松修复
-
@AtifAzad 不,因为如果它们在一行上,它们也将是
1 | 3 | 2。而且我无法根据断点更改顺序,因为我不知道宽度。 -
查看下面的答案
-
由于不能使用媒体查询,答案是否定的,没有 CSS Flexbox 解决方案。 CSS 无法检测到溢出来更改顺序。
-
是的。我已经玩了好几个小时了..只能用 JS 来完成....