包装时如何更改弹性顺序
How to change the flex order when wrapping
我想根据屏幕尺寸实现这样的渲染:
+---------------------------+
| A | B | C |
+---------------------------+
+---------------+
| A | C |
| B |
+---------------+
如果所有尺寸都是固定的,我可以使用 flex order
属性
但是我的 C 容器的大小不是固定的,所以我不能使用静态媒体查询。
有办法实现吗?
编辑:
我管理了一个足够好的近似值:在媒体查询中选择 可能 需要换行的所有屏幕,我将 B 容器的 order
更改为大的,同时,我将其 min-width
设置为 100%,这会强制换行。
您可以使用 flex: 0 0 100%
使 b
元素全宽,并使用媒体查询 DEMO
将顺序更改为 order: 2
* {
box-sizing: border-box;
}
body, html {
margin: 0;
padding: 0;
}
.content {
display: flex;
flex-wrap: wrap;
}
.b {
background: lightblue;
}
.a, .b, .c {
border: 1px solid black;
flex: 1;
padding: 10px;
}
@media(max-width: 768px) {
.b {
flex: 0 0 100%;
order: 2;
}
}
<div class="content">
<div class="a">A</div>
<div class="b">B</div>
<div class="c">C</div>
</div>
我想根据屏幕尺寸实现这样的渲染:
+---------------------------+
| A | B | C |
+---------------------------+
+---------------+
| A | C |
| B |
+---------------+
如果所有尺寸都是固定的,我可以使用 flex order
属性
但是我的 C 容器的大小不是固定的,所以我不能使用静态媒体查询。
有办法实现吗?
编辑:
我管理了一个足够好的近似值:在媒体查询中选择 可能 需要换行的所有屏幕,我将 B 容器的 order
更改为大的,同时,我将其 min-width
设置为 100%,这会强制换行。
您可以使用 flex: 0 0 100%
使 b
元素全宽,并使用媒体查询 DEMO
order: 2
* {
box-sizing: border-box;
}
body, html {
margin: 0;
padding: 0;
}
.content {
display: flex;
flex-wrap: wrap;
}
.b {
background: lightblue;
}
.a, .b, .c {
border: 1px solid black;
flex: 1;
padding: 10px;
}
@media(max-width: 768px) {
.b {
flex: 0 0 100%;
order: 2;
}
}
<div class="content">
<div class="a">A</div>
<div class="b">B</div>
<div class="c">C</div>
</div>