En aquest tema, aprendrem com crear ginys JavaScript que siguin accessibles per a tots els usuaris, incloent aquells que utilitzen tecnologies assistencials. Els ginys JavaScript poden millorar significativament la interactivitat d'un lloc web, però si no es dissenyen correctament, poden crear barreres d'accessibilitat.
Conceptes Clau
- Accessibilitat del Teclat: Assegura't que els ginys siguin accessibles mitjançant el teclat, ja que molts usuaris amb discapacitats no poden utilitzar un ratolí.
- Ús d'ARIA (Accessible Rich Internet Applications): Utilitza atributs ARIA per proporcionar informació addicional sobre els elements de la interfície d'usuari.
- Gestió del Foc (Focus Management): Controla el focus del teclat per assegurar que els usuaris sempre sàpiguen on es troben dins de la pàgina.
- Retroalimentació Visual i Auditiva: Proporciona retroalimentació clara quan es realitzen accions, com ara canvis d'estat o errors.
Exemples Pràctics
Exemple 1: Botó Accessible
<button id="accessibleButton">Fes clic aquí</button> <script> document.getElementById('accessibleButton').addEventListener('click', function() { alert('Botó clicat!'); }); </script>
Explicació:
- Aquest botó és accessible perquè es pot activar amb el teclat (mitjançant la tecla "Enter" o "Espai").
- Utilitza un element
<button>
, que és semànticament correcte i reconegut per les tecnologies assistencials.
Exemple 2: Ús d'ARIA per a Ginys Complexos
<div role="tablist" aria-label="Exemple de pestanyes"> <button role="tab" aria-selected="true" id="tab1" aria-controls="panel1">Pestanya 1</button> <button role="tab" aria-selected="false" id="tab2" aria-controls="panel2">Pestanya 2</button> </div> <div role="tabpanel" id="panel1" aria-labelledby="tab1"> Contingut de la Pestanya 1 </div> <div role="tabpanel" id="panel2" aria-labelledby="tab2" hidden> Contingut de la Pestanya 2 </div>
Explicació:
- Utilitza
role="tablist"
,role="tab"
, irole="tabpanel"
per definir la relació entre les pestanyes i els seus panells de contingut. - Els atributs
aria-selected
iaria-controls
ajuden a indicar quina pestanya està activa i quin panell controla.
Exercicis Pràctics
Exercici 1: Crear un Botó Accessible
Crea un botó que, quan es clica, canviï el text d'un paràgraf a "Hola, món!". Assegura't que el botó sigui accessible mitjançant el teclat.
Solució:
<button id="changeTextButton">Canvia el text</button> <p id="textParagraph">Text original</p> <script> document.getElementById('changeTextButton').addEventListener('click', function() { document.getElementById('textParagraph').textContent = 'Hola, món!'; }); </script>
Exercici 2: Implementar un Giny de Pestanyes Accessible
Crea un giny de pestanyes amb dues pestanyes i contingut associat. Utilitza ARIA per assegurar que sigui accessible.
Solució:
<div role="tablist" aria-label="Pestanyes d'exemple"> <button role="tab" aria-selected="true" id="tab1" aria-controls="panel1">Pestanya 1</button> <button role="tab" aria-selected="false" id="tab2" aria-controls="panel2">Pestanya 2</button> </div> <div role="tabpanel" id="panel1" aria-labelledby="tab1"> Contingut de la Pestanya 1 </div> <div role="tabpanel" id="panel2" aria-labelledby="tab2" hidden> Contingut de la Pestanya 2 </div> <script> const tabs = document.querySelectorAll('[role="tab"]'); const panels = document.querySelectorAll('[role="tabpanel"]'); tabs.forEach(tab => { tab.addEventListener('click', () => { tabs.forEach(t => t.setAttribute('aria-selected', 'false')); panels.forEach(p => p.hidden = true); tab.setAttribute('aria-selected', 'true'); document.getElementById(tab.getAttribute('aria-controls')).hidden = false; }); }); </script>
Errors Comuns i Consells
- No oblidis el suport per al teclat: Assegura't que tots els elements interactius es puguin accedir i controlar amb el teclat.
- Evita l'ús excessiu de JavaScript per a tasques que es poden fer amb HTML i CSS: Això pot complicar l'accessibilitat.
- Prova amb tecnologies assistencials: Utilitza lectors de pantalla i altres eines per verificar que els teus ginys són realment accessibles.
Conclusió
Crear ginys JavaScript accessibles requereix una comprensió dels principis d'accessibilitat i l'ús adequat d'HTML, CSS i ARIA. Amb pràctica i atenció als detalls, pots assegurar-te que els teus ginys siguin útils i accessibles per a tots els usuaris. En el següent tema, explorarem com assegurar l'accessibilitat del teclat en més profunditat.
Curs d'Accessibilitat Web
Mòdul 1: Introducció a l'Accessibilitat Web
- Què és l'Accessibilitat Web?
- Importància de l'Accessibilitat Web
- Visió General de les Lleis i Estàndards d'Accessibilitat
- Introducció a WCAG
Mòdul 2: Comprensió de les Discapacitats i les Tecnologies Assistencials
- Tipus de Discapacitats
- Visió General de les Tecnologies Assistencials
- Com les Persones amb Discapacitats Utilitzen la Web
Mòdul 3: Principis del Disseny Accessible
- Perceptible: Fer el Contingut Accessible als Sentits
- Operable: Interfície d'Usuari i Navegació
- Comprensible: Informació i Operació
- Robust: Compatibilitat amb Tecnologies Actuals i Futures
Mòdul 4: Implementació de l'Accessibilitat en HTML i CSS
- HTML Semàntic
- Formularis Accessibles
- Ús de Rols i Propietats ARIA
- Contrast de Color i Redimensionament de Text
Mòdul 5: Accessibilitat en JavaScript i Multimèdia
- Creació de Ginys JavaScript Accessibles
- Accessibilitat del Teclat
- Contingut de Vídeo i Àudio Accessible
- Proporcionar Alternatives de Text per a Imatges
Mòdul 6: Prova i Avaluació de l'Accessibilitat
- Tècniques de Prova Manual
- Eines de Prova Automatitzades
- Prova d'Usuari amb Tecnologies Assistencials
- Interpretació d'Informes d'Accessibilitat