Здравице
Пусх обавештења својим посетиоцима уз здравицу, лагану и лако прилагодљиву поруку упозорења.
Здравице су лагана обавештења дизајнирана да опонашају пусх обавештења која су популаризовала мобилни и десктоп оперативни системи. Направљени су са флексбоксом, тако да их је лако поравнати и позиционирати.
Преглед
Ствари које треба знати када користите додатак за тост:
- Здравице се могу укључити из разлога перформанси, тако да их морате сами иницијализирати .
- Здравице ће се аутоматски сакрити ако не наведете
autohide: false
.
prefers-reduced-motion
медијског упита. Погледајте одељак о
смањеном покрету наше документације о приступачности .
Примери
Басиц
Да бисте подстакли прошириве и предвидљиве здравице, препоручујемо заглавље и тело. Тост заглавља користе display: flex
, омогућавајући лако поравнавање садржаја захваљујући нашим услужним програмима маргина и флекбок.
Здравице су флексибилне колико вам је потребно и имају врло мало потребне ознаке. У најмању руку, захтевамо један елемент да садржи ваш „наздрављени“ садржај и снажно подстичемо дугме за одбацивање.
<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 mins ago</small>
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
</div>
<div class="toast-body">
Hello, world! This is a toast message.
</div>
</div>
.hide
класу да би потпуно сакриле здравицу (са
display:none
, а не само са
opacity:0
). Ово сада више није потребно. Међутим, ради компатибилности уназад, наша скрипта ће наставити да мења класу (иако за то нема практичне потребе) до следеће веће верзије.
Живи пример
Кликните на дугме испод да бисте приказали здравицу (позиционирану са нашим услужним програмима у доњем десном углу) која је подразумевано скривена.
<button type="button" class="btn btn-primary" id="liveToastBtn">Show live toast</button>
<div class="position-fixed bottom-0 end-0 p-3" style="z-index: 11">
<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 mins ago</small>
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
</div>
<div class="toast-body">
Hello, world! This is a toast message.
</div>
</div>
</div>
Користимо следећи ЈаваСцрипт да покренемо нашу демо здравицу уживо:
var toastTrigger = document.getElementById('liveToastBtn')
var toastLiveExample = document.getElementById('liveToast')
if (toastTrigger) {
toastTrigger.addEventListener('click', function () {
var toast = new bootstrap.Toast(toastLiveExample)
toast.show()
})
}
Транслуцент
Тостови су благо прозирни да се стапају са оним што је испод њих.
<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 class="text-muted">11 mins ago</small>
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
</div>
<div class="toast-body">
Hello, world! This is a toast message.
</div>
</div>
Слагање
Можете слагати тостове тако што ћете их умотати у посуду за тост, што ће вертикално додати мало размака.
<div class="toast-container">
<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 class="text-muted">just now</small>
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></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 class="text-muted">2 seconds ago</small>
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
</div>
<div class="toast-body">
Heads up, toasts will stack automatically
</div>
</div>
</div>
Прилагођени садржај
Прилагодите своје здравице тако што ћете уклонити подкомпоненте, подесити их помоћу услужних програма или додавањем сопствених ознака. Овде смо направили једноставнију здравицу тако што смо уклонили подразумевани .toast-header
, додали прилагођену икону сакривања из Боотстрап икона и користили неке флексбокс услужне програме да бисмо прилагодили изглед.
<div class="toast align-items-center" role="alert" aria-live="assertive" aria-atomic="true">
<div class="d-flex">
<div class="toast-body">
Hello, world! This is a toast message.
</div>
<button type="button" class="btn-close me-2 m-auto" data-bs-dismiss="toast" aria-label="Close"></button>
</div>
</div>
Алтернативно, можете додати додатне контроле и компоненте здравицама.
<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>
Шеме боја
На основу горњег примера, можете креирати различите шеме боја тоста помоћу наших услужних програма за боје и позадину . Овде смо додали .bg-primary
и .text-white
у .toast
, а затим додали .btn-close-white
у наше дугме за затварање. За оштру ивицу уклањамо подразумевану ивицу помоћу .border-0
.
<div class="toast align-items-center text-white bg-primary border-0" role="alert" aria-live="assertive" aria-atomic="true">
<div class="d-flex">
<div class="toast-body">
Hello, world! This is a toast message.
</div>
<button type="button" class="btn-close btn-close-white me-2 m-auto" data-bs-dismiss="toast" aria-label="Close"></button>
</div>
</div>
Постављање
Поставите здравице са прилагођеним ЦСС-ом како вам требају. Горњи десни се често користи за обавештења, као и горњи средњи. Ако ћете икада показати само једну здравицу одједном, ставите стилове позиционирања тачно на .toast
.
<form>
<div class="mb-3">
<label for="selectToastPlacement">Toast placement</label>
<select class="form-select mt-2" id="selectToastPlacement">
<option value="" selected>Select a position...</option>
<option value="top-0 start-0">Top left</option>
<option value="top-0 start-50 translate-middle-x">Top center</option>
<option value="top-0 end-0">Top right</option>
<option value="top-50 start-0 translate-middle-y">Middle left</option>
<option value="top-50 start-50 translate-middle">Middle center</option>
<option value="top-50 end-0 translate-middle-y">Middle right</option>
<option value="bottom-0 start-0">Bottom left</option>
<option value="bottom-0 start-50 translate-middle-x">Bottom center</option>
<option value="bottom-0 end-0">Bottom right</option>
</select>
</div>
</form>
<div aria-live="polite" aria-atomic="true" class="bg-dark position-relative bd-example-toasts">
<div class="toast-container position-absolute p-3" id="toastPlacement">
<div class="toast">
<div class="toast-header">
<img src="..." class="rounded me-2" alt="...">
<strong class="me-auto">Bootstrap</strong>
<small>11 mins ago</small>
</div>
<div class="toast-body">
Hello, world! This is a toast message.
</div>
</div>
</div>
</div>
За системе који генеришу више обавештења, размислите о коришћењу елемента за омотавање како би се могли лако слагати.
<div aria-live="polite" aria-atomic="true" class="position-relative">
<!-- Position it: -->
<!-- - `.toast-container` for spacing between toasts -->
<!-- - `.position-absolute`, `top-0` & `end-0` to position the toasts in the upper right corner -->
<!-- - `.p-3` to prevent the toasts from sticking to the edge of the container -->
<div class="toast-container position-absolute top-0 end-0 p-3">
<!-- Then put toasts within -->
<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 class="text-muted">just now</small>
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></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 class="text-muted">2 seconds ago</small>
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
</div>
<div class="toast-body">
Heads up, toasts will stack automatically
</div>
</div>
</div>
</div>
Такође можете постати фенси са флекбок услужним програмима за поравнавање здравица хоризонтално и/или вертикално.
<!-- Flexbox container for aligning the toasts -->
<div aria-live="polite" aria-atomic="true" class="d-flex justify-content-center align-items-center w-100">
<!-- Then put toasts within -->
<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 mins ago</small>
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
</div>
<div class="toast-body">
Hello, world! This is a toast message.
</div>
</div>
</div>
Приступачност
Здравице су намењене да буду мали прекиди вашим посетиоцима или корисницима, тако да да бисте помогли онима који имају читаче екрана и сличне помоћне технологије, требало би да умотате своје здравице у aria-live
регион . Промене у живим регионима (као што је убацивање/ажурирање компоненте тоста) аутоматски најављују читачи екрана без потребе да померају фокус корисника или на други начин прекидају корисника. Поред тога, укључите aria-atomic="true"
како бисте осигурали да се цела здравица увек најављује као једна (атомска) јединица, а не само да се најављује шта је промењено (што би могло довести до проблема ако ажурирате само део садржаја здравице или ако прикажете исти садржај здравице у каснијем тренутку). Ако су потребне информације важне за процес, нпр. за листу грешака у обрасцу, онда користите компоненту упозорењауместо тоста.
Имајте на уму да живи регион мора бити присутан у маркупу пре него што се здравица генерише или ажурира. Ако динамички генеришете обоје у исто време и убаците их на страницу, они углавном неће бити најављени помоћу помоћних технологија.
Такође морате да прилагодите ниво role
и aria-live
у зависности од садржаја. Ако је то важна порука као што је грешка, користите role="alert" aria-live="assertive"
, у супротном користите role="status" aria-live="polite"
атрибуте.
Како се садржај који приказујете мења, обавезно ажурирајте delay
временско ограничење тако да корисници имају довољно времена да прочитају здравицу.
<div class="toast" role="alert" aria-live="polite" aria-atomic="true" data-bs-delay="10000">
<div role="alert" aria-live="assertive" aria-atomic="true">...</div>
</div>
Када користите autohide: false
, морате додати дугме за затварање да бисте омогућили корисницима да одбаце здравицу.
<div role="alert" aria-live="assertive" aria-atomic="true" class="toast" data-bs-autohide="false">
<div class="toast-header">
<img src="..." class="rounded me-2" alt="...">
<strong class="me-auto">Bootstrap</strong>
<small>11 mins ago</small>
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
</div>
<div class="toast-body">
Hello, world! This is a toast message.
</div>
</div>
Иако је технички могуће додати контроле које се могу фокусирати/радити (као што су додатна дугмад или везе) у здравицу, требало би да избегавате да то радите за аутоматско скривање здравица. Чак и ако здравици дате дуго delay
временско ограничење , корисницима тастатуре и помоћне технологије може бити тешко да дођу до здравице на време да предузму акцију (пошто здравице не добијају фокус када су приказане). Ако апсолутно морате да имате додатне контроле, препоручујемо да користите здравицу са autohide: false
.
Сасс
Променљиве
$toast-max-width: 350px;
$toast-padding-x: .75rem;
$toast-padding-y: .5rem;
$toast-font-size: .875rem;
$toast-color: null;
$toast-background-color: rgba($white, .85);
$toast-border-width: 1px;
$toast-border-color: rgba($black, .1);
$toast-border-radius: $border-radius;
$toast-box-shadow: $box-shadow;
$toast-spacing: $container-padding-x;
$toast-header-color: $gray-600;
$toast-header-background-color: rgba($white, .85);
$toast-header-border-color: rgba($black, .05);
Употреба
Иницијализујте здравице преко ЈаваСцрипт-а:
var toastElList = [].slice.call(document.querySelectorAll('.toast'))
var toastList = toastElList.map(function (toastEl) {
return new bootstrap.Toast(toastEl, option)
})
Триггерс
Отпуштање се може постићи помоћу data
атрибута на дугмету у здравици као што је приказано у наставку:
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
или на дугме изван здравице користећи data-bs-target
као што је приказано у наставку:
<button type="button" class="btn-close" data-bs-dismiss="toast" data-bs-target="#my-toast" aria-label="Close"></button>
Опције
Опције се могу пренети преко атрибута података или ЈаваСцрипт-а. За атрибуте података додајте име опције у data-bs-
, као у data-bs-animation=""
.
Име | Тип | Уобичајено | Опис |
---|---|---|---|
animation |
боолеан | true |
Примените прелаз ЦСС фаде на здравицу |
autohide |
боолеан | true |
Аутоматски сакриј здравицу |
delay |
број | 5000 |
Кашњење сакривања здравице (мс) |
Методе
Асинхроне методе и прелази
Све АПИ методе су асинхроне и покрећу транзицију . Они се враћају позиваоцу чим се транзиција започне, али пре него што се заврши . Поред тога, позив методе за прелазну компоненту биће занемарен .
Погледајте нашу ЈаваСцрипт документацију за више информација .
Прикажи
Открива здравицу елемента. Враћа позиваоцу пре него што је здравица заиста приказана (тј. пре него што се shown.bs.toast
догађај деси). Морате ручно да позовете ову методу, уместо тога ваша здравица се неће приказати.
toast.show()
сакрити
Сакрива здравицу елемента. Враћа се позиваоцу пре него што је здравица заиста скривена (тј. пре него што се hidden.bs.toast
догађај деси). Морате ручно да позовете овај метод ако сте autohide
направили false
.
toast.hide()
располагати
Сакрива здравицу елемента. Здравица ће остати у ДОМ-у, али се више неће приказивати.
toast.dispose()
гетИнстанце
Статичка метода која вам омогућава да добијете инстанцу тоста повезане са ДОМ елементом
var myToastEl = document.getElementById('myToastEl')
var myToast = bootstrap.Toast.getInstance(myToastEl) // Returns a Bootstrap toast instance
гетОрЦреатеИнстанце
Статичка метода која вам омогућава да добијете инстанцу тоста повезана са ДОМ елементом или креирате нову у случају да није иницијализована
var myToastEl = document.getElementById('myToastEl')
var myToast = bootstrap.Toast.getOrCreateInstance(myToastEl) // Returns a Bootstrap toast instance
Догађаји
Тип догађаја | Опис |
---|---|
show.bs.toast |
Овај догађај се покреће одмах када show се позове метод инстанце. |
shown.bs.toast |
Овај догађај се покреће када здравица постане видљива кориснику. |
hide.bs.toast |
Овај догађај се покреће одмах када hide се позове метод инстанце. |
hidden.bs.toast |
Овај догађај се покреће када се здравица заврши са скривањем од корисника. |
var myToastEl = document.getElementById('myToast')
myToastEl.addEventListener('hidden.bs.toast', function () {
// do something...
})