Volver al blog

SVG Invisibles: El desafío de accesibilizar vectores informativos

Infografía detallada: SVG Invisibles: El desafío de accesibilizar vectores informativos

TL;DR (Too Long; Didn’t Read... o básicamente: mucho texto, dame el resumen rápido)
Si usas un <svg> inline para renderizar un ícono o gráfico que transmite datos clave, debes inyectarle role="img" y un aria-label (o etiqueta <title> interna). Sin esto, el motor del lector de pantalla lo ignorará o leerá balbuceos matemáticos de los vectores.

La opacidad nativa de los gráficos vectoriales escalables

El Criterio WCAG 1.1.1 (Contenido no textual) es implacable. Cuando usamos <img src="...">, el atributo alt salva el día. Pero cuando inyectamos el código SVG directamente en el DOM para poder cambiar su color con CSS (fill: currentcolor), perdemos esa propiedad nativa y entramos en territorio ARIA.

El patrón erróneo: Código Accesible Deficiente

Un icono de alerta crítica dibujado con SVG, invisible para quien no puede ver la pantalla.

<!-- MAL: Vector mudo e indescifrable -->
<div class="alert-box">
  <svg viewBox="0 0 24 24">
    <path d="M12 2L2 22h20L12 2z..."/>
  </svg>
  <span>El servidor se reiniciará en 5 minutos.</span>
</div>

La Solución Accesible: Código Recomendado

Convertir el grupo de vectores matemáticos en una imagen semántica declarada programáticamente.

<!-- BIEN: Patrón robusto de SVG informativo -->
<svg role="img" aria-label="Advertencia Crítica" viewBox="0 0 24 24">
  <path d="M12 2L2 22h20L12 2z..."/>
</svg>

<!-- BIEN: Si el SVG es solo decorativo, esconderlo explícitamente -->
<svg aria-hidden="true" viewBox="0 0 24 24">...</svg>

Metodología de Verificación y Testing

Pruebas Manuales con Lectores de Pantalla

Con NVDA, presionar B para saltar entre botones. Verificar que cada botón anuncie un nombre descriptivo (no solo "Botón"). En TalkBack (Android), navegar mediante swipe y confirmar que el anuncio incluya el propósito del control.

Inspección del Árbol de Accesibilidad

En Chrome DevTools, seleccionar el elemento afectado en el panel Elements, luego abrir la pestaña Accessibility. Verificar que las propiedades Role, Name y State reflejen correctamente la intención del componente según el criterio WCAG 1.1.1.

Herramientas Automatizadas

Ejecutar Axe DevTools: la regla image-alt y sus variantes detectan eficazmente imágenes, SVGs y objetos sin texto alternativo. WAVE también marca estos errores con alta fiabilidad. Limitación: Las herramientas no evalúan la calidad del texto alternativo.

Compartir artículo:

Artículos relacionados

¿Necesitas ayuda con la accesibilidad de tus proyectos?

Descubre cómo nuestro ecosistema detecta y corrige las barreras de forma automática.

Hablar con un experto (Abre en una nueva ventana)