Toasts
Agahdariyên ji bo mêvanên xwe bi toast, peyamek hişyariya sivik û bi hêsanî xwerû bişînin.
Toasts notifications sivik in ku ji bo teqlîdkirina notifications push ku ji hêla pergalên xebitandinê yên mobîl û sermaseyê ve hatine populer kirin hatine çêkirin. Ew bi flexbox-ê hatine çêkirin, ji ber vê yekê ew bi hev veqetandin û pozîsyonê hêsan in.
Têgihiştinî
Tiştên ku divê hûn zanibin dema ku pêveka toast bikar tînin:
- Toast ji ber sedemên performansê têne hilbijartin, ji ber vê yekê divê hûn bi xwe wan dest pê bikin .
- Ger tu diyar nekî Toast dê bixweber veşêrin
autohide: false
.
prefers-reduced-motion
medyayê ve girêdayî ye. Binêre
beşa tevgera kêmkirî ya belgeya gihîştina me .
Examples
Bingehîn
Ji bo teşwîqkirina tostên berfireh û pêşbînîkirî, em sernav û laşek pêşniyar dikin. Sernavên Toast bikar tînin display: flex
, bi saya karûbarên meya marjînal û flexbox-ê rê dide hevrêzkirina naverokê hêsan.
Toast bi qasî ku hûn hewce ne maqûl in û îşaretek pir hindik hewce ne. Bi kêmanî, em ji hêmanek yekane hewce dikin ku naveroka weya "toast" hebe û bi tundî bişkokek betalkirinê teşwîq bike.
<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
kirin da ku tostek bi tevahî veşêre (bi
display:none
, ne tenê bi
opacity:0
). Ev êdî ne pêwîst e. Lêbelê, ji bo lihevhatina paşverû, skrîpta me dê heya guhertoya sereke ya din veguheztina polê bidomîne (her çend hewcedariya wê ya pratîkî tune be).
Mînaka zindî
Bişkojka jêrîn bikirtînin da ku toastek (bi karûbarên me yên li quncika jêrîn a rastê ve hatî cîh kirin) ku ji hêla xwerû ve hatî veşartin nîşan bide.
<button type="button" class="btn btn-primary" id="liveToastBtn">Show live 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 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>
Em JavaScript-a jêrîn bikar tînin da ku demo-ya toastê ya zindî bidin destpêkirin:
const toastTrigger = document.getElementById('liveToastBtn')
const toastLiveExample = document.getElementById('liveToast')
if (toastTrigger) {
toastTrigger.addEventListener('click', () => {
const toast = new bootstrap.Toast(toastLiveExample)
toast.show()
})
}
Translucent
Toast hinekî şefaf in ku bi ya ku li binê wan heye re tevbigerin.
<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>
Stacking
Hûn dikarin tostanan bi pêçandina wan di konteynirek toastê de bixin stûyê, ku dê bi rengek vertîkal hin cîh lê zêde bike.
<div class="toast-container position-static">
<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>
naveroka Custom
Toastên xwe bi rakirina bine-pêkmanan, guheztina wan bi karûbaran , an bi lê zêdekirina nîşankirina xweya xwe xweş bikin. Li vir me bi rakirina .toast-header
xwerû, îkonek veşartî ya xwerû ya ji îkonên Bootstrap -ê zêde kir , û bi karanîna hin karûbarên flexbox -ê ji bo eyarkirina layoutê ve toastek hêsantir çêkir .
<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>
Wekî din, hûn dikarin kontrol û hêmanên din jî li toastan zêde bikin.
<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>
Rengên rengan
Li ser mînaka jorîn ava kirin, hûn dikarin bi karûbarên meya reng û paşerojê re nexşeyên rengên cûda yên toast biafirînin . Li vir me li .text-bg-primary
, .toast
û dûv .btn-close-white
re li bişkoka xweya girtina xwe zêde kir. Ji bo perdeyek hişk, em sînorê xwerû bi .border-0
.
<div class="toast align-items-center text-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>
Cihkirin
Li gorî ku hûn hewce ne bi CSS-ya xwerû toastan bi cih bikin. Rastê jorîn bi gelemperî ji bo ragihandinê tê bikar anîn, wekî navîna jorîn. Ger hûn ê her gav tenê yek tost nîşan bidin, şêwazên pozîsyonê rast li ser bixin .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 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>
Ji bo pergalên ku bêtir agahdarî diafirînin, bi karanîna hêmanek pêçandî bifikirin da ku ew bi hêsanî bicivînin.
<div aria-live="polite" aria-atomic="true" class="position-relative">
<!-- Position it: -->
<!-- - `.toast-container` for spacing between toasts -->
<!-- - `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 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>
Her weha hûn dikarin bi karûbarên flexbox-ê xweş bibin da ku tostanan bi horizontî û/an verastalî hev bikin.
<!-- 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>
Gihîştina
Toast têne armanc kirin ku ji bo serdan an bikarhênerên we re qutkirinên piçûk bin, ji ber vê yekê ji bo ku hûn bi xwendevanên ekranê û teknolojiyên alîkar ên mîna wan re bibin alîkar, divê hûn tostanên xwe li aria-live
herêmek bipêçin . Guhertinên li herêmên zindî (wek derzîkirin/nûvekirina hêmanek toast) bixweber ji hêla xwendevanên ekranê ve têne ragihandin bêyî ku hewce bike ku bala bikarhêner biguhezîne an bi rengek din bikarhêner were qut kirin. Wekî din, têxin nav aria-atomic="true"
xwe da ku hûn pê ewle bibin ku tevahî toast her gav wekî yekîneyek yekane (atomî) tê ragihandin, ji bilî ragihandina tiştê ku hatî guhertin (ku dibe sedema pirsgirêkan heke hûn tenê beşek ji naveroka toast nûve bikin, an heke heman naveroka toastê nîşan bidin. di demeke paşîn de). Ger agahdariya ku hewce dike ji bo pêvajoyê girîng e, mînakî ji bo navnîşek xeletiyên di formekê de, wê hingê beşa hişyariyê bikar bînin.li şûna toast.
Bala xwe bidinê ku berî ku toast were çêkirin an nûvekirin pêdivî ye ku devera zindî di nîşankirinê de hebe. Ger hûn di heman demê de herduyan bi dînamîk biafirînin û wan di rûpelê de derxînin, ew ê bi gelemperî ji hêla teknolojiyên arîkar ve neyên ragihandin.
Di heman demê de pêdivî ye ku hûn li gorî naverokê astê role
û astê biguhezînin. aria-live
Ger ew peyamek girîng e mîna xeletiyek, bikar bînin role="alert" aria-live="assertive"
, wekî din role="status" aria-live="polite"
taybetmendiyan bikar bînin.
Ji ber ku naveroka ku hûn nîşan didin diguhezin, bê guman wextê nûve bikin da ku bikarhêner ji bo xwendina tostê wextê têr hebe 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>
Dema ku hûn bikar tînin autohide: false
, divê hûn bişkokek nêzîk lê zêde bikin da ku bihêlin bikarhêneran tostê biavêjin.
<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>
Dema ku ji hêla teknîkî ve gengaz e ku meriv kontrolên baldar/çalakbar (wekî bişkok an girêdanên din) li toastê zêde bike, divê hûn ji bo xweveşartina toastan ji kirina vê yekê dûr bisekinin. Tewra ku hûn demek dirêj dirêj bidin delay
toastê , bikarhênerên klavyeyê û teknolojiya arîkar dibe ku dijwar be ku di wextê xwe de bigihîjin toastê ku tevbigerin (ji ber ku toast dema ku têne xuyang kirin balê nagirin). Heke hûn bê guman hewce ne ku kontrolên din hebin, em pêşniyar dikin ku toastek bi autohide: false
.
CSS
Variables
Di v5.2.0 de hate zêdekirinWekî beşek ji nêzîkbûna guhêrbarên CSS-ê yên pêşveçûyî yên Bootstrap, toast naha guhêrbarên CSS-ê yên herêmî li ser .toast
ji bo xwerûkirina rast-dema pêşkeftî bikar tînin. Nirxên ji bo guhêrbarên CSS bi Sass ve têne danîn, ji ber vê yekê xwerûkirina Sass hîn jî piştgirî ye.
--#{$prefix}toast-zindex: #{$zindex-toast};
--#{$prefix}toast-padding-x: #{$toast-padding-x};
--#{$prefix}toast-padding-y: #{$toast-padding-y};
--#{$prefix}toast-spacing: #{$toast-spacing};
--#{$prefix}toast-max-width: #{$toast-max-width};
@include rfs($toast-font-size, --#{$prefix}toast-font-size);
--#{$prefix}toast-color: #{$toast-color};
--#{$prefix}toast-bg: #{$toast-background-color};
--#{$prefix}toast-border-width: #{$toast-border-width};
--#{$prefix}toast-border-color: #{$toast-border-color};
--#{$prefix}toast-border-radius: #{$toast-border-radius};
--#{$prefix}toast-box-shadow: #{$toast-box-shadow};
--#{$prefix}toast-header-color: #{$toast-header-color};
--#{$prefix}toast-header-bg: #{$toast-header-background-color};
--#{$prefix}toast-header-border-color: #{$toast-header-border-color};
Guherbarên Sass
$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: $border-width;
$toast-border-color: var(--#{$prefix}border-color-translucent);
$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);
Bikaranîna
Bi JavaScriptê toastan bidin destpêkirin:
const toastElList = document.querySelectorAll('.toast')
const toastList = [...toastElList].map(toastEl => new bootstrap.Toast(toastEl, option))
Triggers
data
Veqetandin dikare bi taybetmendiya li ser bişkokek di nav toastê de ku li jêr hatî destnîşan kirin were bidestxistin :
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
an li ser bişkokek li derveyî toastêdata-bs-target
wekî ku li jêr hatî destnîşan kirin bikar bînin :
<button type="button" class="btn-close" data-bs-dismiss="toast" data-bs-target="#my-toast" aria-label="Close"></button>
Vebijêrk
Ji ber ku vebijark dikarin bi taybetmendiyên daneyan an JavaScriptê ve werin derbas kirin, hûn dikarin navek vebijarkê lê zêde bikin data-bs-
, wekî di data-bs-animation="{value}"
. Dema ku vebijarkan bi taybetmendiyên daneyê re derbas bikin, pê ewle bin ku hûn celebê doza navê vebijarkê ji " camelCase " veguherînin " kebab-case ". Mînakî, data-bs-custom-class="beautifier"
li şûna bikar bînin data-bs-customClass="beautifier"
.
Ji Bootstrap 5.2.0-ê, hemî pêkhate taybetmendiyek daneya veqetandî ya ceribandinêdata-bs-config
piştgirî dikin ku dikare veavakirina hêmanek hêsan wekî rêzek JSON bihewîne. Dema ku hêmanek hebe data-bs-config='{"delay":0, "title":123}'
û data-bs-title="456"
taybetmendî hebe, nirxa paşîn title
dê bibe 456
û taybetmendiyên daneya veqetandî dê nirxên ku li ser hatine dayîn derbas bikin data-bs-config
. Digel vê yekê, taybetmendiyên daneya heyî dikarin nirxên JSON ên mîna data-bs-delay='{"show":0,"hide":150}'
.
Nav | Awa | Destçûnî | Terîf |
---|---|---|---|
animation |
boolean | true |
Veguheztina fade ya CSS-ê li toastê bicîh bikin. |
autohide |
boolean | true |
Piştî derengiyê bixweber toast veşêre. |
delay |
jimare | 5000 |
Berî veşartina tostê bi milî çirkeyan dereng bihêlin. |
Methods
Rêbaz û veguherînên Asynchronous
Hemî rêbazên API-ê asynkron in û veguherînek dest pê dikin . Gava ku veguhêz dest pê kir lê berî ku biqede ew vedigerin bangkerê . Wekî din, bangek rêbazek li ser pêkhateyek veguhêz dê were paşguh kirin.
Awa | Terîf |
---|---|
dispose |
Tiştek hêmanek vedişêre. Tişta we dê li ser DOM-ê bimîne lê êdî nayê xuyang kirin. |
getInstance |
Rêbaza statîk a ku dihêle hûn mînaka toastê ya ku bi hêmanek DOM-ê ve girêdayî ye bistînin . Mînakî: Mînakek const myToastEl = document.getElementById('myToastEl') const myToast = bootstrap.Toast.getInstance(myToastEl) toastek Bootstrap vedigerîne. |
getOrCreateInstance |
Rêbaza statîkî ya ku dihêle hûn mînaka tostê ya ku bi hêmanek DOM-ê ve girêdayî ye bistînin, an jî yek nû biafirînin, heke ew nehatibe destpêkirin. const myToastEl = document.getElementById('myToastEl') const myToast = bootstrap.Toast.getOrCreateInstance(myToastEl) Mînakek toastek Bootstrap vedigerîne. |
hide |
Tiştek hêmanek vedişêre. Berî ku tost bi rastî veşêre (ango berî ku hidden.bs.toast bûyer çêbibe) vedigere bangkerê. Ger we çêkiriye divê hûn bi destan bangî vê rêbazê autohide bikin false . |
isShown |
Li gorî rewşa dîtbarî ya toastê boolean vedigerîne. |
show |
Tiştek hêmanek eşkere dike. Berî ku tost bi rastî were xuyang kirin (ango berî ku shown.bs.toast bûyer çêbibe) vedigere bangewazî. Pêdivî ye ku hûn bi destan bangî vê rêbazê bikin, li şûna wê tosta we nayê xuyang kirin. |
Events
Bûyer | Terîf |
---|---|
hide.bs.toast |
hide Dema ku rêbaza nimûneyê hate gazîkirin , ev bûyer tavilê tê şewitandin . |
hidden.bs.toast |
Dema ku tost ji bikarhênerê veşartî xilas bû ev bûyer tê şewitandin. |
show.bs.toast |
show Dema ku rêbaza nimûneyê tê gazî kirin ev bûyer tavilê dişewite. |
shown.bs.toast |
Dema ku tost ji bikarhênerê re xuya bibe ev bûyer tê şewitandin. |
const myToastEl = document.getElementById('myToast')
myToastEl.addEventListener('hidden.bs.toast', () => {
// do something...
})