Как изменить порядок гибкости при переносе

Я хотел бы добиться чего-то, что отображается так в зависимости от размера экрана:

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

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

если все размеры фиксированы, я могу управлять с помощью свойства flex order, но размер моего контейнера C не фиксирован, поэтому я не могу использовать статический медиа-запрос.

Есть ли способ добиться этого?

Редактировать: мне удалось достаточно хорошее приближение: в медиа-запросе, выбирающем все экраны, которые могут нуждаться в обертке, я меняю order контейнера B на что-то большое и в то же время я устанавливаю его min-width до 100%, что приводит к принудительному переносу.


person Arthur    schedule 27.05.2016    source источник


Ответы (1)


Вы можете сделать элемент b полной ширины с помощью flex: 0 0 100% и изменить порядок на order: 2 с помощью медиа-запросов DEMO

* {
  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>

person Nenad Vracar    schedule 27.05.2016
comment
К сожалению, это не сработает, если размеры a, b и c заранее неизвестны или меняются во время выполнения. - person Dai; 23.03.2021