Popovers
Dokumentado kaj ekzemploj por aldoni Bootstrap popovers, kiel tiuj trovitaj en iOS, al iu ajn elemento en via retejo.
Superrigardo
Aferoj sciindaj kiam vi uzas la popover-kromaĵon:
- Popovers fidas je la triaparta biblioteko Popper por poziciigado. Vi devas inkluzivi popper.min.js antaŭ
bootstrap.js
, aŭ uzi unubootstrap.bundle.min.js
kiu enhavas Popper. - Popovers postulas la popover kromaĵon kiel dependeco.
- Popovers estas aligeblaj pro rendimentokialoj, do vi devas pravigi ilin mem .
- Nul-longo
title
kajcontent
valoroj neniam montros popover. - Specifu
container: 'body'
por eviti bildigajn problemojn en pli kompleksaj komponantoj (kiel niaj eniggrupoj, butongrupoj, ktp). - Deĉenigi popovers sur kaŝitaj elementoj ne funkcios.
- Popovers por
.disabled
aŭdisabled
elementoj devas esti ekigitaj sur envolvaĵelemento. - Kiam ekigitaj de ankroj kiuj volvas trans multoblaj linioj, popovers estos centritaj inter la totala larĝo de la ankroj. Uzu
.text-nowrap
sur via<a>
por eviti ĉi tiun konduton. - Popovers devas esti kaŝitaj antaŭ ol iliaj ekvivalentaj elementoj estis forigitaj de la DOM.
- Popovers povas esti ekigitaj danke al elemento ene de ombro DOM.
prefers-reduced-motion
amaskomunikila demando. Vidu la
sekcion pri reduktita moviĝo de nia dokumentaro pri alirebleco .
Daŭre legu por vidi kiel popovers funkcias kun kelkaj ekzemploj.
Ekzemploj
Ebligu popovers
Kiel menciite supre, vi devas pravalorigi popovers antaŭ ol ili povas esti uzataj. Unu maniero pravalorigi ĉiujn popovers sur paĝo estus elekti ilin laŭ ilia data-bs-toggle
atributo, tiel:
const popoverTriggerList = document.querySelectorAll('[data-bs-toggle="popover"]')
const popoverList = [...popoverTriggerList].map(popoverTriggerEl => new bootstrap.Popover(popoverTriggerEl))
Viva demonstraĵo
Ni uzas JavaScript similan al la ĉi-supra fragmento por bildigi la sekvan vivan popover. Titoloj estas agordita per data-bs-title
kaj korpa enhavo estas agordita per data-bs-content
.
title
aŭ
data-bs-title
en via HTML. Kiam
title
estas uzata, Popper anstataŭigos ĝin aŭtomate per
data-bs-title
kiam la elemento estas prezentita.
<button type="button" class="btn btn-lg btn-danger" data-bs-toggle="popover" data-bs-title="Popover title" data-bs-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>
Kvar direktoj
Kvar opcioj estas disponeblaj: supre, dekstre, malsupre kaj maldekstre. Direktoj estas spegulitaj kiam vi uzas Bootstrap en RTL. Agordu data-bs-placement
ŝanĝi la direkton.
<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="top" data-bs-content="Top popover">
Popover on top
</button>
<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="right" data-bs-content="Right popover">
Popover on right
</button>
<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="bottom" data-bs-content="Bottom popover">
Popover on bottom
</button>
<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="left" data-bs-content="Left popover">
Popover on left
</button>
Kutimocontainer
Kiam vi havas iujn stilojn sur gepatra elemento, kiuj malhelpas popover, vi volas specifi kutimon container
por ke la HTML de la popover aperu ene de tiu elemento anstataŭe. Ĉi tio estas ofta en respondemaj tabeloj, eniggrupoj kaj similaj.
const popover = new bootstrap.Popover('.example-popover', {
container: 'body'
})
Alia situacio kie vi volas agordi eksplicitan kutimon container
estas popovers ene de modala dialogo , por certigi ke la popover mem estas almetita al la modalo. Ĉi tio estas precipe grava por popovers kiuj enhavas interagajn elementojn - modalaj dialogoj kaptos fokuson, do krom se la popover estas infanelemento de la modalo, uzantoj ne povos fokusigi aŭ aktivigi ĉi tiujn interagajn elementojn.
const popover = new bootstrap.Popover('.example-popover', {
container: '.modal-body'
})
Propraj popovers
Aldonita en v5.2.0Vi povas agordi la aspekton de popovers per CSS-variabloj . Ni starigas kutiman klason kun data-bs-custom-class="custom-popover"
por ampleksi nian kutiman aspekton kaj uzi ĝin por superregi iujn el la lokaj CSS-variabloj.
.custom-popover {
--bs-popover-max-width: 200px;
--bs-popover-border-color: var(--bs-primary);
--bs-popover-header-bg: var(--bs-primary);
--bs-popover-header-color: var(--bs-white);
--bs-popover-body-padding-x: 1rem;
--bs-popover-body-padding-y: .5rem;
}
<button type="button" class="btn btn-secondary"
data-bs-toggle="popover" data-bs-placement="right"
data-bs-custom-class="custom-popover"
data-bs-title="Custom popover"
data-bs-content="This popover is themed via CSS variables.">
Custom popover
</button>
Forĵeti ĉe sekva klako
Uzu la focus
ellasilon por malakcepti popovers ĉe la sekva klako de la uzanto de malsama elemento ol la baskuliga elemento.
Specifa markado bezonata por malakcepti-on-sekva-klako
Por taŭga trans-retumilo kaj transplatforma konduto, vi devas uzi la <a>
etikedon, ne la <button>
etikedon, kaj vi ankaŭ devas inkluzivi tabindex
atributon.
<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-bs-toggle="popover" data-bs-trigger="focus" data-bs-title="Dismissible popover" data-bs-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a>
const popover = new bootstrap.Popover('.popover-dismiss', {
trigger: 'focus'
})
Malebligitaj elementoj
Elementoj kun la disabled
atributo ne estas interagaj, tio signifas, ke uzantoj ne povas ŝvebi aŭ klaki ilin por ekigi popover (aŭ konsileto). Kiel solvo, vi volos ekigi la popover de envolvaĵo <div>
aŭ <span>
, ideale farite klavar-fokusebla per tabindex="0"
.
Por malfunkciigitaj popover-eksiloj, vi ankaŭ preferas data-bs-trigger="hover focus"
tiel ke la popover aperu kiel tuja vida sugesto al viaj uzantoj ĉar ili eble ne atendas klaki sur malfunkciigita elemento.
<span class="d-inline-block" tabindex="0" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-content="Disabled popover">
<button class="btn btn-primary" type="button" disabled>Disabled button</button>
</span>
CSS
Variabloj
Aldonita en v5.2.0Kiel parto de la aliro al evoluantaj CSS-variabloj de Bootstrap, popovers nun uzas lokajn CSS .popover
-variablojn por plibonigita realtempa personigo. Valoroj por la CSS-variabloj estas fiksitaj per Sass, do ankaŭ Sass-adaptigo ankoraŭ estas subtenata.
--#{$prefix}popover-zindex: #{$zindex-popover};
--#{$prefix}popover-max-width: #{$popover-max-width};
@include rfs($popover-font-size, --#{$prefix}popover-font-size);
--#{$prefix}popover-bg: #{$popover-bg};
--#{$prefix}popover-border-width: #{$popover-border-width};
--#{$prefix}popover-border-color: #{$popover-border-color};
--#{$prefix}popover-border-radius: #{$popover-border-radius};
--#{$prefix}popover-inner-border-radius: #{$popover-inner-border-radius};
--#{$prefix}popover-box-shadow: #{$popover-box-shadow};
--#{$prefix}popover-header-padding-x: #{$popover-header-padding-x};
--#{$prefix}popover-header-padding-y: #{$popover-header-padding-y};
@include rfs($popover-header-font-size, --#{$prefix}popover-header-font-size);
--#{$prefix}popover-header-color: #{$popover-header-color};
--#{$prefix}popover-header-bg: #{$popover-header-bg};
--#{$prefix}popover-body-padding-x: #{$popover-body-padding-x};
--#{$prefix}popover-body-padding-y: #{$popover-body-padding-y};
--#{$prefix}popover-body-color: #{$popover-body-color};
--#{$prefix}popover-arrow-width: #{$popover-arrow-width};
--#{$prefix}popover-arrow-height: #{$popover-arrow-height};
--#{$prefix}popover-arrow-border: var(--#{$prefix}popover-border-color);
Sass-variabloj
$popover-font-size: $font-size-sm;
$popover-bg: $white;
$popover-max-width: 276px;
$popover-border-width: $border-width;
$popover-border-color: var(--#{$prefix}border-color-translucent);
$popover-border-radius: $border-radius-lg;
$popover-inner-border-radius: subtract($popover-border-radius, $popover-border-width);
$popover-box-shadow: $box-shadow;
$popover-header-font-size: $font-size-base;
$popover-header-bg: shade-color($popover-bg, 6%);
$popover-header-color: $headings-color;
$popover-header-padding-y: .5rem;
$popover-header-padding-x: $spacer;
$popover-body-color: $body-color;
$popover-body-padding-y: $spacer;
$popover-body-padding-x: $spacer;
$popover-arrow-width: 1rem;
$popover-arrow-height: .5rem;
Uzado
Ebligu popovers per JavaScript:
const exampleEl = document.getElementById('example')
const popover = new bootstrap.Popover(exampleEl, options)
Fari popovers funkcii por klavaro kaj helpteknologiaj uzantoj
Por permesi al klavaruzantoj aktivigi viajn popovers, vi devus nur aldoni ilin al HTML-elementoj kiuj tradicie estas klavar-fokuseblaj kaj interagaj (kiel ekzemple ligiloj aŭ formularaj kontroloj). Kvankam arbitraj HTML-elementoj (kiel <span>
s) povas esti enfokusigitaj aldonante la tabindex="0"
atributon, tio aldonos eble ĝenajn kaj konfuzajn tabuladojn sur ne-interagaj elementoj por klavaruzantoj, kaj la plej multaj helpaj teknologioj nuntempe ne anoncas la enhavon de la popover en ĉi tiu situacio. . Aldone, ne fidu nur hover
kiel la ellasilon por viaj popovers, ĉar ĉi tio ebligos ilin ekfunkciigi por klavaruzantoj.
Dum vi povas enmeti riĉan, strukturitan HTML-on en popovers kun la html
opcio, ni forte rekomendas, ke vi evitu aldoni troan enhavon. La maniero kiel popovers nuntempe funkcias estas ke, unufoje montrata, ilia enhavo estas ligita al la ellasila elemento kun la aria-describedby
atributo. Kiel rezulto, la tuteco de la enhavo de la popover estos anoncita al helpteknologiuzantoj kiel unu longa, seninterrompa fluo.
Aldone, kvankam eblas ankaŭ inkluzivi interagajn kontrolojn (kiel formularelementojn aŭ ligilojn) en via popover (aldonante ĉi tiujn elementojn al la allowList
permesitaj atributoj kaj etikedoj), konsciu, ke nuntempe la popover ne administras klavaran fokusordon. Kiam klavaruzanto malfermas popover, fokuso restas sur la ekiganta elemento, kaj ĉar la popover kutime ne tuj sekvas la ellasilon en la strukturo de la dokumento, ekzistas neniu garantio ke antaŭen/premado.TABmovos klavaran uzanton en la popover mem. Resume, simple aldoni interagajn kontrolojn al popover verŝajne igos ĉi tiujn kontrolojn neatingeblaj/neuzeblaj por klavaruzantoj kaj uzantoj de helpaj teknologioj, aŭ almenaŭ igos nelogikan ĝeneralan fokusan ordon. En ĉi tiuj kazoj, konsideru uzi modalan dialogon anstataŭe.
Opcioj
Ĉar opcioj povas esti pasigitaj per datumaj atributoj aŭ JavaScript, vi povas almeti opcionomon al data-bs-
, kiel en data-bs-animation="{value}"
. Nepre ŝanĝu la kazon de la opcionomo de " camelCase " al " kebab-case " kiam vi pasas la opciojn per datumaj atributoj. Ekzemple, uzu data-bs-custom-class="beautifier"
anstataŭ data-bs-customClass="beautifier"
.
Ekde Bootstrap 5.2.0, ĉiuj komponantoj subtenas eksperimentan rezervitan datuman atributon data-bs-config
, kiu povas enhavi simplan komponan agordon kiel JSON-ĉeno. Kiam elemento havas data-bs-config='{"delay":0, "title":123}'
kaj data-bs-title="456"
atributojn, la fina title
valoro estos 456
kaj la apartaj datumaj atributoj anstataŭigos valorojn donitajn sur data-bs-config
. Krome, ekzistantaj datumaj atributoj povas enhavi JSON-valorojn kiel data-bs-delay='{"show":0,"hide":150}'
.
sanitize
,
sanitizeFn
, kaj
allowList
ne povas esti provizitaj per datumaj atributoj.
Nomo | Tajpu | Defaŭlte | Priskribo |
---|---|---|---|
allowList |
objekto | Defaŭlta valoro | Objekto kiu enhavas permesitajn atributojn kaj etikedojn. |
animation |
bulea | true |
Apliku CSS-fade-transiron al la popover. |
boundary |
ŝnuro, elemento | 'clippingParents' |
Superflua limlimo de la popover (validas nur por la preventOverflow modifilo de Popper). Defaŭlte, ĝi estas 'clippingParents' kaj povas akcepti HTMLElement-referencon (nur per JavaScript). Por pliaj informoj, rigardu la dokumentojn de detectOverflow de Popper . |
container |
ŝnuro, elemento, falsa | false |
Aldonas la popover al specifa elemento. Ekzemplo: container: 'body' . Ĉi tiu opcio estas precipe utila ĉar ĝi ebligas al vi poziciigi la popover en la fluo de la dokumento proksime de la ekiganta elemento - kio malhelpos ke la popover flosu for de la ekiganta elemento dum fenestro regrandigo. |
content |
ŝnuro, elemento, funkcio | '' |
Defaŭlta enhavvaloro se data-bs-content atributo ne ĉeestas. Se funkcio estas donita, ĝi estos vokita kun ĝia this referenco aro al la elemento al kiu la popover estas ligita. |
customClass |
string, funkcio | '' |
Aldonu klasojn al la popover kiam ĝi montriĝas. Notu, ke ĉi tiuj klasoj estos aldonitaj aldone al iuj klasoj specifitaj en la ŝablono. Por aldoni plurajn klasojn, apartigu ilin per spacoj: 'class-1 class-2' . Vi ankaŭ povas pasi funkcion kiu devus resendi ununuran ĉenon enhavantan kromajn klasnomojn. |
delay |
nombro, objekto | 0 |
Prokrasto montri kaj kaŝi la popover (ms)—ne validas por mana ellasiltipo. Se nombro estas provizita, prokrasto estas aplikata al ambaŭ kaŝi/montri. Objekta strukturo estas: delay: { "show": 500, "hide": 100 } . |
fallbackPlacements |
string, tabelo | ['top', 'right', 'bottom', 'left'] |
Difinu rezervlokigojn disponigante liston de allokigoj en tabelo (laŭ ordo de prefero). Por pliaj informoj raportu al la kondutdokumentoj de Popper . |
html |
bulea | false |
Permesu HTML en la popover. Se vera, HTML-etikedoj en la popover title estos prezentitaj en la popover. Se malvera, innerText posedaĵo estos uzata por enmeti enhavon en la DOM. Uzu tekston se vi zorgas pri XSS-atakoj. |
offset |
nombro, ĉeno, funkcio | [0, 0] |
Ofseto de la popover relative al ĝia celo. Vi povas pasi ĉenon en datumaj atributoj kun komo apartigitaj valoroj kiel: data-bs-offset="10,20" . Kiam funkcio estas uzata por determini la ofseton, ĝi estas vokita kun objekto enhavanta la popper-lokigon, la referencon kaj popper-rektojn kiel sia unua argumento. La ekiga elemento DOM-nodo estas pasita kiel la dua argumento. La funkcio devas redoni tabelon kun du nombroj: skidding , distance . Por pliaj informoj raportu al la ofsetaj dokumentoj de Popper . |
placement |
string, funkcio | 'top' |
Kiel poziciigi la popover: aŭtomate, supro, malsupre, maldekstre, dekstre. Kiam auto estas specifita, ĝi dinamike reorientiĝos la popover. Kiam funkcio estas uzata por determini la lokigon, ĝi estas vokita kun la popover DOM-nodo kiel sia unua argumento kaj la ekiga elemento DOM-nodo kiel sia dua. La this kunteksto estas agordita al la popover-instanco. |
popperConfig |
nulo, objekto, funkcio | null |
Por ŝanĝi la defaŭltan Popper-agordon de Bootstrap, vidu la agordon de Popper . Kiam funkcio estas uzata por krei la Popper-agordon, ĝi estas vokita kun objekto kiu enhavas la defaŭltan Popper-agordon de Bootstrap. Ĝi helpas vin uzi kaj kunfandi la defaŭltan kun via propra agordo. La funkcio devas resendi agordan objekton por Popper. |
sanitize |
bulea | true |
Ebligu aŭ malŝalti la sanigon. Se aktivigita 'template' , 'content' kaj 'title' opcioj estos sanigitaj. |
sanitizeFn |
nula, funkcio | null |
Ĉi tie vi povas provizi vian propran sanigan funkcion. Ĉi tio povas esti utila se vi preferas uzi dediĉitan bibliotekon por fari sanigon. |
selector |
string, falsa | false |
Se elektilo estas disponigita, popover-objektoj estos delegitaj al la specifitaj celoj. En praktiko, ĉi tio estas uzata por ankaŭ apliki popovers al dinamike aldonitaj DOM-elementoj ( jQuery.on subteno). Vidu ĉi tiun numeron kaj informan ekzemplon . |
template |
ŝnuro | '<div class="popover" role="popover"><div class="popover-arrow"></div><div class="popover-inner"></div></div>' |
Baza HTML por uzi dum kreado de la popover. La popover-oj title estos injektitaj en la .popover-inner . .popover-arrow fariĝos la sago de la popover. La plej ekstera envolvaĵelemento devus havi la .popover klason kaj role="popover" . |
title |
ŝnuro, elemento, funkcio | '' |
Defaŭlta titolvaloro se title atributo ne ĉeestas. Se funkcio estas donita, ĝi estos vokita kun ĝia this referenco aro al la elemento al kiu la popover estas ligita. |
trigger |
ŝnuro | 'hover focus' |
Kiel popover estas ekigita: klako, ŝvebado, fokuso, manlibro. Vi povas pasi plurajn ellasilon; apartigu ilin per spaco. 'manual' indikas ke la popover estos ekigita programe per la .popover('show') , .popover('hide') kaj .popover('toggle') metodoj; ĉi tiu valoro ne povas esti kombinita kun iu ajn alia ellasilo. 'hover' sur sia propra rezultos en popovers kiuj ne povas esti ekigitaj per la klavaro, kaj devus nur esti uzitaj se alternativaj metodoj por peri la samajn informojn por klavaruzantoj ĉeestas. |
Datumaj atributoj por individuaj popovers
Opcioj por individuaj popovers povas alternative esti precizigitaj per la uzo de datumaj atributoj, kiel klarigite supre.
Uzante funkcion kunpopperConfig
const popover = new bootstrap.Popover(element, {
popperConfig(defaultBsPopperConfig) {
// const newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
Metodoj
Nesinkronaj metodoj kaj transiroj
Ĉiuj API-metodoj estas nesinkronaj kaj komencas transiron . Ili revenas al la alvokanto tuj kiam la transiro estas komencita sed antaŭ ol ĝi finiĝas . Krome, metodovoko sur transira komponento estos ignorita .
Metodo | Priskribo |
---|---|
disable |
Forigas la kapablon por ke la popover de elemento estu montrita. La popover nur povos esti montrita se ĝi estas reebligita. |
dispose |
Kaŝas kaj detruas la popover de elemento (Forigas konservitajn datumojn sur la DOM-elemento). Popovers kiuj uzas delegacion (kiuj estas kreitaj uzante la selector opcion ) ne povas esti individue detruitaj sur posteulaj ellasilelementoj. |
enable |
Donas al la popover de elemento la kapablon esti montrita. Popovers estas ebligitaj defaŭlte. |
getInstance |
Senmova metodo, kiu ebligas al vi akiri la popover-instancon asociitan kun DOM-elemento. |
getOrCreateInstance |
Senmova metodo, kiu ebligas al vi akiri la popover-instancon asociitan kun DOM-elemento, aŭ krei novan se ĝi ne estis pravigita. |
hide |
Kaŝas la popover de elemento. Revenas al la alvokanto antaŭ ol la popover efektive estis kaŝita (te antaŭ ol la hidden.bs.popover evento okazas). Ĉi tio estas konsiderita "manlibro" ekigado de la popover. |
setContent |
Donas manieron ŝanĝi la enhavon de la popover post ĝia inicialigo. |
show |
Rivelas la popover de elemento. Revenas al la alvokanto antaŭ ol la popover efektive montriĝis (te antaŭ ol la shown.bs.popover evento okazas). Ĉi tio estas konsiderita "manlibro" ekigado de la popover. Popovers kies titolo kaj enhavo ambaŭ estas nullongaj neniam estas montrataj. |
toggle |
Ŝaltas la popover de elemento. Revenas al la alvokanto antaŭ ol la popover efektive estis montrita aŭ kaŝita (t.e. antaŭ ol la shown.bs.popover evento hidden.bs.popover okazas). Ĉi tio estas konsiderita "manlibro" ekigado de la popover. |
toggleEnabled |
Ŝaltas la kapablon por ke la popover de elemento estu montrita aŭ kaŝita. |
update |
Ĝisdatigas la pozicion de la popover de elemento. |
// getOrCreateInstance example
const popover = bootstrap.Popover.getOrCreateInstance('#example') // Returns a Bootstrap popover instance
// setContent example
myPopover.setContent({
'.popover-header': 'another title',
'.popover-body': 'another content'
})
setContent
metodo akceptas
object
argumenton, kie ĉiu posedaĵo-ŝlosilo estas valida
string
elektilo ene de la popover ŝablono, kaj ĉiu rilata posedaĵo-valoro povas esti
string
|
element
|
function
|
null
Eventoj
Evento | Priskribo |
---|---|
hide.bs.popover |
Ĉi tiu evento estas lanĉita tuj kiam la hide ekzempla metodo estas vokita. |
hidden.bs.popover |
Ĉi tiu evento estas lanĉita kiam la popover finiĝis kaŝita de la uzanto (atendos ke CSS-transiroj finiĝos). |
inserted.bs.popover |
Ĉi tiu evento estas lanĉita post la show.bs.popover evento kiam la popover ŝablono estis aldonita al la DOM. |
show.bs.popover |
Ĉi tiu evento tuj ekfunkciigas kiam la show ekzempla metodo estas vokita. |
shown.bs.popover |
Ĉi tiu evento estas lanĉita kiam la popover fariĝis videbla al la uzanto (atendos ke CSS-transiroj finiĝos). |
const myPopoverTrigger = document.getElementById('myPopover')
myPopoverTrigger.addEventListener('hidden.bs.popover', () => {
// do something...
})