tabindex e accesskey
Controllare l’ordine di navigazione da tastiera e le scorciatoie
tabindex e accesskey è una lezione HTML Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento HTML Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso HTML Academy include 4 lezioni in totale.
Navigazione da tastiera
Gli utenti senza mouse usano Tab per navigare tra gli elementi interattivi:
- Focalizzabili naturalmente:
<a href>,<button>,<input>,<select>,<textarea> - Gli elementi non interattivi (
<div>,<span>) non fanno parte dell'ordine di tabulazione tabindexcontrolla se e dove un elemento compare nell'ordine di tabulazione
tabindex="0"
tabindex="0" aggiunge un elemento non interattivo all'ordine di tabulazione naturale:
<div tabindex="0" role="button" onclick="handleClick()">
Custom Button
</div>
<!-- Now Tab navigates to this div -->
<!-- It receives focus at the natural position in the DOM -->
<!-- Better: use a real button instead! -->
<button onclick="handleClick()">Real Button</button>tabindex="-1"
tabindex="-1" rende un elemento focalizzabile tramite programmazione, ma lo rimuove dall'ordine di tabulazione:
<div id="modal" tabindex="-1" role="dialog">
<!-- modal content -->
</div>
<script>
// Open modal and send focus to it:
document.getElementById('modal').focus();
// Modal is now focused but not in the normal tab sequence
</script>Valori positivi di tabindex — da evitare
I valori positivi di tabindex (ad esempio tabindex="3") impostano un ordine di tabulazione personalizzato: li eviti:
<!-- BAD: positive tabindex creates unpredictable order -->
<input tabindex="3">
<input tabindex="1">
<input tabindex="2">
<!-- The tab order becomes: 1, 2, 3, then all tabindex=0 elements -->
<!-- This almost always confuses users and fails WCAG 2.4.3 -->
<!-- Fix the DOM order instead of using positive tabindex -->Gestione del focus nelle SPA
Le applicazioni a pagina singola devono gestire manualmente il focus:
// When navigating to a new route:
document.querySelector('#main-content').focus();
// When opening a modal:
const modal = document.getElementById('modal');
modal.removeAttribute('hidden');
modal.querySelector('[autofocus], button, [tabindex]').focus();
// When closing a modal: return focus to the trigger
document.getElementById('open-btn').focus();Trappola del focus nelle finestre modali
Limiti il focus all'interno di una finestra modale aperta, in modo che Tab rimanga al suo interno:
function trapFocus(element) {
const focusable = element.querySelectorAll(
'a, button, input, textarea, select, [tabindex]:not([tabindex="-1"])'
);
const first = focusable[0];
const last = focusable[focusable.length - 1];
element.addEventListener('keydown', e => {
if (e.key === 'Tab') {
if (e.shiftKey && document.activeElement === first) {
e.preventDefault(); last.focus();
} else if (!e.shiftKey && document.activeElement === last) {
e.preventDefault(); first.focus();
}
}
});
}L'attributo accesskey
L'attributo accesskey assegna una scorciatoia da tastiera a un elemento:
<button accesskey="s">Submit</button>
<!-- On Windows: Alt+S focuses/activates the button -->
<!-- On Mac: Control+Option+S -->
<!-- On Firefox: Shift+Alt+S -->
<a href="/" accesskey="h">Home</a>Limiti di accesskey
accesskey presenta problemi significativi:
- I tasti di attivazione variano tra browser e sistemi operativi
- Entra in conflitto con le scorciatoie del browser (ad esempio Alt+F = menu File)
- Per impostazione predefinita, non viene annunciato dai lettori di schermo
- Viene usato raramente nella pratica: se lo utilizza, lo documenti
Indicatori visibili del focus
Non nasconda mai i contorni del focus: sono essenziali per chi usa la tastiera:
/* BAD: removes focus outline for everyone */
* { outline: none; }
/* Better: style focus outlines, don't remove them */
:focus-visible {
outline: 2px solid #0070f3;
outline-offset: 2px;
border-radius: 3px;
}
/* :focus-visible only shows outline for keyboard navigation -->
/* Mouse clicks do not trigger :focus-visible in modern browsers */Schema del collegamento per saltare la navigazione
Un collegamento per saltare la navigazione consente agli utenti da tastiera di superare la navigazione ripetitiva:
<a href="#main-content" class="skip-link">Skip to main content</a>
<nav>... long navigation ...</nav>
<main id="main-content" tabindex="-1">... content ...</main>
<!-- CSS: -->
<!--
.skip-link {
position: absolute;
top: -100%;
}
.skip-link:focus {
top: 0;
}
-->Attributo autofocus
L'attributo autofocus sposta il focus su un elemento al caricamento della pagina:
<input type="search" autofocus placeholder="Search...">
<!-- Useful on search pages or forms with a single primary field -->
<!-- Use sparingly: it can disrupt users who rely on the page top for orientation -->
<!-- Only one element per page should have autofocus -->Verifica rapida
Quale valore di tabindex rende un elemento focalizzabile tramite JavaScript, ma lo esclude dalla normale navigazione con Tab?
Riepilogo: tabindex e accesskey
Elementi essenziali dell'accessibilità da tastiera:
tabindex="0"— aggiunge all'ordine di tabulazione naturaletabindex="-1"— focalizzabile tramite programmazione, ma non incluso nell'ordine di tabulazione- Eviti i valori positivi di tabindex
- Non rimuova mai i contorni di
:focus-visible - Implementi collegamenti per saltare la navigazione destinati agli utenti da tastiera
accesskeyè disponibile, ma raramente pratico a causa dei conflitti
Impara HTML con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 40
- Lezioni
- 159
Domande Frequenti
La lezione «tabindex e accesskey» è gratuita?
Sì — il testo completo di «tabindex e accesskey» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso HTML Academy, passa a CoddyKit PRO. Il corso HTML Academy include 4 lezioni in totale.
Cosa imparerò in «tabindex e accesskey»?
Controllare l’ordine di navigazione da tastiera e le scorciatoie Eserciti HTML Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare HTML Academy?
Non è richiesta alcuna esperienza precedente. HTML Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «tabindex e accesskey»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione HTML Academy?
Sì. Ogni lezione HTML Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- id, class, style e title
- L’attributo hidden
- tabindex e accesskey
- Attributi data personalizzati: data-*