Перейти к основному содержанию Перейти к навигации по документам
Cмотреть на GitHub

Спиннеры

Укажите состояние загрузки компонента или страницы с помощью спиннеров Bootstrap, созданных полностью с использованием HTML, CSS и без JavaScript.

Обзор

"Спиннеры" Bootstrap можно использовать для отображения состояния загрузки в ваших проектах. Они построены только с использованием HTML и CSS, поэтому вам не нужен JavaScript. Вам, однако, понадобится использовать некоторые пользовательские парамеры JavaScript для переключения их отображения. Внешний вид, выравнивание и размеры можно легко настроить с помощью наших служебных классов.

В целях доступности каждый загрузчик содержит role="status" и вложенный <span class="sr-only">Loading...</span>.

Эффект анимации этого компонента зависит от медиазапроса prefers-reduced-motion. См. раздел с уменьшенным движением в нашей документации по специальным возможностям.

Спиннер с границей

Используйте спиннеры с границей для легкого индикатора загрузки.

Загрузка...
<div class="spinner-border" role="status">
  <span class="visually-hidden">Загрузка...</span>
</div>

Цвета

Спиннер с границей использует currentColor в качестве своего border-color, что означает, что Вы можете настроить цвет с помощью утилит цвета текста. Вы можете использовать любую из наших утилит цвета текста на стандартном спиннере.

Загрузка...
Загрузка...
Загрузка...
Загрузка...
Загрузка...
Загрузка...
Загрузка...
Загрузка...
<div class="spinner-border text-primary" role="status">
  <span class="visually-hidden">Загрузка...</span>
</div>
<div class="spinner-border text-secondary" role="status">
  <span class="visually-hidden">Загрузка...</span>
</div>
<div class="spinner-border text-success" role="status">
  <span class="visually-hidden">Загрузка...</span>
</div>
<div class="spinner-border text-danger" role="status">
  <span class="visually-hidden">Загрузка...</span>
</div>
<div class="spinner-border text-warning" role="status">
  <span class="visually-hidden">Загрузка...</span>
</div>
<div class="spinner-border text-info" role="status">
  <span class="visually-hidden">Загрузка...</span>
</div>
<div class="spinner-border text-light" role="status">
  <span class="visually-hidden">Загрузка...</span>
</div>
<div class="spinner-border text-dark" role="status">
  <span class="visually-hidden">Загрузка...</span>
</div>
Почему бы не использовать утилиты border-color? Каждая граница определяет transparent границу по крайней мере для одной стороны, поэтому утилиты .border-{color} переопределят это.

Увеличивающийся спиннер

Если Вам не нравится спиннер с границами, переключитесь на увеличивающийся спиннер. Хотя технически он не вращается, он постоянно растет!

Загрузка...
<div class="spinner-grow" role="status">
  <span class="visually-hidden">Загрузка...</span>
</div>

Опять же, этот спиннер построен с помощью currentColor, так что Вы можете легко изменить его внешний вид с помощью утилит цвета текста. Здесь он выделен синим цветом вместе с поддерживаемыми вариантами.

Загрузка...
Загрузка...
Загрузка...
Загрузка...
Загрузка...
Загрузка...
Загрузка...
Загрузка...
<div class="spinner-grow text-primary" role="status">
  <span class="visually-hidden">Загрузка...</span>
</div>
<div class="spinner-grow text-secondary" role="status">
  <span class="visually-hidden">Загрузка...</span>
</div>
<div class="spinner-grow text-success" role="status">
  <span class="visually-hidden">Загрузка...</span>
</div>
<div class="spinner-grow text-danger" role="status">
  <span class="visually-hidden">Загрузка...</span>
</div>
<div class="spinner-grow text-warning" role="status">
  <span class="visually-hidden">Загрузка...</span>
</div>
<div class="spinner-grow text-info" role="status">
  <span class="visually-hidden">Загрузка...</span>
</div>
<div class="spinner-grow text-light" role="status">
  <span class="visually-hidden">Загрузка...</span>
</div>
<div class="spinner-grow text-dark" role="status">
  <span class="visually-hidden">Загрузка...</span>
</div>

Центровка

Спиннеры в Bootstrap построены с помощью rem, currentColor и display: inline-flex. Это означает, что их можно легко изменить размер, перекрасить и быстро выровнять.

Отступы

Используйте утилиты полей, например, .m-5, чтобы упростить интервалы.

Загрузка...
<div class="spinner-border m-5" role="status">
  <span class="visually-hidden">Загрузка...</span>
</div>

Размещение

Используйте flexbox утилиты, float утилиты или утилиты выравнивание текста для размещения спиннеров именно там, где они вам нужны в любой ситуации.

Flex

Загрузка...
<div class="d-flex justify-content-center">
  <div class="spinner-border" role="status">
    <span class="visually-hidden">Загрузка...</span>
  </div>
</div>
Загрузка...
<div class="d-flex align-items-center">
  <strong>Загрузка...</strong>
  <div class="spinner-border ms-auto" role="status" aria-hidden="true"></div>
</div>

Floats

Загрузка...
<div class="clearfix">
  <div class="spinner-border float-end" role="status">
    <span class="visually-hidden">Загрузка...</span>
  </div>
</div>

Выравнивание текста

Загрузка...
<div class="text-center">
  <div class="spinner-border" role="status">
    <span class="visually-hidden">Загрузка...</span>
  </div>
</div>

Размер

Добавьте .spinner-border-sm и .spinner-grow-sm, чтобы получить счетчик меньшего размера, который можно быстро использовать в других компонентах.

Загрузка...
Загрузка...
<div class="spinner-border spinner-border-sm" role="status">
  <span class="visually-hidden">Загрузка...</span>
</div>
<div class="spinner-grow spinner-grow-sm" role="status">
  <span class="visually-hidden">Загрузка...</span>
</div>

Или используйте собственный CSS или встроенные стили, чтобы изменить размеры по мере необходимости.

Загрузка...
Загрузка...
<div class="spinner-border" style="width: 3rem; height: 3rem;" role="status">
  <span class="visually-hidden">Загрузка...</span>
</div>
<div class="spinner-grow" style="width: 3rem; height: 3rem;" role="status">
  <span class="visually-hidden">Загрузка...</span>
</div>

Кнопки

Используйте счетчики внутри кнопок, чтобы указать, что действие в настоящее время обрабатывается или выполняется. Вы также можете поменять местами текст из элемента счетчика и использовать текст кнопки по мере необходимости.

<button class="btn btn-primary" type="button" disabled>
  <span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>
  <span class="visually-hidden">Загрузка...</span>
</button>
<button class="btn btn-primary" type="button" disabled>
  <span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>
  Загрузка...
</button>
<button class="btn btn-primary" type="button" disabled>
  <span class="spinner-grow spinner-grow-sm" role="status" aria-hidden="true"></span>
  <span class="visually-hidden">Загрузка...</span>
</button>
<button class="btn btn-primary" type="button" disabled>
  <span class="spinner-grow spinner-grow-sm" role="status" aria-hidden="true"></span>
  Загрузка...
</button>

Sass

Переменные

$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;

Ключевые кадры

Используется для создания анимации CSS для наших спиннеров. Включен в scss/_spinners.scss.

@keyframes spinner-border {
  to { transform: rotate(360deg) #{"/* rtl:ignore */"}; }
}
@keyframes spinner-grow {
  0% {
    transform: scale(0);
  }
  50% {
    opacity: 1;
    transform: none;
  }
}