Come realizzare un sito completamente scrollabile con jQuery

Vediamo come realizzare un sito completamente scrollabile di notevole impatto grazie all’uso di poche righe di codice JQuery. 

Lo scroll è una funzione messa a disposizione da jQuery che può risultare molto interessante da implementare in siti semplici e non troppo ricchi di contenuti in quanto ci permette di muoverci in sotto-pagine utilizzando l’effetto di easing desiderato.

[lightgrey_box]Avviso: nel nostro archivio è presente anche un’altra possibile variante su come realizzare un sito scrollabile. Se ti va puoi consultare l’articolo QUI. [/lightgrey_box]

[button link=”http://www.targetweb.it/tutorial/2012/scrollable-site-jquery/scrollable.html” color=”blue” target=”blank”]Scopri la Demo[/button]

Vediamo come realizzare una pagina del genere partendo dalla struttura HTML e definendo alcune righe di CSS:

Struttura HTML

<div id="container">
		<div class="sezione" id="sezione1" style="background-color:#2674dd;">
			<ul>
				<li>sezione1</li>
				<li><a href="#sezione2">sezione2</a></li>
				<li><a href="#sezione3">sezione3</a></li>
				<li><a href="#sezione4">sezione4</a></li>
			</ul>
		</div>
		<div class="sezione" id="sezione2" style="background-color:#4d26dd;">
			<ul>
				<li><a href="#sezione1">sezione1</a></li>
				<li>sezione2</li>
				<li><a href="#sezione3">sezione3</a></li>
				<li><a href="#sezione4">sezione4</a></li>
			</ul>
		</div>
		<div class="sezione" id="sezione3" style="background-color:#2696dd;">
			<ul>
				<li><a href="#sezione1">sezione1</a></li>
				<li><a href="#sezione2">sezione2</a></li>
				<li>sezione3</li>
				<li><a href="#sezione4">sezione4</a></li>
			</ul>
		</div>
		<div class="sezione" id="sezione4" style="background-color:#44b8da;">
			<ul>
				<li><a href="#sezione1">sezione1</a></li>
				<li><a href="#sezione2">sezione2</a></li>
				<li><a href="#sezione3">sezione3</a></li>
				<li>sezione4</li>
			</ul>
		</div>
</div>

Stili CSS

html,body
{
	margin: 0;
	padding: 0;
}
.sezione
{
	float:left;
	position:relative;
}
.sezione a
{
	color:black;
	text-decoration: none;
}
.sezione ul
{
	float:left;
	list-style: none;
}
.sezione li
{
	float:left;
	margin-left:20px;
}

E ora passiamo allo script in jQuery: con questo definiamo le dimensioni delle sotto-pagine e gestiamo l’animazione. Se vi state chiedendo perché usiamo jQuery per definire le dimensioni e non il foglio di stile (css) la risposta è semplice: le sotto-pagine devono avere altezza e larghezza pari alle dimensioni della finestra del nostro browser, dimensioni che non possono essere ricavate attraverso il css.

Script jQuery Completo

$(document).ready(function()
	{

	    // definisco dimensioni
   	    var width = $(window).width();
 	    var height = $(window).height();

	    $('#container').width(width*2);
	    $('#container').height(height*2);

	    $('.sezione').width(width);
	    $('.sezione').height(height);

	    var elem; 

	    $('.sezione ul li a').click(function()
	    {
	    	elem = $(this);

	    	$('html, body').stop().animate({
	    	scrollTop: $(elem.attr('href')).offset().top,
            scrollLeft: $(elem.attr('href')).offset().left
		    }, 1000,'easeInOutExpo');
		    event.preventDefault();

	    });  
	});

Il click su una delle voci del menu solleverà l’animazione che sfrutterà le funzioni di scrollTop e scrollLeft per “muovere” il visitatore verso la sezione richiesta. Come si può immaginare la funzione scrollTop() agisce sull’asse Y mentre la funzione scrollLeft sull’asse X, l’unione di queste due funzioni all’interno dell’animazione garantisce lo spostamento diagonale nei casi in cui nasce questa necessità.

Conclusioni e Download

Una soluzione sicuramente di notevole impatto e facile da realizzare, un must have per tutti i web designer e programmatori. Di seguito vi lascio ai link per la demo e il download dello script:

[button link=”http://www.targetweb.it/tutorial/2012/scrollable-site-jquery/scrollable.html” color=”blue” target=”blank”]Scopri la Demo[/button]

[viral-download file1=”http://www.targetweb.it/download/2012/scrollable-site-jquery.zip” name1=”Sito Web scrollabile Jquery” url=”http://www.targetweb.it/come-realizzare-un-sito-completamente-scrollabile-con-jquery” message=”Per scaricare il file devi prima condividere su un social network:” tweet=”Come realizzare un sito completamente scrollabile con #jQuery ” thankyou=”Grazie per aver condiviso! Ecco il link qui sotto:”/]

Se ti è piaciuto l’articolo condividilo sui tuoi social network preferiti oppure commenta per lasciare la tua opinione!

0 0 voti
Valutazione dell'articolo
Iscriviti
Notificami
guest

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

13 Commenti
Vecchi
Più recenti Le più votate
Feedback in linea
Visualizza tutti i commenti
Paolo
Paolo
13 anni fa

Interessante e tempestivo.. Mi chiedo se è possibile inserire questa soluzione in una qualsiasi delle pagine di un sito, credo di si..
L’idea è quella di usare lo scrollabile al posto di un tab.
Con IE funziona tutto..?

Paolo
Paolo
Rispondi a  Carlo Ventrella
13 anni fa

Ok grazie, mi metto all’opera..

francesc
francesc
13 anni fa

fichissimo!! grazie !!!

francesca
francesca
13 anni fa

Scusami questa istruzione event.preventDefault(); a cosa serve?

Grazie

Riccardo Mel
Riccardo Mel
Amministratore
Rispondi a  francesca
13 anni fa

Risolve l’effetto ancora “torna su” tipico dei link. Equivale (anche se c’è una sottile differenza) a return false di jQuery.

francesca
francesca
Rispondi a  Riccardo Mel
13 anni fa

aah ho capito!!! grazie 🙂

vida
vida
13 anni fa

Bell’articolo.. molto utile, me lo segno!

Scusa, ma non manca la chiusura del container?!?!

Alberto
Alberto
13 anni fa

Ora non per creare litigi, ma perché mi sembra tanto una copia di questo articolo?
http://www.yourinspirationweb.com/2012/06/05/come-sviluppare-un-sito-con-scroll-animato/

Riccardo Mel
Riccardo Mel
Amministratore
13 anni fa

Ciao Alberto, premesso che bisognerebbe sempre firmarsi nei commenti lasciando quantomeno la propria email (sempre che non si abbia qualcosa da nascondere), ad ogni modo lo farò presente all’autore dell’articolo (che non sono io come si vede chiaramente credo). Ad ogni modo se ti soffermi a leggere il codice noterai che è stato cambiato anche se, come suggerivi, più o meno il “succo” è il medesimo. Oltre a questo noterai che la spiegazione al codice e il testo non è “copiato” come dici tu. Ora passo la parola all’autore dell’articolo.

Alberto
Alberto
13 anni fa

Non vedo per quale motivo dovrei darti la mia e-mail, comunque Riccardo, hai detto:
Ad ogni modo se ti soffermi a leggere il codice noterai che è stato cambiato
quindi è come se mi avessi detto che l’avete solamente modificato, però penso sia stato un tuo errore, forse volevi semplicemente dire che è diverso e non è per niente copiato…

Per quanto riguarda Carlo, è ovvio che “se assomiglia non è uguale” per cui è inutile dire che la parte concernente la spiegazione è diversa, perché mi sembra ovvio.
Io parlavo dei codici e, come hai detto tu:
puoi notare differenze anche nel codice, seppur minime
Comunque abbiamo risolto e tengo a precisare che non volevo creare nessun tipo di problema, ho solo fatto notare che questo articolo è simile a quello linkato precedentemente da me ed ora le spiegazioni mi sono state date.
Bye

Carlo Ventrella
Carlo Ventrella
13 anni fa

Certo certo, la tua è stata una giusta osservazione, io in quanto autore posso dirti che non è stato copiato 🙂 Buon fine settimana!

Rimani Aggiornato
Nuove idee, zero Spam
Ti invieremo solo le ultime novità di articoli o nostri progetti.
Iscrivendoti accetti la nostra privacy poliicy. Una volta iscritto, ricordati di attivare l'iscrizione cliccando sul link ricevuto via mail.
13
0
Esprimete la vostra opinione commentando.x