it-swarm.com.ru

Расположите 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 или любым другим способом?

15
PranavPinarayi

вы можете дать flex: 0 50% детям div, не касаясь .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>

34
dippas

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

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

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

Удачи!

0
Ben