Пређи на главни садржај Прескочи на навигацију докумената
in English

Здравице

Пусх обавештења својим посетиоцима уз здравицу, лагану и лако прилагодљиву поруку упозорења.

Здравице су лагана обавештења дизајнирана да опонашају пусх обавештења која су популаризовала мобилни и десктоп оперативни системи. Направљени су са флексбоксом, тако да их је лако поравнати и позиционирати.

Преглед

Ствари које треба знати када користите додатак за тост:

  • Здравице се могу укључити из разлога перформанси, тако да их морате сами иницијализирати .
  • Здравице ће се аутоматски сакрити ако не наведете 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.

Боотстрап пре 11 минута
Здраво Свете! Ово је порука здравице.
<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...
})