Come realizzare un Portfolio Filtrabile usando Quicksand.js

Tempo stimato di lettura: 5 minuti, 30 secondi
Pubblicato il 13 Novembre 2012

Per noi Web Designer avere un portfolio in cui sono presenti i nostri lavori è fondamentale, ma ancor più fondamentale è creare un portfolio con qualche effetto che stupisca e stimoli i nostri futuri clienti. Oggi voglio spiegarti come creare un portfolio lavori dove puoi filtrare le categorie e animare le anteprime grazie a un fantastico plugin e qualche riga di codice. Il plugin di cui ti sto parlando è Quicksand.js.

Html

Il documento che dovrai editare sarà composto da Html5 poiché Quicksand per funzionare ha bisogno di alcuni tag Html5 ed in particolare dell’attributo “data”. Questo è tutto l’ Html di cui hai bisogno, sono davvero pochissime righe.

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Tutorial Portfolio Quicksand.js</title>
<link rel="stylesheet" href="css/style.css">

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.quicksand.js"></script>
<script type="text/javascript" src="js/jquery.easing.1.3.js"></script>
<script type="text/javascript" src="js/script.js"></script>

</head>

<body>
<div id="container">

<h1>Tutorial Portfolio Quicksand.js</h1>

<ul id="filter">
<li class="active"><a href="#" class="all">All</a></li>
<li><a href="#" class="web">WEB</a></li>
<li><a href="#" class="mobile">MOBILE</a></li>
<li><a href="#" class="flayer">FLAYER</a></li>
</ul><!--\ end filter -->

<ul class="holderfilter">
<li class="item" data-id="id-1" data-type="web">
<img src="images/web.png" alt="" />
</li>
<li class="item" data-id="id-2" data-type="mobile">
<img src="images/mobile.png" alt="" />
</li>
<li class="item" data-id="id-3" data-type="flayer">
<img src="images/flayer.png" alt="" />
</li>
<li class="item" data-id="id-4" data-type="flayer">
<img src="images/flayer.png" alt="" />
</li>
<li class="item" data-id="id-5" data-type="web">
<img src="images/web.png" alt="" />
</li>
<li class="item" data-id="id-6" data-type="mobile">
<img src="images/mobile.png" alt="" />
</li>
<li class="item" data-id="id-7" data-type="flayer">
<img src="images/flayer.png" alt="" />
</li>
<li class="item" data-id="id-8" data-type="web">
<img src="images/web.png" alt="" />
</li>
<li class="item" data-id="id-9" data-type="flayer">
<img src="images/flayer.png" alt="" />
</li>
<li class="item" data-id="id-10" data-type="mobile">
<img src="images/mobile.png" alt="" />
</li>
</ul><!--\ end holderfilter -->

</div><!--\ end container -->
</body>
</html>

jQuery

Come avrai notato nell’ head del documento Html ho inserito quattro file javascript che ti serviranno per far funzionare il tutto.

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.quicksand.js"></script>
<script type="text/javascript" src="js/jquery.easing.1.3.js"></script>
<script type="text/javascript" src="js/script.js"></script>

Di questi quattro script quello che devi modificare a seconda delle tue esigenze è il quarto (script.js). In questo script devi impostare la “sorgente” e la “destinazione”. La sorgente in questo caso è “#filter”, mentre la destinazione è “ul.olderfilter”. Come puoi vedere la “sorgente” è presente nella terza, settima e nona riga mentre la “destinazione” è presente solo nella quarta riga. Altri valori interessanti sono “duration:750” che indica il tempo dell’animazione in millisecondi e “easing: easeInOutQuad” che indica l’andamento dell’animazione che abbiamo scelto.

$(document).ready(function() {

var $filterType = $('#filter li.active a').attr('class');
var $holder = $('ul.holderfilter');
var $data = $holder.clone();

$('#filter li a').click(function(e) {

$('#filter li').removeClass('active');

var $filterType = $(this).attr('class');

$(this).parent().addClass('active');

if ($filterType == 'all') {

var $filteredData = $data.find('li');
}

else {

var $filteredData = $data.find('li[data-type=' + $filterType + ']');
}

$holder.quicksand($filteredData, {
duration: 750,
easing: 'easeInOutQuad'
});
return false;
});
});

Css

Ora devi solo stilizzare il tutto con i Css, basta qualche regola ed il gioco è fatto.

/* general */
html, body { height: 100%; margin: 0; padding: 0; overflow: hidden; }
body { font: 14px "Helvetica", Arial, sans-serif; color: #000; }
ul { list-style: none; margin: 0; padding: 0; }

#container { width: 960px; margin: 0 auto; }
h1 { text-align: center; }

/* filter */
#filter { width: 330px; margin: 30px 0 30px 10px; overflow: hidden; }
#filter li { display: inline-block; float: left; }
#filter li a { padding: 5px 20px; color: #000; text-decoration: none; display: block;}
#filter li a:hover { text-decoration: underline; }
#filter li.active a { background: #555; color: #fff; }

/* filterolder */
.holderfilter { width:960px; height:850px; overflow:hidden;}
.holderfilter li.item { width: 220px; height: 165px; padding: 10px; float: left; overflow: hidden;}

Visualizza la demo

Conclusioni

Con qualche riga di Html, Css e jQuery puoi avere un fantastico portfolio per ammaliare i tuoi clienti. Naturalmente puoi usare questo script per filtrare qualsiasi altro elemento. Cosa aspetti allora ? Mettiti subito all’opera ed implementa Quicksand nel tuo portfolio personale per filtrare i tuoi lavori. Se ti và nei commenti linkami il risultato che hai ottenuto. Per oggi è tutto, buona lettura e alla prossima.

Codice tratto da: http://goo.gl/8uIYV

Shares