Tutti i componenti

Header responsive accessibile

Un header essenziale ma completo: brand, navigazione, stato attivo, menu mobile controllato da aria-expanded, chiusura con Escape e focus visibile. Semplice da copiare, ma già pronto per una pagina reale.

Demo navigazione

Il menu mobile aggiorna lo stato ARIA, si chiude con Escape e mantiene un link corrente chiaro.

ARIA Responsive Keyboard

Workspace

Area contenuti

Layout pulito per pagine prodotto, strumenti o dashboard leggere.

Active link Escape close Focus ring

Quando usarlo

Per siti statici, dashboard leggere, guide o template che hanno bisogno di una navigazione chiara senza framework.

Cosa risolve

Gestisce apertura, chiusura, stato corrente e interazione da tastiera senza affidarsi solo a classi visuali.

Come adattarlo

Cambia logo, link e breakpoint. La struttura semantica resta uguale e il CSS rimane separato dal comportamento.

Come realizzare un Header Responsive e Accessibile in HTML purissimo e JS

La barra di navigazione, o header, è l'elemento più importante per l'orientamento all'interno di un sito web. Progettare un menu di navigazione che sia reattivo sui dispositivi mobili e allo stesso tempo completamente usabile tramite tastiera o tecnologie assistive richiede l'applicazione di precisi pattern di accessibilità. Molti menu mobile comuni commettono l'errore di nascondere visivamente i link senza rimuoverli dall'ordine di tabulazione, costringendo gli utenti da tastiera a navigare tra elementi invisibili.

Questo componente risolve questo problema strutturale combinando classi CSS per il posizionamento e JavaScript per il controllo degli attributi di accessibilità. Il pulsante di attivazione del menu mobile (l'icona hamburger) include l'attributo aria-expanded (impostato su true o false a seconda dello stato) e fa riferimento tramite aria-controls all'ID del menu di navigazione. Quando il menu è chiuso sui dispositivi mobili, viene impostato su display: none o rimosso dal flusso tramite visibilità, assicurando che non riceva il focus in modo errato.

Per migliorare ulteriormente l'esperienza utente, viene implementata la gestione degli eventi da tastiera: in particolare, la pressione del tasto Escape chiude automaticamente il menu aperto, ripristinando il focus sul pulsante che lo ha attivato. Inoltre, il link corrispondente alla pagina corrente è contrassegnato con aria-current="page", fornendo un'indicazione semantica chiara del posizionamento dell'utente, sia a livello visivo (tramite fogli di stile dedicati) sia per i sintetizzatori vocali.

FAQ rapide sull'header accessibile

A cosa serve l'attributo aria-expanded nel menu mobile?

Comunica alle tecnologie assistive (come gli screen reader) se il sottomenu o la navigazione mobile ad esso collegata è aperta o chiusa. Cambia dinamicamente tramite JavaScript da false a true all'apertura del menu.

Perché il menu si deve chiudere con il tasto Escape?

La chiusura tramite tasto Escape è uno standard di usabilità e accessibilità per i componenti a comparsa (dropdown, modali, menu), permettendo agli utenti che navigano solo da tastiera di uscire rapidamente da un menu senza dover scorrere manualmente tutti i link.

Come viene indicato visivamente e semanticamente il link attivo?

Il link attivo utilizza l'attributo HTML5 aria-current="page". Questo attributo viene riconosciuto dagli screen reader per indicare la pagina corrente ed è utilizzato nel CSS come selettore specifico (es. [aria-current="page"]) per applicare stili distintivi come colori diversi o sottolineature.