JSFiddle - React, Tailwind, and code Playground

by neal_fletcher

HTML

<script src="http://www.nealfletcher.co.uk/js/jquery.imagesloaded.js"></script>
<script src="http://isotope.metafizzy.co/jquery.isotope.min.js"></script>
<script src="http://www.nealfletcher.co.uk/sb-test/js/hashchange.min.js"></script>
<script src="http://www.nealfletcher.co.uk/sb-test/js/jquery.ba-hashchange.js"></script>
<script src="http://www.nealfletcher.co.uk/js/gutterwidth.js"></script>
<div id="content-wrap">
    <div class="main-grid">
        
        <div class="grid-block-filter"> 
            <a href="#" data-filter=".test">
        <div class="grid-block nav-block" style="background-color: pink;">click</div>
            </a>
        </div>
        
        <div class="grid-break test" style="background-color: orange"></div>
        
        <div class="grid-block nav-block" style="background-color: pink;"></div>
        <div class="grid-block nav-block" style="background-color: pink;"></div>
        <div class="grid-block nav-block" style="background-color: pink;"></div>
        <div class="grid-block nav-block" style="background-color: pink;"></div>
        <div class="grid-block nav-block" style="background-color: pink;"></div>
        <div class="grid-block nav-block" style="background-color: pink;"></div>
        <div class="grid-block nav-block" style="background-color: pink;"></div>
        <div class="grid-block nav-block" style="background-color: pink;"></div>
        <div class="grid-block nav-block" style="background-color: pink;"></div>
        <div class="grid-block nav-block" style="background-color: pink;"></div>
        <div class="grid-block nav-block" style="background-color: pink;"></div>
        
    </div>
</div>

CSS

#content-wrap {
    position: absolute;
    width: 100%;
    height: auto;
    top: 80px;
    left: 0;
}
.main-grid {
    max-width: 450px;
    position: relative;
    margin: 0 auto;
    top: 0;
    left: 50%;
    margin-left: -225px;
}
.grid-block {
    width: 220px;
    height: 220px;
    margin-bottom: 10px;
}

.grid-break {
    position: relative;
    width: 100%;
    height: 200px;
    background-color: orange;
    margin-bottom: 10px;
}
/*
ISOTOPE CONTENT ------------------
*/
 .isotope-item {
    z-index: 2;
}
.isotope-hidden.isotope-item {
    z-index: 1;
}
.isotope, .isotope .isotope-item {
    /* change duration value to whatever you like */
    -webkit-transition-duration: 0.5s;
    -moz-transition-duration: 0.5s;
    -ms-transition-duration: 0.5s;
    -o-transition-duration: 0.5s;
    transition-duration: 0.5s;
}
.isotope {
    -webkit-transition-property: height, width;
    -moz-transition-property: height, width;
    -ms-transition-property: height, width;
    -o-transition-property: height, width;
    transition-property: height, width;
}
.isotope .isotope-item {
    -webkit-transition-property: -webkit-transform, opacity;
    -moz-transition-property: -moz-transform, opacity;
    -ms-transition-property: -ms-transform, opacity;
    -o-transition-property: -o-transform, opacity;
    transition-property: transform, opacity;
}
/**** disabling Isotope CSS3 transitions ****/
 .isotope.no-transition, .isotope.no-transition .isotope-item, .isotope .isotope-item.no-transition {
    -webkit-transition-duration: 0s;
    -moz-transition-duration: 0s;
    -ms-transition-duration: 0s;
    -o-transition-duration: 0s;
    transition-duration: 0s;
}

JavaScript

$(document).ready(function () {

    var $container = $('.main-grid');
    // initial filter
    var hashfilter = location.hash && ('.' + location.hash.substr(1)) || '.nav-block';

    $container.imagesLoaded(function () {
        $container.isotope({
            filter: hashfilter,
            itemSelector: '.grid-block, .grid-break',
            animationEngine: 'best-available',
            masonry: {
                columnWidth: 8,
                gutterWidth: 25
            }
        });
    });

    $('.grid-block-filter a').click(function () {
        var selector = jQuery(this).attr('data-filter');
        var prettyselector = selector.substr(1);
        location.hash = prettyselector;
        return false;
    });

    $(window).hashchange(function () {

        var hashfilter = location.hash && ('.' + location.hash.substr(1)) || '*';


        $container.isotope({
            filter: hashfilter + ', .nav-block'
        });

    });
});