Skip to main content

Getting started

HTML markup

Shuffle operates on a group of items, giving you the ability to filter or sort them.

<div id="photo-gallery">
<div class="picture-item"></div>
<div class="picture-item"></div>
<div class="picture-item"></div>
<div class="picture-item"></div>
</div>

The easiest way to use Shuffle is to add a data-groups attribute to each of the items in your grid as a valid JSON array of strings.

<figure class="picture-item" data-groups='["nature","city"]'>
<img src="central-park.jpg" alt="Aerial view of Central Park" />
<figcaption>Looking down on central park and the surrounding builds from the Rockefellar Center</figcaption>
</figure>

Alternatively, you can set the delimiter option to a comma (delimiter: ',') and the data-groups attribute will be split on that character.

<figure class="picture-item" data-groups="nature,city">
<img src="central-park.jpg" alt="Aerial view of Central Park" />
<figcaption>Looking down on central park and the surrounding builds from the Rockefellar Center</figcaption>
</figure>

If you were using Bootstrap v4 grids, you could use the col-* classes like this.

<div class="row" id="photo-gallery">
<figure class="col-3 picture-item" data-groups='["animal"]'>
<div class="aspect">
<img src="crocodile.jpg" alt="A close, profile view of a crocodile looking directly into the camera" />
</div>
<figcaption>Crocodile</figcaption>
</figure>
<figure class="col-3 picture-item" data-groups='["city"]'>
<div class="aspect">
<img src="crossroads.jpg" alt="A multi-level highway stack interchange in Puxi, Shanghai" />
</div>
<figcaption>Crossroads</figcaption>
</figure>
<figure class="col-3 picture-item" data-groups='["nature","city"]'>
<div class="aspect">
<img
src="central-park.jpg"
alt="Looking down on central park and the surrounding builds from the Rockefellar Center"
/>
</div>
<figcaption>Central Park</figcaption>
</figure>
<div class="col-1 js-shuffle-sizer"></div>
</div>

JavaScript

Once the markup is ready, initialize Shuffle by giving it the container element and an optional options object.

const Shuffle = window.Shuffle; // Assumes you're using the UMD version of Shuffle (for example, from unpkg.com).
const element = document.getElementById('photo-gallery');
const sizer = element.querySelector('.js-shuffle-sizer');

const shuffleInstance = new Shuffle(element, {
itemSelector: '.picture-item',
sizer: sizer, // could also be a selector: '.js-shuffle-sizer'
});