El componente Spinner de Bootstrap
Indica el estado de carga de un componente o página con controles giratorios Bootstrap, construidos completamente con HTML, CSS y sin JavaScript.
Los “spinners” de Bootstrap se pueden usar para mostrar el estado de carga en tus proyectos. Están creados únicamente con HTML y CSS, lo que significa que no necesitas JavaScript para crearlos. Sin embargo, necesitarás algo de JavaScript personalizado para alternar su visibilidad. Su apariencia, alineación y tamaño se pueden personalizar fácilmente con nuestras increíbles clases de utilidad.
Por motivos de accesibilidad, cada cargador aquí incluye role="status"
y un <span class="visually-hidden">Loading...</span>
.
prefers-reduced-motion
. Consulta la sección de movimiento reducido de nuestra documentación de accesibilidad.
Estilo de solo bordes del componente Spinner
Usa los controles giratorios de borde para obtener un indicador de carga liviano.
<div class="spinner-border" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
Colores
El spinner de borde usa currentColor
para su border-color
, lo que significa que puedes personalizar el color con utilidades de color de texto. Puedes utilizar cualquiera de nuestras utilidades de color de texto en el control giratorio estándar.
<div class="spinner-border text-primary" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
<div class="spinner-border text-secondary" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
<div class="spinner-border text-success" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
<div class="spinner-border text-danger" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
<div class="spinner-border text-warning" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
<div class="spinner-border text-info" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
<div class="spinner-border text-light" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
<div class="spinner-border text-dark" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
border-color
? Cada spinner de borde especifica un borde transparent
para al menos un lado, por lo que .border-{color}
sobrescribirían eso.
Estilo Growing spinner
Si no te apetece un spinner de bordes, cambia al spinner de crecimiento. Si bien técnicamente no gira, ¡crece repetidamente!
<div class="spinner-grow" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
Una vez más, esta ruleta está construida con currentColor
, por lo que puedes cambiar fácilmente su apariencia con utilidades de color de texto. Aquí está en azul, junto con las variantes compatibles.
<div class="spinner-grow text-primary" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
<div class="spinner-grow text-secondary" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
<div class="spinner-grow text-success" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
<div class="spinner-grow text-danger" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
<div class="spinner-grow text-warning" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
<div class="spinner-grow text-info" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
<div class="spinner-grow text-light" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
<div class="spinner-grow text-dark" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
Alineación del componente Spinner
Los spinners en Bootstrap están construidos con rem
s, currentColor
y display: inline-flex
. Esto significa que se les puede cambiar el tamaño, el color y la alineación rápidamente.
Margen
Usa utilidades de margen como .m-5
para facilitar el espaciado.
<div class="spinner-border m-5" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
Ubicación
Usa utilidades flexbox, utilidades flotantes o utilidades de alineación de texto para colocar los hilanderos exactamente donde los necesitas en cualquier situación.
Flex
<div class="d-flex justify-content-center">
<div class="spinner-border" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
</div>
<div class="d-flex align-items-center">
<strong role="status">Cargando...</strong>
<div class="spinner-border ms-auto" aria-hidden="true"></div>
</div>
Flotadores
<div class="clearfix">
<div class="spinner-border float-end" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
</div>
Alinear texto
<div class="text-center">
<div class="spinner-border" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
</div>
Tamaño del componente Spinner
Agrega .spinner-border-sm
y .spinner-grow-sm
para crear un spinner más pequeño que se pueda usar rápidamente dentro de otros componentes.
<div class="spinner-border spinner-border-sm" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
<div class="spinner-grow spinner-grow-sm" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
O usa CSS personalizado o estilos en línea para cambiar las dimensiones según sea necesario.
<div class="spinner-border" style="width: 3rem; height: 3rem;" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
<div class="spinner-grow" style="width: 3rem; height: 3rem;" role="status">
<span class="visually-hidden">Cargando...</span>
</div>
Usar componentes Spinner en botones
Usa spinners dentro de los botones para indicar que una acción se está procesando o teniendo lugar actualmente. También puedes cambiar el texto del spinner y utilizar el texto del botón según sea necesario.
<button class="btn btn-primary" type="button" disabled="">
<span class="spinner-border spinner-border-sm" aria-hidden="true"></span>
<span class="visually-hidden" role="status">Cargando...</span>
</button>
<button class="btn btn-primary" type="button" disabled="">
<span class="spinner-border spinner-border-sm" aria-hidden="true"></span>
<span role="status">Cargando...</span>
</button>
<button class="btn btn-primary" type="button" disabled="">
<span class="spinner-grow spinner-grow-sm" aria-hidden="true"></span>
<span class="visually-hidden" role="status">Cargando...</span>
</button>
<button class="btn btn-primary" type="button" disabled="">
<span class="spinner-grow spinner-grow-sm" aria-hidden="true"></span>
<span role="status">Cargando...</span>
</button>
Personalización del CSS del componente
Variables Sass del componente
Agregado en v5.2.0
Como parte del enfoque de evolución de variables CSS de Bootstrap, los spinners ahora usan variables CSS locales en .spinner-border
y .spinner-grow
para una personalización mejorada en tiempo real. Los valores de las variables CSS se establecen a través de Sass, por lo que la personalización de Sass también es compatible.
Variables de spinners de borde:
--#{$prefix}spinner-width: #{$spinner-width};
--#{$prefix}spinner-height: #{$spinner-height};
--#{$prefix}spinner-vertical-align: #{$spinner-vertical-align};
--#{$prefix}spinner-border-width: #{$spinner-border-width};
--#{$prefix}spinner-animation-speed: #{$spinner-animation-speed};
--#{$prefix}spinner-animation-name: spinner-border;
Variables spinners crecientes:
--#{$prefix}spinner-width: #{$spinner-width};
--#{$prefix}spinner-height: #{$spinner-height};
--#{$prefix}spinner-vertical-align: #{$spinner-vertical-align};
--#{$prefix}spinner-animation-speed: #{$spinner-animation-speed};
--#{$prefix}spinner-animation-name: spinner-grow;
Para ambos spinners, se utilizan pequeñas clases modificadoras de spinners para actualizar los valores de estas variables CSS según sea necesario. Por ejemplo, la clase .spinner-border-sm
hace lo siguiente:
--#{$prefix}spinner-width: #{$spinner-width-sm};
--#{$prefix}spinner-height: #{$spinner-height-sm};
--#{$prefix}spinner-border-width: #{$spinner-border-width-sm};
Variables Sass generales relacionadas
$spinner-width: 2rem;
$spinner-height: $spinner-width;
$spinner-vertical-align: -.125em;
$spinner-border-width: .25em;
$spinner-animation-speed: .75s;
$spinner-width-sm: 1rem;
$spinner-height-sm: $spinner-width-sm;
$spinner-border-width-sm: .2em;
Fotogramas clave
Se utiliza para crear animaciones CSS para nuestros spinners. Incluido en scss/_spinners.scss
.
@keyframes spinner-border {
to { transform: rotate(360deg) #{"/* rtl:ignore */"}; }
}
@keyframes spinner-grow {
0% {
transform: scale(0);
}
50% {
opacity: 1;
transform: none;
}
}