Normalmente, cuando hacemos una web, uno de los objetivos principales es que llegue al mayor número posible de personas, y alguno se habrá dado cuenta de que he escrito «llegue» y no «vea», y es que precisamente de eso va esta entrada, ya que no todos los usuarios tiene capacidad, posibilidad o condición de ver, oír o interactuar de la misma forma con los sitios webs que creamos.
Ya nos explicó Nuria lo importante que es la accesibilidad para hacer una web accesible para todos y su relación de esto con el SEO en su entrada sobre la accesibilidad web. Y es que si nos ponemos a enredar por la web enseguida veremos como esta es una de las cosas que más se descuidan y que si bien no todos los desarrolladores necesitamos ser expertos en accesibilidad web, al menos deberíamos tener una mínima idea para dejarnos al menor número posible de personas fuera de la interacción con nuestros sitios web.
Índice de contenidos
La funcionalidad con el teclado es un pilar esencial de la accesibilidad. Muchas personas dependen de dispositivos como teclados, lectores de pantalla o dispositivos alternativos para navegar por la web. Por eso, debemos hacernos preguntas como:
Algunas prácticas esenciales incluyen:
tabindex
de forma moderada para controlar el orden de navegación.El contraste entre texto y fondo es clave para usuarios con baja visión. Puede que tu web tenga múltiples temas, en tal caso debes asegurarte de que el tema predeterminado sea accesible. No obstante, considera crear opciones etiquetadas para usuarios con necesidades específicas, como temas de bajo contraste para personas con migrañas, ya que mucho brillo pueden desencadenar o empeorar las migrañas en gente que las padece.
Los atributos ARIA son herramientas avanzadas que deben usarse con cuidado. Un mal uso puede empeorar la experiencia de accesibilidad. Algunos ejemplos:
aria-hidden
: Útil para ocultar elementos innecesarios para lectores de pantalla, pero mal implementado puede excluir información clave.role="application"
: Generalmente innecesario y puede interferir con la navegación nativa.Por otro lado, un mal uso de ARIA con ReactJS y la re-renderización de los componentes puede causar que se lean continuamente pequeños avisos de componentes que se actualizan.
No todos los elementos deben ser accesibles con lectores de pantalla. No tiene sentido hacer que elementos no interactivos sean accesibles. Es importante diferenciar entre elementos interactivos y los meramente informativos.
<h1>
a <h6>
) tienen como finalidad jerarquizar y estructurar la página. Deben ser legibles e identificables, pero no clicables. tabindex
en elementos estáticos: botones, enlaces, formularios, deben ser seleccionables desde el teclado. Así que no hay que usarlos en encabezados o párrafos, ya que interrumpiremos la navegación fluida del usuario.Afortunadamente, HTML y CSS avanzan para facilitarnos la implementación de una mejor accesibilidad. Algunos enfoques y herramientas que se pueden llevar acabo:
CSS con @media (prefers-reduced-motion)
: se usa para saber si el usuario ha activado en su navegador la opción de reducir las animaciones.
@media (prefers-reduced-motion: reduce) {
* {
animation: none;
transition: none;
}
}
Considera además, ofrecer una opción manual en tu sitio para desactivar animaciones en caso de que el usuario no tenga configurada esta preferencia en su sistema operativo.
La navegación por teclado es vital para usuarios que no pueden usar un ratón. Estos selectores de CSS y HTML pueden marcar una notable diferencia:
button:focus-visible { outline: 2px solid #007BFF; }
form:focus-within {
border: 2px solid #28a745;
}
:not
y :has
: Estos selectores pueden ser útiles para gestionar de manera condicional ciertos aspectos específicos de accesibilidad.div:not([aria-hidden="true"]) {
display: block;
}
section:has(button:focus) {
background-color: #f8f9fa;
}
inert
<div id="background-content" inert>
<!-- Contenido deshabilitado mientras el modal está abierto -->
</div>
<div id="modal">
<!-- Contenido del modal -->
</div>
Además, están las Live Regions, permiten enviar anuncios de accesibilidad a los lectores de pantalla con los eventos que ocurren en pantalla desplazando ciertos elementos o con las acciones dinámicas que se realizan en el DOM.
Polite
: Cualquier región que reciba actualizaciones importantes para el usuario, pero no tan rápidas como para resultar molestas. <div aria-live="polite">
Su archivo ha sido cargado con éxito.
</div>
Assertive
: solo debe utilizarse para notificaciones críticas o urgentes que requieran la atención inmediata del usuario. Puede ser muy molesto, así que debe utilizarse con moderación.<div aria-live="assertive">
¡Atención! Su sesión está a punto de expirar.
</div>
Herramientas y recursos clave para evaluar y mejorar la accesibilidad:
Muchas de las herramientas, extensiones del navegador, etc., te pueden dar ciertas claves sobre cómo hacer tu código más accesible, pero no te van a dar tantas, ni tan claras como los propios usuarios de estas herramientas.
La accesibilidad no es un proyecto único; es un proceso que requiere de mejora continua. Algunas estrategias:
Como desarrolladores, diseñadores y creadores, tenemos la responsabilidad de construir una web inclusiva. La accesibilidad no debería ser un lujo.
Cuando hacemos accesibilidad, no solo beneficiamos a una pequeña parte de nuestra audiencia. Mejoramos la experiencia para todos:
Trabajemos juntos para garantizar que nadie quede excluido. La accesibilidad al fin y al cabo es el diseño para todos, no para unos pocos. Con pequeños pasos individuales, juntos podemos construir un futuro digital donde nadie quede excluido.
Si estás aquí seguramente ha llegado a tus oídos que el Kit Digital está agotado.… Leer más
En esta segunda parte de crear tu primera app, veremos como funcionan la navegación, widgets,… Leer más
En este artículo aprenderás a cómo quitar el fondo de una imagen en Adobe Illustrator… Leer más
El SEO local es una de las estrategias más efectivas para que los negocios atraigan… Leer más
Si no lo has implementado ya en tu estrategia de marketing online, llegas tarde. Pero… Leer más
Descubre cómo usar redirecciones en .htaccess para mejorar tu SEO, evitar errores y optimizar fácilmente… Leer más