Generador de spinner CSS accesible
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
Genera el anillo
Define el tamaño, el grosor, el color y la velocidad en la herramienta y, después, copia el CSS.
-
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
Añade el marcado de estado
Pon role y una etiqueta en el elemento del spinner, como se muestra en esta página.
-
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
Generador de Configuración de Webpack
Crea un webpack.config.js para webpack 5 con JavaScript puro, React o Vue: TypeScript, Babel, CSS o Sass, imágenes, HtmlWebpackPlugin, servidor de desarrollo y la línea de npm install.
Convertidor de ASCII a Binario
Convierte cualquier cadena ASCII a su representación binaria. Cada carácter se convierte en ocho bits, separados por espacios, listos para pegar en un seguimiento de protocolo o tarea.
Explorador de Rueda de Color
Explora la rueda de color de forma interactiva. Rota armonías, compara HSL vs RYB, identifica pares complementarios y triádicos en tiempo real.
Validador de URL
Comprueba si una URL tiene una sintaxis válida y descomponla en esquema, host, puerto, ruta, consulta y fragmento, con indicadores de absoluta y HTTPS.
Generador de letras aleatorias
Genera letras aleatorias A-Z. Elige la cantidad, usa mayúsculas, minúsculas o mezcla de ambas, y aplica el resultado en juegos, consignas o clase.
Convertidor de HTML a imagen
Renderiza un fragmento de HTML y CSS como PNG o JPG de tamaño fijo en tu navegador. Elige lienzo y escala, previsualiza y descarga.
Herramienta disponible en otros idiomas
- مولّد دوّامة CSS يمكن الوصول إليها [AR]
- アクセシブルなCSSスピナー ジェネレーター [JA]
- Barrierefreier CSS-Spinner Generator [DE]
- Generator för tillgänglig CSS-spinner [SV]
- Gerador de spinner CSS acessível [PT]
- 접근성 있는 CSS 스피너 생성기 [KO]
- Générateur de spinner CSS accessible [FR]
- Toegankelijke CSS-spinner generator [NL]
- เครื่องมือสร้างสปินเนอร์ CSS ที่เข้าถึงได้ [TH]
- Trình tạo CSS spinner có khả năng truy cập [VI]
- Generator dostępnego spinera CSS [PL]
- Generator CSS Spinner yang Aksesibel [ID]
- Генератор доступного CSS-спиннера [RU]
- Erişilebilir CSS Spinner Oluşturucu [TR]
- 无障碍 CSS 加载动画生成器 [ZH]
- Accessible CSS Spinner Generator [EN]
- Generatore di spinner CSS accessibile [IT]