Se sei un web designer o uno sviluppatore web, hai probabilmente incontrato la necessitร di creare un menu di navigazione verticale che tenga traccia della sezione visualizzata durante lo scrolling di una pagina web. Questo tipo di esigenza รจ molto comune quando si sviluppano siti one-page (in cui tutti i contenuti del sito sono presenti in diverse sezioni impilate nella stessa pagina) o pagine molto ricche di contenuti.
In situazioni come questa la navigazione verticale durante lo scroll รจ una funzionalitร estremamente comoda ed utile per migliorare la user experience e rendere la navigazione piรน intuitiva.
In questo articolo, vi mostrerรฒ come realizzare questo tipo di menu di navigazione utilizzando HTML, CSS e jQuery.
Indice
- Quando usare un menu di navigazione verticale (e come funziona)
- Descrizione e aspetto del menu di navigazione verticale
- Codice HTML di Base: struttura della pagina web a navigazione verticale
- Stile CSS del menu di navigazione verticale
- Codice jQuery per la navigazione verticale (e scroll animato)
- Conclusioni
Quando usare un menu di navigazione verticale (e come funziona)
La navigazione verticale (allo scroll) รจ una tecnica particolarmente utile per siti web con una struttura a pagina singola (one-page) o con lunghe pagine di contenuto. Si pensi, ad esempio, a lunghe pagine web contenenti testi, infografiche, video, ecc. Grazie ad un menu di questo genere si consente all’utente di visualizzare immediatamente ciรฒ che รจ di suo interesse senza dover effettuare lo scroll di tutta la lunghezza della pagina.
In pratica, grazie ai link del menu, รจ possibile spostarsi verticalmente all’interno della stessa pagina e, attraverso lo scroll automatico, posizionarsi sul blocco di contenuti di proprio interesse.
Il funzionamente รจ analogo a quello delle classiche ancore HTML che, come sappiamo, consentono di spostarsi in diversi punti della stessa pagina.
Descrizione e aspetto del menu di navigazione verticale
Il nostro obiettivo รจ quello di creare un menu di navigazione verticale che includa una serie di link, ognuno con un’icona (nel nostro esempio un semplice pallino) e un testo accanto.
Le voci del menu saranno posizionate in overlay sul fianco sinistro della pagina dove resteranno sempre visibili a prescidnere dallo scroll (effetto sticky) e si illumineranno a seconda del contenuto visualizzato sullo schermo dall’utente.
Quando l’utente scorre la pagina verso una nuova sezione, il link corrispondente verrร evidenziato, indicando chiaramente la sezione attualmente visualizzata.
Codice HTML di Base: struttura della pagina web a navigazione verticale
Cominciamo con la struttura HTML di base:
<div class="vertical-menu">
<a href="#section1" class="active">
<i></i>
<span>Sezione 1</span>
</a>
<a href="#section2">
<i></i>
<span>Sezione 2</span>
</a>
<a href="#section3">
<i></i>
<span>Sezione 3</span>
</a><!-- Aggiungi altri link per le sezioni desiderate -->
</div>
<div id="section1" style="height: 100vh;">
<!-- Contenuto Sezione 1 -->
</div>
<div id="section2" style="height: 100vh;">
<!-- Contenuto Sezione 2 -->
</div>
<div id="section3" style="height: 100vh;">
<!-- Contenuto Sezione 3 -->
</div>
Abbiamo creato una struttura di base con un menu di navigazione verticale e tre sezioni di contenuto. Ogni link nel menu ha un marcatore (tag <i>) e un testo accanto ad esso.
Stile CSS del menu di navigazione verticale
Ora, diamo un’occhiata al CSS per rendere il nostro menu di navigazione visivamente accattivante:
/* Stile generale */
body {
margin: 0;
font-family: Arial, sans-serif;
}
/* Stile per il menu di navigazione verticale */
.vertical-menu {
position: fixed;
top: 50%;
left: 10px; /* Regola la posizione orizzontale */
transform: translateY(-50%);
z-index: 999;
}
/* Stile per i link del menu */
.vertical-menu a {
display: flex;
align-items: center;
margin-bottom: 12px;
color: #333;
text-decoration: none;
transition: background-color 0.3s;
}
/* Stile per l'icona del pallino */
.vertical-menu a i {
width: 16px;
height: 16px;
border-radius: 50%;
background-color: #222;
margin-right: 10px;
}
/* Stile per il testo accanto all'icona */
.vertical-menu a span {
font-size: 14px;
}
/* Stile per il link attivo */
.vertical-menu a.active i {
background-color: #ff0000;
}
.vertical-menu a.active span {
color: #ff0000;
}
/* Nascondi il testo su dispositivi mobili */
@media (max-width: 768px) {
.vertical-menu a span {
display: none;
}
}
Abbiamo definito lo stile per il menu di navigazione, i link e gli elementi di formattazione per il link attivo. Il nostro menu di navigazione ora ha un aspetto accattivante e i link cambieranno colore quando saranno attivi (ciรฒ in base alla sezione visualizzata dall’utente durante lo scrolling di pagina).
Codice jQuery per la navigazione verticale (e scroll animato)
Infine, useremo jQuery per gestire il comportamento durante lo scroll e aggiornare la classe “active” del link corrente. Ecco il codice jQuery:
$(document).ready(function() {
// Gestisco il click su link del menu
$('.vertical-menu a').click(function() {
var target = $($(this).attr('href'));
// Applico una semplice animazizone allo scroll per rendere piรน gradevole l'effetto
$('html, body').animate({
scrollTop: target.offset().top
}, 500);
return false;
});
// Gestisco lo scroll della pagina per aggiornare la classe "active"
$(window).scroll(function() {
$('.vertical-menu a').each(function() {
var target = $($(this).attr('href'));
var offsetTop = target.offset().top;
var windowHeight = $(window).height();
var scrollPos = $(window).scrollTop();
// Aggiorno la classe active della voce corrispondente al contenuto visualizzato nella finestra del browser
if (scrollPos >= offsetTop - (windowHeight / 2)) {
$('.vertical-menu a').removeClass('active');
$(this).addClass('active');
}
});
});
});
Questo codice jQuery รจ responsabile di due comportamenti principali:
- quando un link nel menu viene cliccato, la pagina scrollerร automaticamente alla sezione corrispondente;
- quando l’utente scorre la pagina (sia attraverso il menu che manualmente), la classe “active” viene aggiornata automaticamente in base alla sezione visualizzata nella finestra del browser.
In questo modo, l’utente puรฒ sempre vedere chiaramente quale sezione sta visualizzando durante lo scroll ed altrettanto agevolmente puรฒ spostarsi tra i vari contenuti con un semplice click su un link.
E’ disponibile una demo funzionante a questa pagina.
Conclusioni
La navigazione verticale durante lo scroll di pagina รจ un elemento di design che puรฒ migliorare notevolmente l’usabilitร del tuo sito web. Con il codice HTML, CSS e jQuery fornito in questa guida sei pronto a implementare questa funzionalitร avanzata nei tuoi progetti web. Agendo sul codice CSS รจ possibile adattare a piacimento l’aspetto del menu alle proprie esigenze grafico-stilistiche ed adattare questa funzionalitร all’interno di ogni progetto.