Accesibilidad

Las personas acceden a la web de muchas maneras. Algunos miran una pantalla y mueven un ratón. Algunos no pueden ver la pantalla y la escuchan leer en voz alta. Algunos nunca tocan un ratón y se desplazan por una página con el teclado, con la voz, o con un interruptor que presionan. La accesibilidad es la práctica de construir páginas que todos ellos puedan usar, y la mayoría se reduce a escribir HTML de la manera en que fue pensado.
Por qué importa la accesibilidad
Accesibilidad significa asegurarse de que todos puedan usar tu página, sin importar sus circunstancias o cómo naveguen. Alguien podría no poder ver la pantalla y escucharla en su lugar, a través de software que lee la página en voz alta. Alguien podría no usar un ratón y moverse por la página con el teclado. Alguien podría necesitar texto más grande o colores más fuertes para leer cómodamente.
Piensa en un edificio con una rampa junto a los escalones. La rampa ayuda a las personas que no pueden subir escaleras, y no quita nada a nadie que pueda hacerlo. HTML accesible es la misma idea: abre la página a más personas sin hacerla peor para nadie.
La parte tranquilizadora es que HTML es accesible desde el inicio. Llegas la mayor parte del camino de forma gratuita simplemente usando el elemento correcto para cada parte del contenido.
HTML semántico como base
La cosa más efectiva que puedes hacer por la accesibilidad es usar el elemento que coincide con el significado del contenido, en lugar de uno genérico estilizado para verse bien.
HTML semántico significa elegir una etiqueta por lo que el contenido es, no por cómo se ve. Un encabezado usa <h1> a <h6>. Un botón usa <button>. Un enlace usa <a>. Una lista usa <ul> u <ol>. Cada uno de estos ya lleva significado que un lector de pantalla puede anunciar, así que un oyente sabe "esto es un botón" o "esto es un encabezado" sin verlo.
Es como etiquetar cajas cuando te mudas de casa. Una caja marcada "cocina" ayuda a quien la carga, no solo a la persona que la empacó. Las etiquetas semánticas etiquetan tu contenido de la misma manera, así que el navegador y la tecnología de asistencia saben qué es cada parte.
En la práctica, esto significa usar <button> cuando quieres un botón, no un <div> que has estilizado para verse como uno. El <div> puede hacerse verse idéntico, pero no dice nada sobre lo que es. El capítulo HTML semántico repasa el conjunto completo.
<button> para un botón, <h1> para un encabezado, <a> para un enlace. Cada uno ya le dice a un lector de pantalla lo que es, así que obtienes eso de forma gratuita. Un <div> estilizado puede verse igual y aun así no decir nada. Alternativas de texto, etiquetas, enfoque y teclado
Algún contenido no puede hablar por sí solo. Una imagen es invisible para un lector de pantalla hasta que la describas. Un campo de formulario es una suposición hasta que se etiqueta. Y una página que solo responde a un ratón excluye a todos los que no usan uno. Estas cuatro áreas son donde un poco de cuidado vale mucho.
Un puñado de hábitos confiables cubren la mayoría de esto:
- Las imágenes necesitan texto alternativo. El atributo
altdescribe una imagen para cualquiera que no pueda verla. Si la imagen es solo decorativa, unalt=""vacío le dice al lector de pantalla que la salte.
<img src="red-fox.jpg" alt="Un zorro rojo acurrucado durmiendo en la nieve">- Los campos de formulario necesitan etiquetas. Una
<label>le dice tanto al visitante como al lector de pantalla qué escribir en un campo.
<label for="email">Correo electrónico</label>
<input id="email" type="email">- Los botones y enlaces necesitan texto claro. "Leer más" por sí solo es poco claro cuando se lee fuera de contexto; "Leer más sobre precios de entradas" tiene sentido por sí solo.
- El orden del teclado debe coincidir con el orden de lectura. Alguien presionando Tab se mueve a través de la página en el orden en que los elementos aparecen en tu HTML, así que mantén ese orden sensato.
Los capítulos Imágenes y medios y Formularios e entradas profundizan en texto alternativo y etiquetas.
alt, dale a los campos de formulario una <label>, escribe texto de botón y enlace que tenga sentido por sí solo, y mantén el orden de tabulación coincidiendo con el orden de lectura. Ninguno de ellos toma mucho tiempo. Las imágenes decorativas obtienen un alt="" vacío para que sean saltadas. ARIA, y por qué no usarla primero
Hay un conjunto de atributos HTML hechos específicamente para la accesibilidad, llamados ARIA. Es útil en el lugar correcto, y es una de las partes más mal utilizadas de la plataforma, así que vale la pena entender tanto lo que hace como cuándo dejarla sola.
ARIA significa Aplicaciones Ricas de Internet Accesibles. Es un conjunto de atributos adicionales que puedes agregar a un elemento para decirle a la tecnología de asistencia más sobre él. El nombre lo hace sonar como la primera herramienta a la que recurrir, y generalmente es la última.
La razón es simple: la mayoría de lo que ARIA puede describir, HTML ya lo dice por su cuenta. Un <button> ya se anuncia como un botón. Agregar role="button" a él no cambia nada. Si te encuentras agregando ARIA para explicar qué es un elemento, eso generalmente es una señal para cambiar al elemento HTML simple que ya lo dice.
Imagina una nota adhesiva agregada a una caja de mudanza. Si la caja ya está impresa "cocina", una nota adhesiva leyendo "cocina" solo agrega desorden. Guarda la nota para la caja que no tiene etiqueta. ARIA es para las partes de una página que HTML no tiene elemento, lo cual es más raro de lo que suena.
<button> real ya dice que es un botón. Guarda ARIA para la parte rara de una página que HTML no tiene elemento, y mantén todo lo demás simple. Una auditoría rápida de auto-evaluación
No necesitas software especializado para detectar los problemas más comunes. Algunos controles con herramientas ya en tu máquina encuentran la mayoría de ellos, y solo toman un par de minutos ejecutarlos.
Aquí hay una lista de verificación corta que puedes ejecutar en cualquier página:
- Deja el ratón a un lado y presiona Tab. ¿Puedes llegar a cada enlace y botón, en un orden que tenga sentido? ¿Puedes activarlos con Enter?
- ¿Cada imagen tiene un atributo
alt? - ¿Cada campo de formulario tiene una
<label>? - ¿Tus botones y enlaces aún tienen sentido cuando se leen por su cuenta?
- ¿El texto es claro de leer contra su fondo?
Ejecutar estos en tu propia página es rápido, y detecta los problemas que la gente encuentra más a menudo. Si la tecla Tab se atora en algún lado, o una imagen no tiene alt, has encontrado algo que vale la pena arreglar.
alt, cada campo tenga una <label>, y el texto se lea claramente contra su fondo. Un par de minutos de esto detecta los problemas que la gente encuentra más. 
