如何在换行时更改弹性顺序

Art*_*hur 13 html css css3 flexbox responsive

我想根据屏幕尺寸实现这样渲染的东西:

+---------------------------+
|  A  |       B       |  C  |
+---------------------------+

+---------------+
|   A   |   C   |
|       B       |
+---------------+
Run Code Online (Sandbox Code Playgroud)

如果所有大小都是固定的,我可以使用flex order属性进行管理,但我的C容器的大小不固定,所以我不能使用静态媒体查询.

有没有办法实现这个目标?

编辑:我管理了一个足够好的近似值:在媒体查询中选择所有可能需要换行的屏幕,我order将B容器更改为大容量,同时,我将其设置min-width为100%强制换行.

Nen*_*car 10

您可以使用媒体查询DEMO创建b元素全宽flex: 0 0 100%和更改顺序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;
  }
}
Run Code Online (Sandbox Code Playgroud)
<div class="content">
  <div class="a">A</div>
  <div class="b">B</div>
  <div class="c">C</div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,当“a”、“b”和“c”的大小事先未知或在运行时可变时,这将不起作用。 (2认同)