Documentation
Spinners
Indicate the loading state of a component or page with Bootstrap spinners, built entirely with HTML, CSS, and no JavaScript.
Border spinner
Use the border spinners for a lightweight loading indicator.
<spinner className="spinner-border" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</spinner>
Colors
The border spinner uses currentColor
for its border-color
, meaning you can customize the color with text color utilities.
<spinner className="spinner-border text-primary" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</spinner>
<spinner className="spinner-border text-secondary" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</spinner>
<spinner className="spinner-border text-success" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</spinner>
<spinner className="spinner-border text-danger" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</spinner>
<spinner className="spinner-border text-warning" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</spinner>
<spinner className="spinner-border text-info" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</spinner>
<spinner className="spinner-border text-light" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</spinner>
<spinner className="spinner-border text-dark" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</spinner>
Growing spinner
If you don’t fancy a border spinner, switch to the grow spinner.
<spinner className="spinner-grow" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</spinner>
<spinner className="spinner-grow text-primary" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</spinner>
<spinner className="spinner-grow text-secondary" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</spinner>
<spinner className="spinner-grow text-success" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</spinner>
<spinner className="spinner-grow text-danger" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</spinner>
<spinner className="spinner-grow text-warning" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</spinner>
<spinner className="spinner-grow text-info" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</spinner>
<spinner className="spinner-grow text-light" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</spinner>
<spinner className="spinner-grow text-dark" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</spinner>
Alignment
Spinners in Bootstrap are built with rem
s, currentColor
, and display: inline-flex
. This means they can easily be resized, recolored, and quickly aligned.
Margin
<spinner className="spinner-border m-5" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</spinner>
Placement
Use flexbox utilities, float utilities, or text alignment utilities to place spinners exactly where you need them in any situation.
Flex
<div className="d-flex justify-content-center">
<spinner className="spinner-border m-5" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</spinner>
</div>
Floats
<div className="clearfix">
<spinner className="spinner-border float-end" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent >
</spinner>
</div>
Text align
<div class="text-center">
<spinner className="spinner-border" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent >
</spinner>
</div>
Size
Add .spinner-border-sm
and .spinner-grow-sm
<spinner className="spinner-border spinner-border-sm" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</spinner>
<spinner className="spinner-grow spinner-grow-sm" role="status">
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</spinner>
Buttons
Use spinners within buttons to indicate an action is currently processing or taking place.
<buttons buttonClass="btn-primary" disabled>
<spinner tag="span" className="spinner-border spinner-border-sm" role="status" aria-hidden="true"></spinner>
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</buttons>
<buttons buttonClass="btn-primary" disabled>
<spinner tag="span" className="spinner-border spinner-border-sm" role="status" aria-hidden="true"></spinner>
Loading...
</buttons>
<buttons buttonClass="btn-primary" disabled>
<spinner tag="span" className="spinner-grow spinner-grow-sm" role="status" aria-hidden="true"></spinner>
<spinnercontent className="visually-hidden">Loading...</spinnercontent>
</buttons>
<buttons buttonClass="btn-primary" disabled>
<spinner tag="span" className="spinner-grow spinner-grow-sm" role="status" aria-hidden="true"></spinner>
Loading...
</buttons>