Breadcrumb accessibili in Webflow (manuali + auto)

Intermedio 32:04 webflowbreadcrumbsaccessibilitànavigazionecomponenti

Costruisci due sistemi di breadcrumb accessibili e riutilizzabili in Webflow — uno manuale che configuri a mano e uno automatico che legge l'URL per te.

Punti chiave

  • I breadcrumb vanno in una lista ordinata, non non ordinata — l'ordine conta (home per prima, pagina corrente per ultima), e un <ol> lo comunica sia agli screen reader sia ai motori di ricerca.
  • L'accessibilità sta in pochi attributi: aria-label sul landmark nav, aria-current="page" sull'ultimo link, e aria-hidden su ogni separatore visivo così non viene letto ad alta voce.
  • Una tappa intermedia che non porta da nessuna parte (come un percorso di collezione CMS) non deve mai sembrare o comportarsi come un link — aria-disabled più un po' di CSS la trasformano in semplice testo non cliccabile.
  • Costruire il breadcrumb come componente Webflow con proprietà significa controllare l'intera traccia — separatori, etichette, link, visibilità — da un solo posto invece di modificare decine di pagine a mano.
  • La versione manuale ti dà pieno controllo su siti piccoli e piatti; quella automatica legge l'URL della pagina e si costruisce da sola, ed è ciò che vuoi per CMS e strutture molto annidate.

Capitoli del video

  1. 00:00 Intro
  2. 01:43 Struttura del progetto Webflow
  3. 04:24 Costruire il breadcrumb manuale
  4. 11:49 Trasformare il breadcrumb manuale in un componente
  5. 16:37 Testare il breadcrumb manuale
  6. 22:11 Costruire il breadcrumb automatico
  7. 25:37 Trasformare il breadcrumb automatico in un componente
  8. 28:00 Testare il breadcrumb automatico
  9. 31:14 Outro

Alla fine di questa lezione avrai due sistemi di breadcrumb accessibili e riutilizzabili da mettere in qualsiasi progetto Webflow — uno manuale, per il pieno controllo sui siti semplici, e uno automatico, che legge l’URL della pagina e costruisce la traccia da solo per CMS e strutture molto annidate.

I breadcrumb sembrano banali finché non provi a farli bene: una lista ordinata perché l’ordine conti davvero, un landmark nav che uno screen reader possa annunciare, separatori che non vengono letti ad alta voce, e nessun link morto che finge di essere cliccabile. Costruiremo entrambe le versioni come veri componenti Webflow con proprietà, così regoli l’intera traccia da un solo posto invece di modificare ogni pagina a mano.

La versione manuale è perfetta quando la struttura è poco profonda e vuoi definire tu ogni passo. Quella automatica è pensata per scalare — capisce da sola le etichette, i link e persino quali segmenti non sono pagine reali.

Come funziona

La base accessibile è la stessa per entrambe. La traccia è un elemento nav con aria-label="breadcrumb", così gli screen reader lo annunciano come breadcrumb e non come un nav generico. Dentro va una lista ordinata — non non ordinata — perché i breadcrumb sono sequenziali: home per prima, pagina corrente per ultima, e quell’ordine è informazione. Ogni elemento è un list item che contiene un link, e l’ultimo link riceve aria-current="page" per marcare la pagina in cui ti trovi. I separatori sono decorativi, quindi vanno tenuti fuori dall’albero di accessibilità: il separatore a carattere (un >) porta aria-hidden="true", il separatore a icona è marcato come decorativo così viene saltato, e la terza opzione è un separatore in puro CSS generato con una regola ::after (uno / dopo ogni elemento tranne l’ultimo) — nessun elemento in più. Esistono tutti e tre perché il componente possa offrire la scelta; passi dall’uno all’altro con una proprietà di visibilità.

Il componente manuale ti mette al comando. Una volta costruita la struttura la converti in un componente Webflow ed esponi tutto come proprietà, raggruppate per scopo: una proprietà di visibilità e una di contenuto per ogni separatore, e per ogni livello le proprietà per etichetta, link e visibilità dell’elemento. È questo che lo rende riutilizzabile — su una pagina statica poco profonda potresti mostrare solo home più la pagina corrente e nascondere i livelli in mezzo; su un articolo del blog ne mostri di più. Il dettaglio di accessibilità importante è il problema della tappa morta: un URL come /blog/posts/post-slug ha un segmento posts che non è una pagina reale. Lasciato così sembra e si comporta come un link rotto. La soluzione è aria-disabled="true" su quel link (esposto come proprietà, così lo imposti per livello) più una breve regola CSS che toglie i pointer events, eredita il colore del testo circostante e rimuove la sottolineatura — così viene letto come semplice testo, onestamente.

Il componente automatico pensa al posto tuo. Parte da una copia ridotta di quello manuale — solo l’elemento home e un template per il livello corrente — più un piccolo script. Al caricamento lo script legge l’URL corrente e lo divide in segmenti sulle slash. Per ogni segmento tranne il primo (home) e l’ultimo (pagina corrente) crea un list item, usa lo slug come etichetta sostituendo i trattini con spazi, e poi verifica se quel percorso parziale corrisponde a una pagina reale: se sì, rende un vero link; se no — come un percorso di collezione CMS — rende semplice testo, così non pubblichi mai un link rotto. L’ultimo segmento viene lasciato com’è se hai scritto un’etichetta personalizzata (comodo per legare un campo CMS come il titolo dell’articolo), oppure riempito dall’URL se l’hai lasciato vuoto. Questa verifica del percorso è anche il motivo per cui potresti vedere un innocuo 404 nella console: lo script ha fatto un ping su un segmento, non ha trovato nulla e lo ha silenziosamente declassato a testo.

Lo script trova ciò che gli serve tramite due piccoli attributi di logica — uno che marca il wrapper del breadcrumb come componente, e uno che marca l’ultimo list item come livello corrente. Sono per il codice, non per l’accessibilità, e arrivano già impostati nel cloneable, così non ci devi pensare.

Come si usa

  1. Clona il progetto. Prendi il cloneable Webflow. Include entrambi i componenti — breadcrumb manual e breadcrumb auto — con gli attributi di accessibilità, i tre stili di separatore e lo script completamente commentato già collegati.

  2. Costruisci la traccia (manuale). Un nav con aria-label="breadcrumb" avvolge una lista ordinata; ogni list item contiene un link. Dai all’ultimo link aria-current="page". Aggiungi i separatori (carattere con aria-hidden="true", un’icona decorativa, o il CSS ::after), poi seleziona tutto il wrapper e convertilo in componente.

  3. Esponi le proprietà. Raggruppale in modo pulito — visibilità + contenuto per ogni separatore, e per ogni livello un link, un’etichetta di testo e un interruttore di visibilità. Sui livelli intermedi esponi anche una proprietà aria-disabled (default false) per le tappe che non portano da nessuna parte.

  4. Configura per pagina (manuale). Inserisci il componente, scegli un separatore (nascondi gli altri due), mostra solo i livelli che ti servono e imposta etichetta e link di ciascuno. Per un segmento che non è una pagina reale, imposta la sua proprietà aria-disabled a true così viene reso come semplice testo.

  5. Oppure passa all’automatico. Inserisci breadcrumb auto, nascondi i separatori che non vuoi, e basta — lo script costruisce il resto dall’URL. Tocca la proprietà di testo dell’ultimo livello solo quando vuoi sovrascrivere uno slug lungo (o legarla a un campo CMS).

  6. Pubblica e prova sul link live. Clicca in giro: home deve arrivare alla homepage, i segmenti reali devono linkare, quelli che non sono pagine devono essere semplice testo, e la pagina corrente deve essere etichettata e marcata. Un 404 sparso nella console per un segmento inesistente è normale.

Guida alla configurazione

Attributo Valori Default Cosa fa
aria-label breadcrumb Va sull'elemento nav che avvolge tutta la traccia. Nomina il landmark così gli screen reader lo annunciano come navigazione breadcrumb, e non come l'ennesimo nav senza nome.
aria-hidden true Va su un separatore visivo (il carattere >, oppure l'icona). Impostalo a true così gli screen reader saltano il simbolo decorativo invece di leggerlo tra un elemento e l'altro.
aria-current page Va sull'ultimo link — la pagina corrente. Dice alle tecnologie assistive quale tappa è la pagina su cui si trova davvero il visitatore.
aria-disabled true / false false Va su una tappa intermedia che non porta da nessuna parte (come un percorso di collezione CMS). Impostalo a true per marcarla come non interattiva; con un po' di CSS viene letta come semplice testo invece che come link morto.

Risorse

Domande frequenti

Come costruisco un breadcrumb accessibile in Webflow?
Avvolgi la traccia in un elemento nav con un aria-label, metti gli elementi in una lista ordinata, dai all'ultimo link aria-current="page" e nascondi ogni separatore visivo con aria-hidden. Così gli screen reader hanno una navigazione con nome corretto e nell'ordine giusto, davvero utilizzabile.
I breadcrumb devono usare una lista ordinata o non ordinata?
Una lista ordinata. Un breadcrumb è una sequenza dalla homepage fino alla pagina corrente, e quell'ordine porta un significato — un <ol> lo comunica correttamente alle tecnologie assistive e ai motori di ricerca, cosa che una lista non ordinata non farebbe.
Come gestisco un segmento di breadcrumb che non è una pagina reale?
Non lasciarlo come link attivo verso il nulla. Aggiungi aria-disabled a quell'elemento e un po' di CSS per togliergli i pointer events e lo stile da link, così viene letto come semplice testo — corretto sia per chi vede sia per gli screen reader. Capita spesso con i percorsi di collezione CMS come /blog/posts/.
Breadcrumb manuali o automatici — quale dovrei usare?
Scegli il componente manuale per siti piccoli e poco profondi, dove vuoi impostare tu ogni etichetta e link. Scegli quello automatico per siti guidati dal CMS o molto annidati: legge l'URL della pagina e costruisce la traccia da solo, così non configuri nulla pagina per pagina.
Perché il breadcrumb automatico registra un 404 nella console del browser?
È previsto, non è un bug. Lo script fa un ping su ogni segmento dell'URL per verificare se corrisponde a una pagina reale; quando un segmento (come un percorso di collezione CMS) non c'è, cattura il 404 e rende quella parte come semplice testo invece di un link rotto.

← Torna al corso

Fa parte anche di questi corsi