Я пытаюсь использовать flex-wrap
и stretch
без особого успеха. Все выглядит хорошо, пока ширина окна меньше высоты. Но как только я изменяю размер экрана, 2 строки становятся 1.
Я планирую использовать flex для отображения любого количества изображений, в основном с размерами 16:9. Итак, было бы здорово сделать макет более строковым, а не столбцовым. Спасибо!
.container {
width: 100%;
height: 100%;
display: flex;
flex-wrap: wrap;
align-items: stretch;
align-content: stretch;
justify-content: center;
position: fixed;
}
.item {
min-width: 100px;
min-height: 100px;
display: flex;
flex-direction: column;
justify-content: center;
position: relative;
flex-grow: 1;
}
.item:nth-child(1){
background: red;
}
.item:nth-child(2){
background: green;
}
.item:nth-child(3){
background: blue;
}
.item:nth-child(4){
background: yellow;
}
<div class = "container">
<div class = "item"></div>
<div class = "item"></div>
<div class = "item"></div>
<div class = "item"></div>
</div>
Внутри есть div с классом container
и 4 div с классом item
вместо этого вы можете использовать сетку css, если вы собираетесь использовать галерею
Чтобы исправить ваш код (второй метод будет более отзывчивым на маленьком экране):
width: 50%;
к .item
, как в первой демонстрации ниже.min-width: 100px
на min-width: 50%;
Но я бы порекомендовал вам использовать display:grid;
как во втором демо (код намного проще.
.container {
width: 100%;
height: 100%;
display: flex;
flex-wrap: wrap;
align-items: stretch;
align-content: stretch;
justify-content: center;
position: fixed;
}
.item {
min-width: 100px;
min-height: 100px;
display: flex;
flex-direction: column;
justify-content: center;
position: relative;
flex-grow: 1;
width: 50%;
}
.item:nth-child(1){
background: red;
}
.item:nth-child(2){
background: green;
}
.item:nth-child(3){
background: blue;
}
.item:nth-child(4){
background: yellow;
}
<div class = "container">
<div class = "item"></div>
<div class = "item"></div>
<div class = "item"></div>
<div class = "item"></div>
</div>
.container {
display: grid;
grid-template-columns: auto auto;
}
.item {
min-width: 100px;
min-height: 100px;
}
.item:nth-child(1){
background: red;
}
.item:nth-child(2){
background: green;
}
.item:nth-child(3){
background: blue;
}
.item:nth-child(4){
background: yellow;
}
<div class = "container">
<div class = "item"></div>
<div class = "item"></div>
<div class = "item"></div>
<div class = "item"></div>
</div>
В итоге я использовал подход сетки, который вы предложили. Одно небольшое изменение: на самом деле я не хочу ограничивать количество столбцов двумя, поэтому я сделал это grid-template-columns: auto auto auto
, и теперь оно отлично работает.
Может быть, вы могли бы предоставить html