.masonry-with-columns#masonry-with-columns
- for i in (1..15)
div #{i}
View Compiled
body {
margin: 0;
padding: 1rem;
}
.masonry-with-columns {
display: flex;
flex-direction: column;
flex-wrap: wrap;
max-height: 1000px;
div {
flex: 1 0 auto;
background: #EC985A;
color: white;
margin: 0 1rem 1rem 0;
text-align: center;
font-family: system-ui;
font-weight: 900;
font-size: 2rem;
}
@for $i from 1 through 36 {
div:nth-child(#{$i}) {
$h: (random(400) + 100) + px;
height: $h;
line-height: $h;
}
}
}
View Compiled
const numCols = 3;
const colHeights = Array(numCols).fill(0);
const container = document.getElementById('masonry-with-columns');
Array.from(container.children).forEach((child, i) => {
const order = i % numCols;
child.style.order = order;
colHeights[order] += parseFloat(child.clientHeight);
})
container.style.height = Math.max(...colHeights) + 'px';
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.