Sorting cells.

This basic example has 20 cells.
The cells have absolute positioning percentage width and fixed height.

   

<div class="thegrid">
        <div class="cell" data-width="1" data-height="1" data-new data-name="Lorem" data-price="50"><div></div></div>
        <div class="cell" data-width="1" data-height="1" data-new data-name="Ipsum" data-price="5"><div></div></div>
        <div class="cell" data-width="2" data-height="1" data-name="Dolor" data-price="29"><div></div></div>
        <div class="cell" data-width="2" data-height="1" data-name="Sit" data-price="81"><div></div></div>
        <div class="cell" data-width="2" data-height="1" data-name="Amet" data-price="7"><div></div></div>
        <div class="cell" data-width="2" data-height="1" data-name="Consectetur" data-price="89"><div></div></div>
        <div class="cell" data-width="3" data-height="1" data-new data-name="Adipisicing" data-price="35"><div></div></div>
        <div class="cell" data-width="1" data-height="1" data-new data-name="Elit" data-price="81"><div></div></div>
        <div class="cell" data-width="2" data-height="1" data-name="Vel" data-price="63"><div></div></div>
        <div class="cell" data-width="1" data-height="1" data-new data-name="Quisquam" data-price="52"><div></div></div>
        <div class="cell" data-width="1" data-height="1" data-name="Atque" data-price="6"><div></div></div>
        <div class="cell" data-width="1" data-height="1" data-name="Fuga" data-price="1"><div></div></div>
        <div class="cell" data-width="1" data-height="1" data-new data-name="Voluptate" data-price="57"><div></div></div>
        <div class="cell" data-width="3" data-height="1" data-name="Commodi" data-price="17"><div></div></div>
        <div class="cell" data-width="1" data-height="1" data-name="Quidem" data-price="64"><div></div></div>
        <div class="cell" data-width="1" data-height="1" data-name="Quo" data-price="33"><div></div></div>
        <div class="cell" data-width="1" data-height="1" data-new data-name="Repellat" data-price="17"><div></div></div>
        <div class="cell" data-width="1" data-height="1" data-name="Doloremque" data-price="61"><div></div></div>
        <div class="cell" data-width="1" data-height="1" data-new data-name="Eaque" data-price="92"><div></div></div>
        <div class="cell" data-width="4" data-height="1" data-new data-name="Deserunt" data-price="37"><div></div></div>
        <div class="cell" data-width="1" data-height="1" data-name="Illo" data-price="55"><div></div></div>
        <div class="cell" data-width="1" data-height="1" data-new data-name="Architecto" data-price="21"><div></div></div>
        <div class="cell" data-width="2" data-height="1" data-name="Ex" data-price="71"><div></div></div>
        <div class="cell" data-width="2" data-height="1" data-name="Odit" data-price="93"><div></div></div>
        <div class="cell" data-width="1" data-height="1" data-name="Perferendis" data-price="13"><div></div></div>
        <div class="cell" data-width="2" data-height="1" data-name="Praesentium" data-price="94"><div></div></div>
        <div class="cell" data-width="1" data-height="1" data-new data-name="Nihil" data-price="77"><div></div></div>
        <div class="cell" data-width="1" data-height="1" data-new data-name="Veritatis" data-price="89"><div></div></div>
        <div class="cell" data-width="1" data-height="1" data-new data-name="Nisi" data-price="40"><div></div></div>
        <div class="cell" data-width="1" data-height="1" data-name="Quos" data-price="76"><div></div></div>
    </div>
.sort,
.filter {
    background-color: #cdf;
    color: #66c;
    text-align: center;
    line-height: 2;
    font-size: 130%;
    border-radius: 20px;
    padding: 0 15px 0 15px;
    outline: none;
    cursor: pointer;
    display: inline-block;
    position: relative;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    -o-user-select: none;
    user-select: none;
}
.sort {
    color: #66c;
    border-radius: 20px;
    width: 5em;
    text-indent: -.4em;
}
.filter {
    background-color: #E4C7FF;
    color: #96f;
    border-radius: 20px;
    width: 5em;
    text-indent: -.4em;
}
.sort  ~ .sort {background-color: #fdc;color: #f66;}
.sort:before {
    content: '';
    vertical-align: middle;
    display: inline-block;
    width: 0;
    height: 0;
    border: 8px solid transparent;
    border-width: 8px 6px;
    margin: -9px 6px 0 -6px;
    -webkit-transition: all .3s 0s ease-in-out, -webkit-rotate 0s .3s linear;
    -o-transition: all .3s 0s ease-in-out, -o-rotate 0s .3s linear;
    transition: all .3s 0s ease-in-out, rotate 0s .3s linear;
    -webkit-transform-origin: 50% 75%;
    -moz-transform-origin: 50% 75%;
    -ms-transform-origin: 50% 75%;
    -o-transform-origin: 50% 75%;
    transform-origin: 50% 75%;
}
[data-order=''] + .sort:before {
    -webkit-transition: all .3s 0s ease-in-out, -webkit-rotate 0s .3s linear;
    -o-transition: all .3s 0s ease-in-out, -o-rotate 0s .3s linear;
    transition: all .3s 0s ease-in-out, rotate 0s .3s linear;
}
[data-order='asc'] + .sort:before,
[data-order='desc'] + .sort:before {
    -webkit-transition: .3s ease-in-out;
    -o-transition: .3s ease-in-out;
    transition: .3s ease-in-out;
    border-bottom-color: #666;
    margin-left: 2px;
    margin-right: 6px;
}
[data-order='asc'] + .sort:before {
    -webkit-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
}
[data-order='desc'] + .sort:before {
    -webkit-transform: rotate(180deg);
    -ms-transform: rotate(180deg);
    -o-transform: rotate(180deg);
    transform: rotate(180deg);
}
.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 #def;
    background-image: radial-gradient(circle at top right, #fff, #def);
    overflow: hidden;
}
.thegrid .cell:before {
    content: attr(data-name);
    text-align: center;
    position: absolute;
    top: 50%;
    margin-top: -8px;
    height: 16px;
    line-height: 16px;
    left: 0;
    right: 0;
    font-variant: small-caps;
    font-size: 140%;
    z-index: 1;
    color: #66c;
}
.thegrid .cell[data-new] > div:before {
    content: 'new';
    position: absolute;
    top: 0;
    right: 0;
    width: 4em;
    height: 16px;
    text-align: center;
    font-variant: small-caps;
    line-height: 16px;
    font-size: 140%;
    background-color: #E4C7FF;
    color: #96f;
    z-index: 1;
    -webkit-transform: rotate(45deg) translate(30%, -40%);
    -ms-transform: rotate(45deg) translate(30%, -40%);
    -o-transform: rotate(45deg) translate(30%, -40%);
    transform: rotate(45deg) translate(30%, -40%);
}
.thegrid .cell:after {
    content: '$' attr(data-price);
    position: absolute;
    bottom: 10px;
    right: 13px;
    font-size: 140%;
    color: #f66;
}
$(document).ready(function()
{
    $('.thegrid').grid(
    {
        cellsPerRow: 5,
        sortingCriteria:
        {
            name: {type: 'string'},
            price: {type: 'int'},
        }
    });

    $('input.filter').on('change', function()
    {
        var isActive = $(this).is(':checked'),
            filterCriterion = $(this).data('filter'),
            filteredCells = '.cell' + (isActive ? '[data-' + filterCriterion + ']' : '');

        $('.thegrid')
            .grid('filter', filteredCells, false, true)
            .grid('redraw');
    });
});