У меня есть массивы карт, карта может занимать или 25% ширины экрана, или 50%. Таким образом, его объекты выглядят так: { name: 1, size: 25% }. После фильтрации массива через js я получаю новый массив карт, и мне нужны карты макета в сетке в строках с шириной 100%. Таким образом, это может занять 25 50 25, 50 50, 25 25 50 ... и т. д. Поэтому я думаю, что это можно сделать со свойством grid-auto-flow. Но я еще не так хорош с сетками.
.cards {
display: grid;
width: 100%;
grid-auto-flow: row dense;
}
.card {
border: 1px solid #d1d1d1;
width: 25%;
}
.card-wide {
width: 50%;
}






Вы можете иметь макет из 4 столбцов, используя grid-template-columns: repeat(4, 1fr), а элементы card-wide могут занимать два столбца, используя grid-column: span 2 — см. демонстрацию ниже:
.cards {
display: grid;
width: 100%;
grid-template-columns: repeat(4, 1fr);
grid-auto-rows: 100px; /* set a row height for illustration */
grid-auto-flow: row dense; /* not compulsory here */
}
.card {
border: 1px solid #d1d1d1;
}
.card-wide {
grid-column: span 2; /* occupy two columns*/
}<div class = "cards">
<div class = "card"></div>
<div class = "card card-wide"></div>
<div class = "card"></div>
<div class = "card"></div>
<div class = "card card-wide"></div>
<div class = "card"></div>
<div class = "card"></div>
<div class = "card"></div>
<div class = "card"></div>
<div class = "card card-wide"></div>
<div class = "card"></div>
<div class = "card"></div>
<div class = "card card-wide"></div>
<div class = "card"></div>
<div class = "card card-wide"></div>
<div class = "card"></div>
<div class = "card"></div>
<div class = "card card-wide"></div>
<div class = "card"></div>
<div class = "card"></div>
<div class = "card"></div>
<div class = "card"></div>
<div class = "card"></div>
<div class = "card"></div>
<div class = "card card-wide"></div>
<div class = "card"></div>
</div>tnx, не знаю о пролете 2 =)
Вы можете рассмотреть 1fr для единицы, а затем сказать, будет ли элемент занимать один или два столбца:
.cards {
display: grid;
grid-template-columns:repeat(4,1fr);
grid-auto-flow:dense;
}
/*will take one column by default*/
.card {
background:red;
}
.card-wide {
grid-column:span 2; /*two column*/
background:green;
}
.cards > div {
min-height:50px;
border:1px solid;
}<div class = "cards">
<div class = "card"></div>
<div class = "card"></div>
<div class = "card"></div>
<div class = "card-wide"></div>
<div class = "card"></div>
<div class = "card-wide"></div>
<div class = "card"></div>
<div class = "card-wide"></div>
<div class = "card"></div>
<div class = "card-wide"></div>
<div class = "card"></div>
<div class = "card"></div>
</div>tnx, не знаю о пролете 2 =)
Привет и добро пожаловать в SO. См. Как спросить и укажите Минимальный, полный и проверяемый пример. Что у вас есть до сих пор? Каков желаемый результат?