Preskoči na glavno vsebino Preskoči na navigacijo po dokumentih
in English

Popoverji

Dokumentacija in primeri za dodajanje pojavnih oken Bootstrap, kot so tisti v iOS-u, kateremu koli elementu na vašem spletnem mestu.

Pregled

Stvari, ki jih morate vedeti pri uporabi vtičnika Popover:

  • Popovers se za pozicioniranje zanašajo na knjižnico tretjih oseb Popper . Morate vključiti popper.min.js pred bootstrap.js ali uporabiti bootstrap.bundle.min.js/ bootstrap.bundle.js, ki vsebuje Popper, da bodo popoveri delovali!
  • Popovers zahtevajo vtičnik orodnih namigov kot odvisnost.
  • Popovers so opt-in zaradi učinkovitosti, zato jih morate inicializirati sami .
  • Ničelna dolžina titlein contentvrednosti ne bodo nikoli prikazale pojavnega pojava.
  • Določite container: 'body', da se izognete težavam z upodabljanjem v kompleksnejših komponentah (kot so naše vnosne skupine, skupine gumbov itd.).
  • Sprožitev popoverjev na skritih elementih ne bo delovala.
  • Popover za .disabledali disabledelemente je treba sprožiti na ovojnem elementu.
  • Ko se sprožijo iz sider, ki se prepletajo čez več črt, bodo popoverji centrirani med celotno širino sider. Uporabite .text-nowrapna svojem <a>s, da se izognete temu vedenju.
  • Popoverja je treba skriti, preden so njihovi ustrezni elementi odstranjeni iz DOM.
  • Popoverje je mogoče sprožiti zahvaljujoč elementu znotraj senčnega DOM.
Ta komponenta privzeto uporablja vgrajeno čistilo vsebine, ki izloči vse elemente HTML, ki niso izrecno dovoljeni. Za več podrobnosti glejte razdelek o razkužilu v naši dokumentaciji JavaScript .
Učinek animacije te komponente je odvisen od prefers-reduced-motionmedijske poizvedbe. Oglejte si razdelek o zmanjšanem gibanju v naši dokumentaciji o dostopnosti .

Nadaljujte z branjem in si oglejte, kako delujejo popoverji z nekaj primeri.

Primer: Povsod omogočite pojavna okna

Eden od načinov inicializacije vseh pojavnih oken na strani bi bil, da jih izberete po njihovem data-bs-toggleatributu:

var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'))
var popoverList = popoverTriggerList.map(function (popoverTriggerEl) {
  return new bootstrap.Popover(popoverTriggerEl)
})

Primer: Uporaba containermožnosti

Ko imate na nadrejenem elementu nekaj slogov, ki motijo ​​pojavni element, boste želeli določiti po meri container, tako da se bo HTML pojavnega elementa namesto tega pojavil znotraj tega elementa.

var popover = new bootstrap.Popover(document.querySelector('.example-popover'), {
  container: 'body'
})

Primer

<button type="button" class="btn btn-lg btn-danger" data-bs-toggle="popover" title="Popover title" data-bs-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>

Štiri smeri

Na voljo so štiri možnosti: zgoraj, desno, spodaj in levo poravnano. Pri uporabi Bootstrap v RTL so navodila zrcaljena.

<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>

Opusti ob naslednjem kliku

Uporabite focussprožilec, da opustite pojavna okna ob naslednjem kliku uporabnika drugega elementa kot preklopni element.

Za opustitev ob naslednjem kliku je potrebna posebna oznaka

Za pravilno delovanje med brskalniki in platformami morate uporabiti <a>oznako, ne oznake <button>, vključiti pa morate tudi tabindexatribut.

<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-bs-toggle="popover" data-bs-trigger="focus" title="Dismissible popover" data-bs-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a>
var popover = new bootstrap.Popover(document.querySelector('.popover-dismiss'), {
  trigger: 'focus'
})

Onemogočeni elementi

Elementi z disabledatributom niso interaktivni, kar pomeni, da jih uporabniki ne morejo premakniti ali klikniti, da bi sprožili pojavni prikaz (ali opis orodja). Kot nadomestno rešitev boste želeli sprožiti popover iz ovoja <div>ali <span>, v idealnem primeru narejenega za fokusiranje s tipkovnico, z uporabo tabindex="0".

Pri onemogočenih sprožilcih pojavnega pojavnega elementa boste morda želeli tudi data-bs-trigger="hover focus", da se pojavni pojav prikaže kot takojšnja vizualna povratna informacija vašim uporabnikom, saj morda ne pričakujejo, da bodo kliknili onemogočen element.

<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>

Sass

Spremenljivke

$popover-font-size:                 $font-size-sm;
$popover-bg:                        $white;
$popover-max-width:                 276px;
$popover-border-width:              $border-width;
$popover-border-color:              rgba($black, .2);
$popover-border-radius:             $border-radius-lg;
$popover-inner-border-radius:       subtract($popover-border-radius, $popover-border-width);
$popover-box-shadow:                $box-shadow;

$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;
$popover-arrow-color:               $popover-bg;

$popover-arrow-outer-color:         fade-in($popover-border-color, .05);

Uporaba

Omogoči pojavna okna prek JavaScripta:

var exampleEl = document.getElementById('example')
var popover = new bootstrap.Popover(exampleEl, options)

Omogočanje, da bodo popoverji delovali za uporabnike tipkovnic in podporne tehnologije

Če želite uporabnikom tipkovnice omogočiti aktiviranje vaših pojavnih elementov, jih dodajte samo elementom HTML, ki so tradicionalno osredotočeni na tipkovnico in so interaktivni (kot so povezave ali kontrolniki obrazcev). Čeprav lahko poljubne elemente HTML (kot <span>je s) omogočite fokusiranje z dodajanjem tabindex="0"atributa, bo to dodalo potencialno nadležne in zmedene tabulatorske postanke na neinteraktivnih elementih za uporabnike tipkovnice, večina podpornih tehnologij pa trenutno ne objavi vsebine pojavnega okna v tej situaciji . Poleg tega se ne zanašajte samo na hoversprožilec za svoje pojavne elemente, saj jih tako uporabniki tipkovnice ne bodo mogli sprožiti.

Čeprav lahko s to htmlmožnostjo v pojavna okna vstavite bogat, strukturiran HTML, toplo priporočamo, da se izogibate dodajanju pretirane količine vsebine. Popoverji trenutno delujejo tako, da je njihova vsebina, ko so enkrat prikazana, povezana s sprožilnim elementom z aria-describedbyatributom. Posledično bo celotna vsebina popoverja objavljena uporabnikom podporne tehnologije kot en dolg, neprekinjen tok.

Poleg tega, čeprav je mogoče vključiti tudi interaktivne kontrolnike (kot so elementi obrazca ali povezave) v vaš pojavni element (z dodajanjem teh elementov med allowListdovoljene atribute in oznake), se zavedajte, da trenutno pojavni okvir ne upravlja vrstnega reda fokusa tipkovnice. Ko uporabnik tipkovnice odpre pojavni element, fokus ostane na sprožilnem elementu in ker pojavni element običajno ne sledi takoj sprožilcu v strukturi dokumenta, ni nobenega zagotovila, da bo premikanje naprej/pritiskanjeTABpremakne uporabnika tipkovnice v samo pojavno okno. Skratka, preprosto dodajanje interaktivnih kontrolnikov v pojavni element bo verjetno naredilo te kontrolnike nedosegljive/neuporabne za uporabnike tipkovnic in uporabnike podpornih tehnologij ali pa bo vsaj povzročilo nelogičen splošni vrstni red fokusa. V teh primerih razmislite o uporabi modalnega pogovornega okna.

Opcije

Možnosti je mogoče posredovati prek podatkovnih atributov ali JavaScripta. Za atribute podatkov pripnite ime možnosti v data-bs-, kot v data-bs-animation="". Pri posredovanju možnosti prek podatkovnih atributov spremenite vrsto malega črke imena možnosti iz camelCase v kebab-case. Na primer, namesto uporabite data-bs-customClass="beautifier", uporabite data-bs-custom-class="beautifier".

Upoštevajte, da iz varnostnih razlogov možnosti sanitize, sanitizeFn, in allowListni mogoče zagotoviti z uporabo podatkovnih atributov.
Ime Vrsta Privzeto Opis
animation logično true Uporabite prehod CSS zbledenja na pojavni element
container niz | element | lažno false

Popover doda določenemu elementu. Primer: container: 'body'. Ta možnost je še posebej uporabna, ker vam omogoča, da pojavni element postavite v tok dokumenta blizu sprožilnega elementa – kar bo preprečilo, da bi pojavni element med spreminjanjem velikosti okna lebdel stran od sprožilnega elementa.

content niz | element | funkcijo ''

Privzeta vrednost vsebine, če data-bs-contentatribut ni prisoten.

Če je podana funkcija, bo klicana s thissklicem, nastavljenim na element, na katerega je pritrjen popover.

delay številka | predmet 0

Zakasnitev prikaza in skrivanja pojavnega pojava (ms) - ne velja za tip ročnega proženja

Če je navedena številka, se zakasnitev uporabi za skrij/prikaži

Struktura objekta je:delay: { "show": 500, "hide": 100 }

html logično false V pojavno okno vstavite HTML. Če je nastavljeno na false, innerTextbo lastnost uporabljena za vstavljanje vsebine v DOM. Če vas skrbijo napadi XSS, uporabite besedilo.
placement niz | funkcijo 'right'

Kako postaviti popover – samodejno | vrh | dno | levo | prav.
Ko autoje naveden, bo dinamično preusmeril pojavni element.

Ko se funkcija uporabi za določitev umestitve, se pokliče s pojavnim vozliščem DOM kot prvim argumentom in prožilnim elementom DOM vozliščem kot drugim. Kontekst thisje nastavljen na pojavni primerek.

selector niz | lažno false Če je na voljo izbirnik, bodo pojavni objekti dodeljeni navedenim ciljem. V praksi se to uporablja za omogočanje dodajanja pojavnih oken dinamični vsebini HTML. Oglejte si to in informativen primer .
template vrvica '<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'

Osnovni HTML za uporabo pri ustvarjanju pojavnega okna.

Popoverji titlebodo vbrizgani v .popover-header.

Popoverji contentbodo vbrizgani v .popover-body.

.popover-arrowbo postala popoverjeva puščica.

Zunanji ovojni element mora imeti .popoverrazred.

title niz | element | funkcijo ''

Privzeta vrednost naslova, če titleatribut ni prisoten.

Če je podana funkcija, bo klicana s thissklicem, nastavljenim na element, na katerega je pritrjen popover.

trigger vrvica 'click' Kako se sproži popover - kliknite | lebdi | fokus | priročnik. Lahko prenesete več sprožilcev; ločite jih s presledkom. manualni mogoče kombinirati z nobenim drugim sprožilcem.
fallbackPlacements niz ['top', 'right', 'bottom', 'left'] Določite nadomestne umestitve tako, da zagotovite seznam umestitev v nizu (po prednostnem vrstnem redu). Za več informacij glejte Popperjeve dokumente o vedenju
boundary niz | element 'clippingParents' Meja omejitve prelivanja pojavnega pojava (velja samo za Popperjev modifikator preventOverflow). Privzeto je 'clippingParents'in lahko sprejme sklic HTMLElement (samo prek JavaScripta). Za več informacij se obrnite na dokumente Popper's detectOverflow .
customClass niz | funkcijo ''

Dodajte razrede pojavnemu oknu, ko se prikaže. Upoštevajte, da bodo ti razredi dodani poleg vseh razredov, navedenih v predlogi. Če želite dodati več razredov, jih ločite s presledki: 'class-1 class-2'.

Posredujete lahko tudi funkcijo, ki naj vrne en sam niz, ki vsebuje dodatna imena razredov.

sanitize logično true Omogočite ali onemogočite čiščenje. Če je aktivirano 'template', bodo možnosti 'content'in 'title'možnosti razčiščene. Oglejte si razdelek o razkužilu v naši dokumentaciji za JavaScript .
allowList predmet Privzeta vrednost Objekt, ki vsebuje dovoljene atribute in oznake
sanitizeFn nič | funkcijo null Tukaj lahko zagotovite lastno funkcijo razkuževanja. To je lahko uporabno, če za izvajanje sanacije raje uporabljate namensko knjižnico.
offset niz | niz | funkcijo [0, 8]

Odmik pojavnega elementa glede na cilj. V podatkovnih atributih lahko posredujete niz z vrednostmi, ločenimi z vejico, kot so:data-bs-offset="10,20"

Ko se funkcija uporablja za določanje odmika, se pokliče z objektom, ki vsebuje poper postavitev, referenco in popper rects kot prvi argument. Vozlišče sprožilnega elementa DOM je posredovano kot drugi argument. Funkcija mora vrniti matriko z dvema številoma: .[skidding, distance]

Za več informacij glejte Popperjevo dokumentacijo o offsetu .

popperConfig nič | predmet | funkcijo null

Če želite spremeniti privzeto konfiguracijo Popperja za Bootstrap, glejte Popperjeva konfiguracija .

Ko se funkcija uporabi za ustvarjanje Popperjeve konfiguracije, se pokliče z objektom, ki vsebuje privzeto Popperjevo konfiguracijo Bootstrapa. Pomaga vam pri uporabi in združitvi privzetih nastavitev z vašo lastno konfiguracijo. Funkcija mora vrniti konfiguracijski objekt za Popper.

Atributi podatkov za posamezne popoverje

Možnosti za posamezna pojavna okna se lahko določijo tudi z uporabo podatkovnih atributov, kot je razloženo zgoraj.

Uporaba funkcije zpopperConfig

var popover = new bootstrap.Popover(element, {
  popperConfig: function (defaultBsPopperConfig) {
    // var newPopperConfig = {...}
    // use defaultBsPopperConfig if needed...
    // return newPopperConfig
  }
})

Metode

Asinhrone metode in prehodi

Vse metode API so asinhrone in začnejo prehod . K klicatelju se vrnejo takoj, ko se prehod začne, vendar preden se konča . Poleg tega bo prezrt klic metode prehodne komponente .

Za več informacij si oglejte našo dokumentacijo JavaScript .

pokazati

Razkrije popover elementa. Vrne se k klicatelju, preden je pojavno okno dejansko prikazano (tj. preden shown.bs.popoverpride do dogodka). To velja za »ročno« sprožitev popoverja. Popoverji, katerih naslov in vsebina sta ničelne dolžine, niso nikoli prikazani.

myPopover.show()

skriti

Skrije pojavni element elementa. Vrne se k klicatelju, preden je bil popover dejansko skrit (tj. preden hidden.bs.popoverpride do dogodka). To velja za »ročno« sprožitev popoverja.

myPopover.hide()

preklop

Preklopi pojavni element elementa. Vrne se klicatelju, preden je pojavni element dejansko prikazan ali skrit (tj. preden pride do dogodka shown.bs.popoverali ). hidden.bs.popoverTo velja za »ročno« sprožitev popoverja.

myPopover.toggle()

odstraniti

Skrije in uniči pojavni element elementa (Odstrani shranjene podatke o elementu DOM). Popoverjev, ki uporabljajo delegiranje (ki so ustvarjeni z možnostjo selector) , ni mogoče posamično uničiti na podrejenih prožilnih elementih.

myPopover.dispose()

omogočiti

Omogoča prikaz pojavnega elementa. Popoverji so privzeto omogočeni.

myPopover.enable()

onemogočiti

Odstrani možnost prikaza pojavnega elementa. Popover bo lahko prikazan samo, če je ponovno omogočen.

myPopover.disable()

preklopiOmogočeno

Preklopi možnost, da je pojavni element elementa prikazan ali skrit.

myPopover.toggleEnabled()

nadgradnja

Posodobi položaj pojavnega elementa.

myPopover.update()

getInstance

Statična metoda, ki vam omogoča, da dobite pojavni primerek, povezan z elementom DOM

var exampleTriggerEl = document.getElementById('example')
var popover = bootstrap.Popover.getInstance(exampleTriggerEl) // Returns a Bootstrap popover instance

getOrCreateInstance

Statična metoda, ki vam omogoča, da dobite pojavni primerek, povezan z elementom DOM, ali ustvarite novega, če ni bil inicializiran

var exampleTriggerEl = document.getElementById('example')
var popover = bootstrap.Popover.getOrCreateInstance(exampleTriggerEl) // Returns a Bootstrap popover instance

Dogodki

Vrsta dogodka Opis
show.bs.popover Ta dogodek se sproži takoj, ko showse pokliče metoda primerka.
prikazano.bs.popover Ta dogodek se sproži, ko postane pojavni element viden uporabniku (počakal bo, da se zaključijo prehodi CSS).
hide.bs.popover Ta dogodek se sproži takoj, ko hideje bila poklicana metoda primerka.
hidden.bs.popover Ta dogodek se sproži, ko se pojavni pomik neha skriti pred uporabnikom (počakal bo, da se zaključijo prehodi CSS).
vstavljeno.bs.popover Ta dogodek se sproži po show.bs.popoverdogodku, ko je bila v DOM dodana popover predloga.
var myPopoverTrigger = document.getElementById('myPopover')
myPopoverTrigger.addEventListener('hidden.bs.popover', function () {
  // do something...
})