Generador de CSS de spinner para botones

Siguiente

Un spinner dentro de un botón indica al usuario que su clic ha funcionado y que no debe volver a pulsarlo. Genera aquí un anillo pequeño y fino, después copia el CSS y colócalo junto a la etiqueta del botón.

Cómo crear un spinner para botón

  1. 1

    Usa un tamaño pequeño

    Escribe 16 o 18 en el campo de tamaño para que el anillo encaje con la altura del texto del botón.

  2. 2

    Haz el anillo fino

    Pon el grosor en 2 para que el arco se vea nítido a este tamaño.

  3. 3

    Iguala el color

    Elige el color del arco en movimiento, por ejemplo blanco sobre un botón oscuro.

  4. 4

    Acelera un poco y copia

    Prueba 0,8 segundos por vuelta y, después, copia el CSS.

Un ejemplo práctico

Imagina un botón «Guardar» azul marino con texto blanco. En el generador, introduce tamaño 16, grosor 2, color #ffffff y velocidad 0.8. La herramienta produce:

.loader {
  width: 16px;
  height: 16px;
  border: 2px solid #eee;
  border-top-color: #ffffff;
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
}
@keyframes spin {
  to { transform: rotate(360deg); }
}

La pista del anillo es un gris claro fijo, que se ve bien sobre un botón oscuro. Si quieres una pista más discreta, cambia #eee por un valor translúcido como rgba(255, 255, 255, 0.3) en el CSS pegado. El color del arco sigue siendo el que elegiste.

Colócalo dentro del botón

Pon el elemento del spinner antes de la etiqueta y haz que el botón sea una fila flex para que ambos queden en una línea con un espacio entre ellos:

<button class="save" type="submit" disabled>
  <span class="loader" role="status" aria-label="Guardando"></span>
  Guardando
</button>
.save {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

Añade el spinner y el estado disabled solo mientras la petición está en curso. Quítalos ambos cuando termine. Desactivar el botón es lo que evita los envíos duplicados; el spinner es la señal que explica por qué.

Tamaño y grosor para botones

Tamaño del texto del botón Tamaño del spinner Grosor
14 px 14 px 2 px
16 px De 16 a 18 px 2 px
De 18 a 20 px De 20 a 24 px 3 px

Notas

  • El generador crea un único anillo circular. No crea el botón, así que los estilos del botón siguen siendo tuyos.
  • Un anillo más grueso que una cuarta parte de su diámetro se llena y parece un disco, así que mantén los valores finos en tamaños pequeños.
  • Deja la etiqueta junto al spinner. Un spinner sin texto puede ser difícil de interpretar para algunos usuarios.

Evita saltos de diseño

Si el spinner aparece y el botón se hace de repente más ancho, el diseño se desplaza y el área de clic se mueve. Hay dos soluciones sencillas. Dale al botón un ancho mínimo que ya quepa el spinner y la etiqueta más larga. O reserva el espacio del spinner desde el principio mostrando un marcador vacío de 16 px antes de la etiqueta. Como el anillo generado tiene un ancho y una altura fijos en píxeles, es fácil reservar exactamente el espacio que necesita.

Preguntas frecuentes

Aproximadamente la misma altura que el texto del botón, normalmente entre 14 y 20 píxeles. Así el botón no crece cuando aparece el spinner.

Sí, en la mayoría de los formularios. Desactivarlo evita envíos duplicados, y el spinner explica al visitante por qué no puede pulsar nada más.

La pista es de gris claro y el arco es el color que elijas. En un botón claro, elige un color de arco más oscuro y cambia el color de la pista en el CSS pegado.

No. El generador solo produce el CSS del anillo. Si mantienes, cambias u ocultas la etiqueta depende de tu marcado.

Herramientas relacionadas

Herramienta disponible en otros idiomas

Guías y casos de uso