Generador de spinner CSS accesible

Siguiente

Un anillo que gira no significa nada para quien usa un lector de pantalla, y el movimiento constante puede molestar a personas sensibles a él. Genera el spinner aquí y, después, añade el marcado y la regla de movimiento reducido que aparecen abajo.

Cómo hacer accesible el spinner

  1. 1

    Genera el anillo

    Define el tamaño, el grosor, el color y la velocidad en la herramienta y, después, copia el CSS.

  2. 2

    Comprueba el contraste de color

    Elige un color para el arco que destaque claramente sobre la pista gris claro y sobre el fondo de la página.

  3. 3

    Añade el marcado de estado

    Pon role y una etiqueta en el elemento del spinner, como se muestra en esta página.

  4. 4

    Añade la regla de movimiento reducido

    Pega la consulta de medios de abajo debajo del CSS generado.

Qué cubre y qué no cubre el CSS generado

La herramienta te da la parte visual: un círculo con borde y una rotación. Un cargador solo visual no tiene significado para las tecnologías de asistencia, porque el elemento está vacío. La accesibilidad llega con el marcado y con una regla de CSS adicional que añades alrededor.

Marcado que anuncia el estado

<div class="loader" role="status" aria-label="Cargando resultados"></div>

role="status" marca el elemento como región en vivo, así que muchos lectores de pantalla anuncian su etiqueta cuando aparece. El aria-label debe decir qué se está cargando, como «Cargando resultados» o «Guardando», en lugar de una palabra genérica. Elimina el elemento cuando termine el trabajo y muestra el contenido nuevo.

También puedes poner texto visible junto al anillo. El texto visible ayuda a todos, incluidas las personas que no ven bien el movimiento.

Respeta el movimiento reducido

Algunos visitantes activan una opción del sistema que pide a los sitios limitar las animaciones. Respétala con una consulta de medios colocada después del CSS generado:

@media (prefers-reduced-motion: reduce) {
  .loader {
    animation-duration: 3s;
  }
}

Esto ralentiza la rotación en lugar de eliminarla, así que el cargador sigue pareciendo activo sin un movimiento rápido. Si prefieres una señal estática, usa animation: none; y muestra el texto «Cargando» junto al anillo.

Lista de comprobación de contraste y tamaño

Comprobación Qué buscar
Arco sobre la página Claramente visible, idealmente una proporción de 3:1 o más
Arco sobre la pista gris Distinto, para que el arco se pueda seguir
Tamaño Al menos 24 px para cualquier cosa que el visitante deba notar
Velocidad Entre 0,8 y 1,5 segundos por vuelta

Límites

  • El generador elige el color de la pista (#eee) por ti. Edítalo en el CSS pegado si el fondo de tu página es parecido.
  • Un valor de velocidad muy alto hace que el anillo parpadee. Evita cualquier valor por debajo de unos 0,5 segundos.
  • No confíes solo en el spinner para esperas largas. Explica en texto lo que está pasando.

Pruébalo rápido

Activa la opción de movimiento reducido en tu sistema operativo y recarga la página: el anillo debería girar más despacio. Después, navega por la página con el teclado para confirmar que el spinner nunca quita el foco del control que el visitante estaba usando. Por último, activa un lector de pantalla y provoca el estado de carga una vez, para comprobar si la etiqueta se anuncia cuando aparece el elemento y si el contenido nuevo es accesible después.

Preguntas frecuentes

Solo si añades marcado. Un elemento vacío no emite nada, así que dale role=“status” y un aria-label descriptivo.

Es una consulta de medios CSS que se cumple cuando el visitante ha pedido a su dispositivo que reduzca las animaciones. Puedes usarla para ralentizar o detener el spinner.

Cualquiera de las dos opciones es válida. Ralentizarla mantiene una pista de actividad, mientras que detenerla es la opción más segura si además muestras un mensaje de texto como «Cargando».

Describe la acción con palabras sencillas, por ejemplo «Cargando resultados» o «Guardando cambios». Evita etiquetas vagas como «spinner».

Un tamaño mayor y un contraste fuerte lo hacen más fácil de ver, pero no sustituyen a la etiqueta de texto que lee la tecnología de asistencia.

Herramientas relacionadas

Herramienta disponible en otros idiomas

Guías y casos de uso