Bootstrap - Toasts: Пособие для начинающих
Здравствуйте, будущие веб-разработчики! Сегодня мы окунемся в奇妙ный мир Bootstrap Toasts. Не волнуйтесь, если вы никогда о них не слышали раньше - к концу этого руководства вы будете «жарить» как профи! ?
Что такое Bootstrap Toasts?
Прежде чем мы начнем, давайте разберемся, что такое Toasts. Представьте, что вы используете мобильное приложение, и вдруг в нижней части экрана появляется небольшое уведомление. Это essentially то, что такое Toast в веб-разработке! Это легковесное уведомление, предназначенное для имитации push-уведомлений, которые мы видим на мобильных устройствах.
Основной Toast
Давайте начнем с основного Toast. Вот как он выглядит в коде:
<div class="toast" role="alert" aria-live="assertive" aria-atomic="true">
<div class="toast-header">
<img src="..." class="rounded me-2" alt="...">
<strong class="me-auto">Bootstrap</strong>
<small>11 минут назад</small>
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Закрыть"></button>
</div>
<div class="toast-body">
Hello, world! This is a Toast message.
</div>
</div>
Давайте разберем это:
- Внешний
div
с классомtoast
- наш основной контейнер. - Внутри мы имеем
toast-header
иtoast-body
. - Заголовок обычно содержит изображение, заголовок, штамп времени и кнопку закрытия.
- Тело - это место, где идет наш основной текст.
Живой Toast
Теперь давайте оживим наш Toast! Для этого нам нужно немного JavaScript:
<button type="button" class="btn btn-primary" id="liveToastBtn">Показать живой toast</button>
<div class="toast-container position-fixed bottom-0 end-0 p-3">
<div id="liveToast" class="toast" role="alert" aria-live="assertive" aria-atomic="true">
<div class="toast-header">
<img src="..." class="rounded me-2" alt="...">
<strong class="me-auto">Bootstrap</strong>
<small>11 минут назад</small>
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Закрыть"></button>
</div>
<div class="toast-body">
Hello, World! This is a live toast message.
</div>
</div>
</div>
<script>
const toastTrigger = document.getElementById('liveToastBtn')
const toastLiveExample = document.getElementById('liveToast')
if (toastTrigger) {
toastTrigger.addEventListener('click', () => {
const toast = new bootstrap.Toast(toastLiveExample)
toast.show()
})
}
</script>
Здесь мы добавили кнопку, которая, когда на нее нажимают, показывает наш Toast. JavaScript в нижней части слушает клик и затем показывает Toast.
Прозрачный Toast
Хотите сделать ваш Toast немного прозрачным? Просто добавьте класс bg-light
:
<div class="toast bg-light" role="alert" aria-live="assertive" aria-atomic="true">
<div class="toast-header">
<img src="..." class="rounded me-2" alt="...">
<strong class="me-auto">Bootstrap</strong>
<small>11 минут назад</small>
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Закрыть"></button>
</div>
<div class="toast-body">
Hello, World! This is a translucent toast.
</div>
</div>
Стекающие Toasts
Что, если вы хотите показать несколько Toasts? Нет проблем! Bootstrap сложит их аккуратно:
<div class="toast-container position-fixed bottom-0 end-0 p-3">
<div class="toast" role="alert" aria-live="assertive" aria-atomic="true">
<div class="toast-header">
<img src="..." class="rounded me-2" alt="...">
<strong class="me-auto">Bootstrap</strong>
<small>just now</small>
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Закрыть"></button>
</div>
<div class="toast-body">
See? Just like this.
</div>
</div>
<div class="toast" role="alert" aria-live="assertive" aria-atomic="true">
<div class="toast-header">
<img src="..." class="rounded me-2" alt="...">
<strong class="me-auto">Bootstrap</strong>
<small>2 seconds ago</small>
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Закрыть"></button>
</div>
<div class="toast-body">
Heads up, toasts will stack automatically
</div>
</div>
</div>
Пользовательский контент
Toasts не ограничиваются только текстом. Вы можете добавить любой HTML-контент, который вам нравится:
<div class="toast" role="alert" aria-live="assertive" aria-atomic="true">
<div class="toast-body">
Hello, world! This is a toast message.
<div class="mt-2 pt-2 border-top">
<button type="button" class="btn btn-primary btn-sm">Take action</button>
<button type="button" class="btn btn-secondary btn-sm" data-bs-dismiss="toast">Close</button>
</div>
</div>
</div>
Здесь мы добавили кнопки в тело Toast. Будьте креативны!
Цветовые схемы
Toasts могут быть разных цветов, чтобы соответствовать теме вашего сайта или указывать на различные типы сообщений:
<div class="toast bg-primary text-white" role="alert" aria-live="assertive" aria-atomic="true">
<div class="toast-header">
<strong class="me-auto">Bootstrap</strong>
<small>11 минут назад</small>
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Закрыть"></button>
</div>
<div class="toast-body">
Hello, world! This is a primary toast.
</div>
</div>
Вы можете заменить bg-primary
на bg-success
, bg-danger
, bg-warning
и т.д.
Размещение Toasts
Toasts могут быть размещены anywhere на вашей странице. Вот как разместить его в правом верхнем углу:
<div aria-live="polite" aria-atomic="true" class="position-relative">
<div class="toast-container position-absolute top-0 end-0 p-3">
<!-- Your toast here -->
</div>
</div>
Доступность
Доступность имеет решающее значение! Всегда включайте атрибуты role="alert"
и aria-live="assertive"
, чтобы убедиться, что экранные readers могут корректно объявить ваши Toasts.
Вот таблица, резюмирующая ключевые методы Toast:
Метод | Описание |
---|---|
show() | Показывает Toast |
hide() | Скрывает Toast |
dispose() | Скрывает Toast и удаляет его из DOM |
И это все! Вы теперь мастер Toast. Помните, что практика делает perfect, так что попробуйте интегрировать это в ваш следующий проект. Счастливого кодирования! ?
Credits: Image by storyset