Упорядочить 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, и хотя это, вероятно, самое простое решение здесь, неплохо привыкнуть использовать таблицы для размещения других объектов, кроме форм и таблиц. Однако это вариант, который я вам предоставит.
Удачи!