Skip to content
Technical

Accesibilidad SVG: Cómo Hacer Gráficos Vectoriales Inclusivos

Crea gráficos SVG accesibles que funcionen para todos. Guía completa sobre ARIA, lectores de pantalla, gestión del foco y prácticas de diseño inclusivo.

Robin Monteiro23 de enero de 202610 de octubre de 202612 min
Use this article with an AI assistant:
.md
Accesibilidad SVG: Cómo Hacer Gráficos Vectoriales Inclusivos
R
Robin Monteiro

Founder of VectoSolve

Self-taught developer, founder and sole developer of VectoSolve since 2024. He builds the conversion engine and the cutting, embroidery and 3D printing exports.

How this article was made: drafted with AI assistance, then edited and fact-checked before publication. About the author

Image vectorizationCutting machine filesEmbroidery filesSVG
Free previewNo signupFull-quality output

Key Takeaways

  • Más de mil millones de personas en el mundo dependen de tecnologías de asistencia — los SVG accesibles son tanto un imperativo ético como legal
  • Usa aria-hidden="true" para SVG decorativos y role="img" con <title>/<desc> para los informativos
  • WCAG 2.1 requiere un contraste de 3:1 para gráficos y componentes UI, y 4.5:1 para texto dentro de SVG
  • Respeta siempre prefers-reduced-motion desactivando las animaciones SVG para los usuarios que lo soliciten
  • Prueba con lectores de pantalla reales (NVDA, VoiceOver, TalkBack) — las herramientas automatizadas detectan solo ~30% de los problemas de accesibilidad

Por qué importa la accesibilidad SVG

Más de mil millones de personas en el mundo tienen discapacidades. Hacer que tus gráficos SVG sean accesibles garantiza que todos puedan comprender e interactuar con tu contenido. También suele ser un requisito legal.

Guía completa para hacer gráficos SVG accesibles para todos los usuarios
Accesibilidad SVG: asegurar que los gráficos vectoriales funcionen para todos, incluidos los usuarios de lectores de pantalla

Fundamentos de accesibilidad

Comprender las tecnologías de asistencia

Cómo las personas acceden a los SVG:

  • Lectores de pantalla (NVDA, JAWS, VoiceOver)
  • Navegación por teclado
  • Dispositivos de conmutación
  • Lupas de pantalla
  • Control por voz

Directrices WCAG para imágenes

Requisitos principales:

Requisitos WCAG 2.1:
- El contenido no textual necesita alternativas
- El color no debe ser el único transmisor de información
- Contraste de color suficiente
- Redimensionable sin pérdida
- Elementos enfocables accesibles por teclado

Patrones de accesibilidad SVG

SVG decorativos

Para elementos puramente visuales:

html
<svg aria-hidden="true" focusable="false">
  <!-- gráfico decorativo -->
</svg>

Cuándo usar:

  • Patrones de fondo
  • Adornos visuales
  • Iconos redundantes con texto
  • Elementos puramente estéticos

SVG informativos

Para gráficos significativos:

html
<svg role="img" aria-labelledby="chart-title">
  <title id="chart-title">Crecimiento de ventas 2025</title>
  <!-- contenido del gráfico -->
</svg>

Cuándo usar:

  • Gráficos y diagramas
  • Esquemas
  • Infografías
  • Iconos independientes

SVG complejos

Para información detallada:

html
<svg role="img" aria-labelledby="title desc">
  <title id="title">Organigrama</title>
  <desc id="desc">
    Estructura jerárquica mostrando al CEO arriba,
    con tres VP subordinados, cada uno con equipos.
  </desc>
  <!-- diagrama complejo -->
</svg>

Pro Tip: Para visualizaciones de datos complejas (gráficos, mapas), proporciona siempre un <table> oculto como alternativa al SVG. Los lectores de pantalla analizan las tablas mucho más eficientemente que los datos de ruta SVG.


A Full Year of Conversions for $49

Starter Annual: 25 conversions every month, $49 for the whole year. That is about $4.08 a month · Cancel anytime

Get the Annual Deal

Atributos ARIA para SVG

Atributos esenciales

html
<!-- Definición de rol -->
role="img"           <!-- imagen estática -->
role="graphics-document"  <!-- interactivo complejo -->

<!-- Etiquetas -->
aria-label="..."     <!-- descripción simple -->
aria-labelledby="..." <!-- referencia a elemento título -->
aria-describedby="..." <!-- descripción detallada -->

<!-- Estados -->
aria-hidden="true"   <!-- ocultar de TA -->
focusable="false"    <!-- prevenir foco -->

Elementos Title y Desc

Accesibilidad nativa SVG:

html
<svg role="img" aria-labelledby="icon-title icon-desc">
  <title id="icon-title">Advertencia</title>
  <desc id="icon-desc">
    Triángulo amarillo con signo de exclamación indicando precaución
  </desc>
  <path d="..."/>
</svg>

«La accesibilidad no es una función que se añade al final — es una restricción de diseño que mejora todo. Un SVG accesible es un SVG bien estructurado.» - Leonie Watson, Ingeniera de Accesibilidad & Consejo Asesor W3C


Accesibilidad de SVG interactivos

Elementos enfocables

Haz que las partes interactivas sean accesibles:

html
<svg>
  <a href="/section-1" tabindex="0">
    <rect x="0" y="0" width="100" height="50"/>
    <text>Sección 1</text>
  </a>
</svg>

Indicadores de foco

Estados de foco visibles:

css
svg a:focus,
svg [tabindex]:focus {
  outline: 2px solid #0066cc;
  outline-offset: 2px;
}

Asegura el acceso por teclado:

javascript
svgElement.addEventListener('keydown', (e) => {
  if (e.key === 'Enter' || e.key === ' ') {
    // Activar elemento
  }
});

Accesibilidad del color

Requisitos de contraste

Ratios de contraste WCAG:

Requisitos mínimos:
Texto: 4.5:1 (normal), 3:1 (grande)
Gráficos: 3:1 contra el fondo
Componentes UI: 3:1

Probar el contraste

Herramientas de verificación:

  • DevTools del navegador
  • Verificadores de contraste
  • Auditorías de accesibilidad

Independencia del color

No dependas solo del color:

html
<!-- Mal: Solo color -->
<circle fill="red"/>  <!-- Error -->
<circle fill="green"/>  <!-- Éxito -->

<!-- Bien: Patrón + Color -->
<circle fill="red">
  <title>Error</title>
</circle>
<use href="#checkmark" fill="green">
  <title>Éxito</title>
</use>
Iconos SVG con atributos de accesibilidad apropiados para aplicaciones web
Patrones de iconos accesibles: uso SVG decorativo vs. informativo

Free SVG Tools for Crafters

Design Checker · Color Separator · Mat Preview · Offset Generator · Text to SVG

Check Your SVG Free

Accesibilidad de iconos

Botones con icono

html
<button aria-label="Cerrar diálogo">
  <svg aria-hidden="true" focusable="false">
    <path d="..."/>
  </svg>
</button>

Icono con texto

html
<button>
  <svg aria-hidden="true"><!-- icono --></svg>
  Guardar documento
</button>

Iconos independientes

html
<svg role="img" aria-label="Notificación: 3 mensajes sin leer">
  <circle cx="12" cy="12" r="10" fill="#ff0000"/>
  <text x="12" y="16" text-anchor="middle">3</text>
</svg>

Accesibilidad de animaciones

Respetar preferencias

css
@media (prefers-reduced-motion: reduce) {
  svg * {
    animation: none !important;
    transition: none !important;
  }
}

Controles de pausa

html
<button id="toggle-animation">
  Pausar animación
</button>

<svg class="animated-svg">
  <!-- contenido animado -->
</svg>

El criterio de éxito WCAG 2.1 2.3.1 requiere que nada parpadee más de 3 veces por segundo. Si tus animaciones SVG incluyen cambios rápidos de color o efectos estroboscópicos, proporciona un control de pausa y respeta prefers-reduced-motion.


Probar la accesibilidad SVG

Pruebas manuales

Checklist:

  1. Navegar solo con teclado
  2. Probar con lector de pantalla
  3. Verificar al zoom 200%
  4. Verificar el contraste de colores
  5. Probar con usuarios

Pruebas automatizadas

Herramientas:

  • axe DevTools
  • WAVE
  • Lighthouse
  • Pa11y

Pruebas con lectores de pantalla

Probar con:

  • NVDA (Windows, gratuito)
  • VoiceOver (Mac/iOS, integrado)
  • TalkBack (Android, integrado)
  • JAWS (Windows, comercial)

A Full Year of Conversions for $49

Starter Annual: 25 conversions every month, $49 for the whole year. That is about $4.08 a month · Cancel anytime

Get the Annual Deal

Referencia de patrones comunes

html
<a href="/">
  <svg role="img" aria-label="Nombre de la empresa - Inicio">
    <title>Logo de la empresa</title>
    <!-- rutas del logo -->
  </svg>
</a>

Visualización de datos

html
<svg role="img" aria-labelledby="chart-title">
  <title id="chart-title">Ventas mensuales 2025</title>
  <desc>Gráfico de barras mostrando ventas creciendo
        de 10K€ en enero a 45K€ en diciembre</desc>

  <!-- Proporcionar tabla alternativa -->
</svg>
<table class="sr-only">
  <!-- tabla de datos accesible -->
</table>

Sistema de iconos

html
<svg class="icon" aria-hidden="true" focusable="false">
  <use href="#icon-search"/>
</svg>
<span class="icon-label">Buscar</span>

VectoSolve y la accesibilidad

Salida limpia para accesibilidad

VectoSolve produce SVG limpios que son:

  • Fáciles de enriquecer con atributos de accesibilidad
  • Bien estructurados para modificación
  • Listos para implementación accesible

Accesibilidad post-conversión

Después de la vectorización:

  1. Añadir el rol apropiado
  2. Incluir elementos title/desc
  3. Establecer atributos ARIA
  4. Probar con tecnologías de asistencia

Conclusión

Los SVG accesibles benefician a todos — son más semánticos, mejor estructurados y más mantenibles. Siguiendo estos patrones y probando regularmente, garantizas que tus gráficos vectoriales sean verdaderamente inclusivos.

Crear SVG accesibles


Requisito WCAGImplementación SVGImpacto
Alternativas textuales (1.1.1)Elementos <title> y <desc>Los lectores de pantalla anuncian el propósito de la imagen
Contraste de color (1.4.11)Mínimo 3:1 para gráficos UIVisible para usuarios con baja visión
Acceso por teclado (2.1.1)focusable=true + tabindexSVG interactivos accesibles por teclado
Movimiento reducido (2.3.3)Media query prefers-reduced-motionDetiene animaciones para trastornos vestibulares

Free SVG Tools for Crafters

Design Checker · Color Separator · Mat Preview · Offset Generator · Text to SVG

Check Your SVG Free

Fuentes y lecturas adicionales

Tags:
accesibilidad
SVG
ARIA
lectores de pantalla
diseño inclusivo
Share:

Try VectoSolve Now

Convert your images to high-quality SVG vectors with AI

AI-Powered Vectorization

Ready to vectorize your images?

Convert your PNG, JPG, and other images to high-quality, scalable SVG vectors in seconds.