Упорядочить 2 элемента в строке с помощью flexbox

Представьте, что у меня есть следующая разметка

<div class="container">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
</div>

и стиль

.item {
  width: 100%
}

и по определенным причинам я не могу изменить ширину .item Могу ли я организовать 2 элемента в каждой строке, создав родительский контейнер .container, используя flexbox или любым другим способом?

Ответы

Ответ 1

вы можете дать flex: 0 50% для детей divs, не касаясь. item

.item {
  width: 100%
}

.container {
  display: flex;
  flex-wrap: wrap;
}

.container>div {
  flex: 0 50%;
  /*demo*/
  border: red solid;
  box-sizing:border-box
}
<div class="container">
  <div class="item">1</div>
  <div class="item">2</div>
  <div class="item">3</div>
  <div class="item">4</div>
</div>

Ответ 2

Предполагая, что свойство width не должно быть изменено, я могу представить несколько возможных решений, первый из которых является fit-content который имеет удивительно плохую поддержку браузера. Во-вторых, это позиционируемое позиционирование, которое также является плохой идеей из-за ее тонкой природы и вероятности неудачи при разных размерах экрана.

Теперь последние два, очень похожи, нужно использовать два контейнера, дать им display:inline; дайте им ограниченную ширину и заполните их предметами. Если вы этого не заметили, это по существу таблица 2 × 1.

Наконец, вы можете сделать таблицу 2 × 1, и хотя это, вероятно, самое простое решение здесь, неплохо привыкнуть использовать таблицы для размещения других объектов, кроме форм и таблиц. Однако это вариант, который я вам предоставит.

Удачи!