I trying to create a layout using CSS Grid like the image (any item is square):
Code I\'m trying:
CSS
.grid-container {
paddin
You can try like below. You were almost good, missing grid-auto-flow:dense;
to allow the item to fill all the spaces.
.grid-container {
padding: 20px;
display: grid;
grid-gap: 20px;
grid-auto-rows: 1fr;
grid-template-columns: repeat(2, 1fr);
grid-auto-flow:dense;
counter-reset: albumList;
}
.item {
position: relative;
background: #ccc;
display:flex;
}
/* Number */
.item:before {
counter-increment: albumList;
content: counter(albumList);
margin:auto;
font-size: 40px;
color: #000000;
}
/* Square */
.item:after {
content: '';
padding-top: 100%;
}
@media screen and (min-width: 40em) and (max-width: 63.99875em) {
/* 640 ~ 1023 */
.grid-container {
grid-template-columns: repeat(3, 1fr);
}
.item:nth-child(6n + 1),
.item:nth-child(6n + 6){
grid-row:span 2;
grid-column:span 2;
}
.item:nth-child(6n + 5) {
grid-column:1;
}
}
@media print, screen and (min-width: 64em) {
/* 1024+ */
.grid-container {
grid-template-columns: repeat(4, 1fr);
}
.item:nth-child(10n + 1),
.item:nth-child(10n + 10){
grid-row:span 2;
grid-column:span 2;
}
.item:nth-child(10n + 8) {
grid-column:1;
}
.item:nth-child(10n + 9) {
grid-column:2;
}
}
<div class="grid-container">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>