In questo tutorial vediamo come realizzare un effetto di parallax verticale applicato a immagini a tutto schermo.
DEMODOWNLOADScript utilizzati:
- Supersized – Lo uso per impostare le immagini a tutto schermo
- Stellar – Lo uso per gestire l’effetto della parallax
Importiamoli nell’header della pagina:
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> <script type="text/javascript" src="jquery.stellar.js"></script> <script type="text/javascript" src="supersized.1.0.js"></script>
HTML
Iniziamo dall’html: ho diviso la pagina in tre sezioni più il menu che ci permetterà di scorrere tra le sezioni.
<ul id="menu"> <li><a href="#sez1" class="link_scroll" >Sezione uno</a></li> <li><a href="#sez2" class="link_scroll" >Sezione due</a></li> <li><a href="#sez3" class="link_scroll" >Sezione tre</a></li> </ul> <div class="sez" id="sez1"> <div class="footer"><h1>Questa è la sezione uno.</h1></div> </div> <div class="sez" id="sez2"> <div class="footer"><h1>Questa è la sezione due.</h1></div> </div> <div class="sez" id="sez3"> <div class="footer"><h1>Questa è la sezione tre.</h1></div> </div>
CSS
Nel foglio di stile ho impostato le proprietà basilari, ho impostato lo sfondo per ogni sezione, impostato a fixed il menu per averlo sempre in alto a sinistra indipendentemente dallo scrolling e ho definito le caratteristiche principali della classe size. Notate che non ho definito le dimensioni di questa classe, che faremo gestire dinamicamente a jQuery.
html,body{
padding: 0;
margin: 0;
}
#sez1{
background: url('img1.jpg') no-repeat center center fixed;
}
#sez2{
background: url('img2.jpg') no-repeat center center fixed;
}
#sez3{
background: url('img3.jpg') no-repeat center center fixed;
}
.sez{
float:left;
position: relative;
}
#menu{
position: fixed;
z-index: 999;
}
JQUERY
Eccoci al codice jQuery, il cuore del tutorial.
Per prima cosa ho gestito le dimensioni delle sezioni, che saranno pari a quelle della finestra, poi ho creato una funzione che prevenisse il ridimensionamento della finestra, in modo da avere sempre le giuste dimensione delle sezioni, e infine ho usato lo script supersized.js per gestire gli sfondi. A questo ho passato unicamente le dimensioni delle immagini per permettergli di mantenere il corretto rapporto senza perdere qualità.
var larghezza_finestra = $(window).width();
var altezza_finestra = $(window).height();
// le sezioni hanno tutte la larghezza e altezza della finestra
$('.sez').width(larghezza_finestra);
$('.sez').height(altezza_finestra);
$(window).resize(function()
{
var larghezza_finestra = $(window).width();
var altezza_finestra = $(window).height();
// le sezioni hanno tutte la larghezza e altezza della finestra
$('.sez').width(larghezza_finestra);
$('.sez').height(altezza_finestra);
});
$(function(){
$.fn.supersized.options = {
startwidth: 1600,
startheight: 1200,
};
$('#sez1').supersized();
$('#sez2').supersized();
$('#sez3').supersized();
});
A questo punto ho applicato lo script stellar.js per applicare l’effetto di parallax.
$(function(){
$('.sez').stellar();
});
Infine ho creato una funzione per il menu che è richiamata nel momento in cui un link viene premuto. La funzione estrae l’href che contiene l’id del blocco verso cui la pagina si sposterà e richiama la funzione animate, che eseguirà lo scrolling in un tempo che ho impostato a 2 secondi. Accanto al tempo è possibile anche inserire una funzione di easing, in modo da rendere ancora più originale l’effetto.
$('.link_scroll').click(function(e)
{
e.preventDefault();
// estraggo link
var attr = $(this).attr('href');
// scroll verso attr
$('html, body').stop().animate({ scrollTop: $( attr ).offset().top }, 2000);
});
Hai trovato interessante l’articolo? Commenta per far sapere a tutti cosa ne pensi





![Come acquistare prodotto Amazon minor prezzo! [Guida]](https://m2.paperblog.com/i/288/2882378/come-acquistare-un-prodotto-su-amazon-al-mino-L-l7i3wY-175x130.png)
