Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Тосты и подсказки

Тост (toast) — короткое уведомление, которое всплывает в углу экрана и само исчезает через несколько секунд: «Задача сохранена», «Новый комментарий». Подсказка (tooltip) — маленький тёмный ярлык с текстом, который появляется при наведении на элемент. Оба компонента отличаются от прочих: атрибутов data-bs-* для них мало, их нужно запустить из JavaScript.

Тост

Разметка тоста — блок toast со шапкой toast-header и телом toast-body. Чтобы тосты стояли в углу окна, их кладут в контейнер toast-container position-fixed bottom-0 end-0 p-3:

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
 
<div style="min-height: 180px">
  <button type="button" class="btn btn-primary" id="saveTask">Сохранить задачу</button>
</div>
 
<div class="toast-container position-fixed bottom-0 end-0 p-3">
  <div id="savedToast" class="toast" role="status" aria-live="polite" aria-atomic="true">
    <div class="toast-header">
      <strong class="me-auto">Tasko</strong>
      <small>только что</small>
      <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Закрыть"></button>
    </div>
    <div class="toast-body">Задача «Подготовить отчёт» сохранена.</div>
  </div>
</div>
 
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<script>
  const toast = bootstrap.Toast.getOrCreateInstance('#savedToast');
  document.querySelector('#saveTask').addEventListener('click', () => toast.show());
</script>

Нажмите кнопку — в правом нижнем углу превью появится уведомление и через 5 секунд пропадёт само. Метод getOrCreateInstance создаёт объект тоста или возвращает уже созданный, а show() показывает его.

Настройки передают атрибутами на блоке тоста: data-bs-delay="3000" меняет время показа, data-bs-autohide="false" оставляет тост до щелчка по крестику.

Подсказка

Элементу добавляют data-bs-toggle="tooltip" и текст в data-bs-title. Подсказки Bootstrap не запускает сам — ради скорости страницы, — поэтому после загрузки скрипта нужно пройтись по таким элементам и создать для каждого объект Tooltip:

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
 
<div class="d-flex gap-2 pt-5 pb-3">
  <button type="button" class="btn btn-outline-secondary" data-bs-toggle="tooltip" data-bs-title="Архивировать проект">
    Архив
  </button>
  <button type="button" class="btn btn-outline-danger" data-bs-toggle="tooltip" data-bs-placement="right" data-bs-title="Удалить без возможности восстановления">
    Удалить
  </button>
</div>
 
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<script>
  document.querySelectorAll('[data-bs-toggle="tooltip"]')
    .forEach((element) => new bootstrap.Tooltip(element));
</script>

Наведите курсор на «Архив» — над кнопкой появится тёмный ярлык. У второй кнопки он справа: сторону задаёт data-bs-placement со значениями top, bottom, left и right. Подсказка появляется и при фокусе с клавиатуры.

Всплывающее окно

Похожий компонент popover — подсказка побольше, с заголовком и текстом, которая открывается по щелчку. Атрибуты те же, но data-bs-toggle="popover", текст в data-bs-content, а запускается он через new bootstrap.Popover(element).

Частая ошибка

Расставить data-bs-toggle="tooltip", не написать код запуска и решить, что подсказки сломаны. Без строки с new bootstrap.Tooltip ничего не появится, и ошибки в консоли не будет. С тостами то же самое: без show() из JavaScript тост не покажется.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.