This basic example has 20 cells.
The cells have absolute positioning percentage width and fixed height.
<div class="thegrid">
<div class="cell" data-color="blue" data-width="1" data-height="4"><div data-text="1"></div></div>
<div class="cell" data-color="green" data-width="1" data-height="1"><div data-text="2"></div></div>
<div class="cell" data-color="green" data-width="2" data-height="1"><div data-text="3"></div></div>
<div class="cell" data-color="pink" data-width="2" data-height="1"><div data-text="4"></div></div>
<div class="cell" data-color="pink" data-width="2" data-height="1"><div data-text="5"></div></div>
<div class="cell" data-color="blue" data-width="2" data-height="1"><div data-text="6"></div></div>
<div class="cell" data-color="green" data-width="3" data-height="1"><div data-text="7"></div></div>
<div class="cell" data-color="green" data-width="1" data-height="3"><div data-text="8"></div></div>
<div class="cell" data-color="blue" data-width="2" data-height="1"><div data-text="9"></div></div>
<div class="cell" data-color="blue" data-width="1" data-height="2"><div data-text="10"></div></div>
<div class="cell" data-color="pink" data-width="1" data-height="1"><div data-text="11"></div></div>
<div class="cell" data-color="pink" data-width="1" data-height="2"><div data-text="12"></div></div>
<div class="cell" data-color="pink" data-width="1" data-height="2"><div data-text="13"></div></div>
<div class="cell" data-color="green" data-width="3" data-height="1"><div data-text="14"></div></div>
<div class="cell" data-color="green" data-width="1" data-height="2"><div data-text="15"></div></div>
<div class="cell" data-color="blue" data-width="1" data-height="2"><div data-text="16"></div></div>
<div class="cell" data-color="green" data-width="1" data-height="1"><div data-text="17"></div></div>
<div class="cell" data-color="green" data-width="1" data-height="1"><div data-text="18"></div></div>
<div class="cell" data-color="blue" data-width="4" data-height="1"><div data-text="19"></div></div>
<div class="cell" data-color="green" data-width="2" data-height="1"><div data-text="20"></div></div>
</div>
.filter {
border: 1px solid #ccc;
color: #fff;
text-align: center;
line-height: 2;
font-size: 110%;
border-radius: 20px;
padding: 0 15px 0 20px;
text-indent: -.4em;
outline: none;
cursor: pointer;
text-shadow: 0 0 2px rgba(0,0,0,.2);
display: inline-block;
position: relative;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-o-user-select: none;
user-select: none;
}
.filter:before {
font-family: "the-grid" !important;
speak: none;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: "\63";
font-size: 130%;
display: inline-block;
line-height: 1;
vertical-align: middle;
margin-top: -2px;
margin-right: 2px;
opacity: 0;
filter: alpha(opacity=0);
}
:checked + .filter:before {
opacity: 1;
filter: alpha(opacity=100);
}
.thegrid .cell > div {
border: 1px solid;
}
.thegrid .cell[data-color="blue"] > div,
.filter.blue {
border-color: #4a8de0;
background-image: radial-gradient(circle at top right, #bed3fd, #4a8de0);
}
.thegrid .cell[data-color="pink"] > div,
.filter.pink {
border-color: #ff54a3;
background-image: radial-gradient(circle at top right, #ffb1cb, #ff54a3);
}
.thegrid .cell[data-color="green"] > div,
.filter.green {
border-color: #69bf46;
background-image: radial-gradient(circle at top right, #c5ff99, #69bf46);
}
// When DOM is ready.
var activeFilters = {blue: true, green: true, pink: true},
gridElement = $('.thegrid');
gridElement.grid(
{
cellsPerRow: 5
});
$('input.toggle').on('change', function()
{
var isActive = $(this).is(':checked'),
color = $(this).data('color'),
filteredCells = [];
activeFilters[color] = isActive;
for (var color in activeFilters) if (activeFilters[color])
{
filteredCells.push('.cell[data-color="' + color + '"]');
}
gridElement
.grid('filter', $(filteredCells.join(',')), false, true)
.grid('redraw');
})
// Alternatively you can do the same like this:
/*
var g1 = new thegrid(
{
cellsPerRow: 5
}),
activeFilters = {blue: true, green: true, pink: true};
$('input.toggle').on('change', function()
{
var isActive = $(this).is(':checked'),
color = $(this).data('color'),
filteredCells = [];
activeFilters[color] = isActive;
for (var color in activeFilters) if (activeFilters[color])
{
filteredCells.push('.cell[data-color="' + color + '"]');
}
g1.filter($(filteredCells.join(',')), false, true)
g1.redraw();
})
*/