If you just want small-scale light-weight implementation, use Minigrid
HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
<script src="https://npmcdn.com/minigrid@3.0.1/dist/minigrid.min.js"></script>
</head>
<body>
<div class="cards">
<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>
</body>
</html>
CSS
.card {
width: 160px;
}
/* Anything bellow here isn't necessary, it's only for the demo */
.card {
background-color: #F25D9C ;
}
/* Set some height to cards */
.card:nth-child(1) {
height: 240px;
}
.card:nth-child(2) {
height: 190px;
}
.card:nth-child(3) {
height: 210px;
}
.card:nth-child(4) {
height: 230px;
}
.card:nth-child(5) {
height: 180px;
}
.card:nth-child(6) {
height: 200px;
}
body {
background-color: #F9F7F7;
}
.cards {
width: 100%;
max-width: 1040px;
margin: 0 auto;
text-align: center;
}
Javascript:
(function(){
var grid;
function init() {
grid = new Minigrid({
container: '.cards',
item: '.card',
gutter: 12
});
grid.mount();
}
// mount
function update() {
grid.mount();
}
document.addEventListener('DOMContentLoaded', init);
window.addEventListener('resize', update);
})();
Demo: http://jsbin.com/wamele/edit?html,css,js,output