Fara í aðalefni Farðu í skjalaleiðsögn
Check
in English

Popovers

Skjöl og dæmi til að bæta Bootstrap popover, eins og þeim sem finnast í iOS, við hvaða þátt sem er á síðunni þinni.

Yfirlit

Atriði sem þarf að vita þegar popover viðbótin er notuð:

  • Popovers treysta á þriðja aðila bókasafn Popper fyrir staðsetningu. Þú verður að hafa popper.min.js á undan bootstrap.js, eða nota einn bootstrap.bundle.min.jssem inniheldur Popper.
  • Popovers krefjast popover viðbótarinnar sem ósjálfstæði.
  • Popovers eru valdir af frammistöðuástæðum, svo þú verður að frumstilla þá sjálfur .
  • Núll-lengd titleog contentgildi munu aldrei sýna popover.
  • Tilgreindu container: 'body'til að forðast að skila vandamálum í flóknari íhlutum (eins og inntakshópum okkar, hnappahópum osfrv.).
  • Það mun ekki virka að kveikja á popover á földum þáttum.
  • Popovers fyrir .disabledeða disabledþætti verður að kveikja á umbúðaeiningu.
  • Þegar kveikt er á akkerum sem sveiflast yfir margar línur, verða sprettigluggar miðaðir á milli heildarbreiddar akkeranna. Notaðu .text-nowrapá þinn <a>s til að forðast þessa hegðun.
  • Fela verður popover áður en samsvarandi þættir þeirra hafa verið fjarlægðir úr DOM.
  • Hægt er að kveikja á popover þökk sé frumefni inni í skugga DOM.
Sjálfgefið er að þessi hluti notar innbyggt efnishreinsiefni, sem fjarlægir alla HTML þætti sem eru ekki beinlínis leyfðir. Sjáðu hreinsiefnishlutann í JavaScript skjölunum okkar fyrir frekari upplýsingar.
Hreyfiáhrif þessa íhluts eru háð prefers-reduced-motionmiðlunarfyrirspurninni. Sjá kaflann um minni hreyfingu í aðgengisskjölunum okkar .

Haltu áfram að lesa til að sjá hvernig popovers virka með nokkrum dæmum.

Dæmi

Virkja sprettiglugga

Eins og getið er hér að ofan verður þú að frumstilla sprettiglugga áður en hægt er að nota þá. Ein leið til að frumstilla alla sprettiglugga á síðu væri að velja þá eftir data-bs-toggleeiginleikum þeirra, eins og svo:

const popoverTriggerList = document.querySelectorAll('[data-bs-toggle="popover"]')
const popoverList = [...popoverTriggerList].map(popoverTriggerEl => new bootstrap.Popover(popoverTriggerEl))

Sýning í beinni

Við notum JavaScript svipað og bútinn hér að ofan til að birta eftirfarandi lifandi sprettiglugga. Titlar eru stilltir með data-bs-titleog meginefni er stillt með data-bs-content.

Ekki hika við að nota annað hvort titleeða data-bs-titleí HTML. Þegar titleþað er notað mun Popper skipta því sjálfkrafa út fyrir data-bs-titleþegar þátturinn er sýndur.
html
<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>

Fjórar áttir

Fjórir valkostir eru í boði: efst, hægri, neðst og til vinstri. Leiðbeiningar eru speglaðar þegar Bootstrap er notað í RTL. Stilltu data-bs-placementtil að breyta um stefnu.

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

Sérsniðincontainer

Þegar þú ert með einhverja stíla á móðureiningu sem truflar sprettiglugga, viltu tilgreina sérsniðinn containerþannig að HTML sprettigluggans birtist innan þess þáttar í staðinn. Þetta er algengt í móttækilegum töflum, inntakshópum og þess háttar.

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

Önnur staða þar sem þú vilt stilla skýran sérsniðna containereru sprettigluggar inni í valmynd til að tryggja að sprettigluggann sjálft sé bætt við formann. Þetta er sérstaklega mikilvægt fyrir sprettiglugga sem innihalda gagnvirka þætti - formgluggar munu fanga fókus, þannig að nema sprettiglugginn sé undirþáttur formsins, munu notendur ekki geta fókusað eða virkjað þessa gagnvirku þætti.

const popover = new bootstrap.Popover('.example-popover', {
  container: '.modal-body'
})

Sérsniðnar popovers

Bætt við í v5.2.0

Þú getur sérsniðið útlit popovers með því að nota CSS breytur . Við stillum sérsniðinn flokk með data-bs-custom-class="custom-popover"til að stækka sérsniðið útlit okkar og notum það til að hnekkja sumum staðbundnum CSS breytum.

.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;
}
html
<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>

Hunsa við næsta smell

Notaðu focuskveikjuna til að hafna sprettiglugga þegar notandinn smellir næst á annan þátt en skiptaeininguna.

Sérstök merking er nauðsynleg til að hafna-við-næsta-smelli

Fyrir rétta hegðun milli vafra og vettvanga verður þú að nota <a>merkið, ekki merkið <button>, og þú verður líka að innihalda tabindexeigind.

html
<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'
})

Óvirkir þættir

Þættir með disabledeigindinni eru ekki gagnvirkir, sem þýðir að notendur geta ekki sveiflað eða smellt á þá til að kalla fram sprettiglugga (eða tólábendingu). Sem lausn, þú vilt kveikja á popover frá umbúðum <div>eða <span>, helst gert lyklaborðsfókus með því að nota tabindex="0".

Fyrir óvirka sprettiglugga, gætirðu líka viljað data-bs-trigger="hover focus"að sprettigluggan birtist sem tafarlaus sjónræn endurgjöf til notenda þinna þar sem þeir búast kannski ekki við að smella á óvirkan þátt.

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

Breytur

Bætt við í v5.2.0

Sem hluti af CSS breytum í þróun Bootstrap, nota popover nú staðbundnar CSS breytur á .popovertil að auka rauntíma aðlögun. Gildi fyrir CSS breyturnar eru stillt í gegnum Sass, þannig að Sass aðlögun er enn studd líka.

  --#{$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 breytur

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

Notkun

Virkja popover í gegnum JavaScript:

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

Að láta popover virka fyrir notendur lyklaborðs og hjálpartækja

Til að leyfa lyklaborðsnotendum að virkja sprettiglugga þína, ættirðu aðeins að bæta þeim við HTML þætti sem venjulega eru með lyklaborðsfókus og gagnvirkir (svo sem tenglar eða formstýringar). Þrátt fyrir að hægt sé að gera handahófskennda HTML þætti (eins og <span>s) fókusanlega með því að bæta tabindex="0"eigindinni við, mun þetta bæta við hugsanlega pirrandi og ruglingslegum flipastoppum á ógagnvirka þætti fyrir lyklaborðsnotendur, og flestar hjálpartækni tilkynnir ekki efni sprettigluggans í þessum aðstæðum. . Að auki, ekki treysta eingöngu á hoversem kveikjuna fyrir popovers þína, þar sem þetta mun gera þá ómögulegt að kveikja á lyklaborðsnotendum.

Þó að þú getir sett inn innihaldsríkt, skipulagt HTML í sprettiglugga með htmlmöguleikanum, mælum við eindregið með því að þú forðast að bæta við of miklu magni af efni. Leiðin sem sprettigluggar virka nú er að þegar það hefur verið birt er innihald þeirra bundið við kveikjuþáttinn með aria-describedbyeigindinni. Fyrir vikið verður allt innihald popoversins tilkynnt notendum hjálpartækja sem einn langur, samfelldur straumur.

Að auki, þó að það sé einnig mögulegt að innihalda gagnvirkar stýringar (eins og formþætti eða tengla) í popover þinn (með því að bæta þessum þáttum við allowListleyfilega eiginleika og merki), skaltu vera meðvitaður um að sem stendur stýrir popover ekki fókusröð lyklaborðs. Þegar lyklaborðsnotandi opnar sprettiglugga, er einbeitingin áfram á kveikjuhlutanum og þar sem sprettiglugginn fylgir venjulega ekki strax kveikjunni í uppbyggingu skjalsins, er engin trygging fyrir því að halda áfram/ýtaTABmun færa lyklaborðsnotanda inn í sprettigluggann sjálfan. Í stuttu máli, einfaldlega að bæta gagnvirkum stjórntækjum við sprettiglugga er líklegt til að gera þessar stýringar óaðgengilegar/ónothæfar fyrir lyklaborðsnotendur og notendur hjálpartækni, eða að minnsta kosti gera órökrétta heildar fókusröð. Í þessum tilvikum skaltu íhuga að nota valmynd í staðinn.

Valmöguleikar

Þar sem hægt er að senda valkosti í gegnum gagnaeiginleika eða JavaScript geturðu bætt valkostsheiti við data-bs-, eins og í data-bs-animation="{value}". Gakktu úr skugga um að breyta tilfelli tegundar valmöguleikans úr " camelCase " í " kebab-case " þegar þú sendir valkostina í gegnum gagnaeiginleika. Notaðu til dæmis data-bs-custom-class="beautifier"í staðinn fyrir data-bs-customClass="beautifier".

Frá og með Bootstrap 5.2.0 styðja allir íhlutir tilrauna frátekinn gagnaeiginleika data-bs-configsem getur hýst einfalda íhlutastillingu sem JSON streng. Þegar eining hefur data-bs-config='{"delay":0, "title":123}'og eiginleika verður data-bs-title="456"lokagildið og aðskildu gagnaeiginirnar munu hnekkja gildum sem gefin eru á . Að auki geta núverandi gagnaeiginleikar hýst JSON gildi eins og .title456data-bs-configdata-bs-delay='{"show":0,"hide":150}'

Athugaðu að af öryggisástæðum er ekki hægt að útvega valkostina sanitize, sanitizeFn, og allowListmeð því að nota gagnaeiginleika.
Nafn Tegund Sjálfgefið Lýsing
allowList mótmæla Sjálfgefið gildi Hlutur sem inniheldur leyfilega eiginleika og merki.
animation Boolean true Notaðu CSS fade umskipti á popover.
boundary strengur, þáttur 'clippingParents' Yfirflæðisþvingunarmörk sprettigluggans (á aðeins við um Popper's preventOverflow modifier). Sjálfgefið er 'clippingParents'og getur samþykkt HTMLElement tilvísun (aðeins með JavaScript). Nánari upplýsingar er að finna í detectOverflow skjölum Popper .
container strengur, þáttur, rangur false Bætir sprettiglugganum við ákveðinn þátt. Dæmi: container: 'body'. Þessi valkostur er sérstaklega gagnlegur þar sem hann gerir þér kleift að staðsetja sprettigluggann í flæði skjalsins nálægt kveikjueiningunni - sem kemur í veg fyrir að sprettigluggan svífi í burtu frá kveikjuhlutanum meðan á stærð gluggans er breytt.
content strengur, þáttur, fall '' Sjálfgefið innihaldsgildi ef data-bs-contenteigind er ekki til staðar. Ef fall er gefið upp verður það kallað með thistilvísuninni stillt á þáttinn sem popover er tengdur við.
customClass strengur, virka '' Bættu flokkum við sprettigluggann þegar hann er sýndur. Athugaðu að þessum flokkum verður bætt við til viðbótar öllum flokkum sem tilgreindir eru í sniðmátinu. Til að bæta við mörgum flokkum skaltu aðskilja þá með bilum: 'class-1 class-2'. Þú getur líka sent aðgerð sem ætti að skila einum streng sem inniheldur fleiri flokksnöfn.
delay tala, hlutur 0 Seinkað að sýna og fela sprettigluggann (ms) – á ekki við um handvirka kveikjugerð. Ef númer er gefið upp er seinkun beitt á bæði fela/sýna. Uppbygging hlutar er: delay: { "show": 500, "hide": 100 }.
fallbackPlacements strengur, fylki ['top', 'right', 'bottom', 'left'] Skilgreindu varastaðsetningar með því að gefa upp lista yfir staðsetningar í fylki (í forgangsröð). Nánari upplýsingar er að finna í hegðunarskjölum Poppers .
html Boolean false Leyfa HTML í popover. Ef satt, verða HTML merki í sprettiglugganum titlebirt í sprettiglugganum. Ef það er rangt verður innerTexteignin notuð til að setja efni inn í DOM. Notaðu texta ef þú hefur áhyggjur af XSS árásum.
offset tala, strengur, fall [0, 0] Jöfnun á popover miðað við markmið hans. Þú getur sent streng í gagnaeiginleikum með kommum aðskilin gildi eins og: data-bs-offset="10,20". Þegar fall er notað til að ákvarða offsetið er það kallað með hlut sem inniheldur popper staðsetningu, tilvísun og popper rects sem fyrstu rök. Kveikjuþátturinn DOM hnútur er samþykktur sem önnur rök. Fallið verður að skila fylki með tveimur tölum: sleppa , fjarlægð . Nánari upplýsingar er að finna í Offset-skjölum Poppers .
placement strengur, virka 'top' Hvernig á að staðsetja sprettigluggann: sjálfvirkt, efst, neðst, til vinstri, hægri. Þegar autoþað er tilgreint mun það breyta sprettiglugganum á virkan hátt. Þegar fall er notað til að ákvarða staðsetninguna er það kallað með popover DOM hnútinn sem fyrstu röksemd og kveikjuþáttinn DOM hnútinn sem seinni. Samhengið thiser stillt á popover tilvikið.
popperConfig núll, hlutur, fall null Til að breyta sjálfgefna Popper stillingu Bootstrap, sjáðu stillingar Popper . Þegar aðgerð er notuð til að búa til Popper stillinguna er hún kölluð með hlut sem inniheldur sjálfgefna Popper stillingu Bootstrap. Það hjálpar þér að nota og sameina sjálfgefið við þína eigin stillingu. Aðgerðin verður að skila stillingarhlut fyrir Popper.
sanitize Boolean true Virkja eða slökkva á sótthreinsun. Ef virkjað 'template', 'content'og 'title'valkostir verða sótthreinsaðir.
sanitizeFn núll, virka null Hér getur þú útvegað þína eigin sótthreinsunaraðgerð. Þetta getur verið gagnlegt ef þú vilt frekar nota sérstakt bókasafn til að framkvæma hreinsun.
selector strengur, falskur false Ef valkostur er til staðar verða sprettigluggar hlutir framseldir til tilgreindra skotmarka. Í reynd er þetta notað til að nota sprettiglugga á DOM-þætti sem bætt er við með kraftmiklum hætti ( jQuery.onstuðningur). Sjá þetta tölublað og fróðlegt dæmi .
template strengur '<div class="popover" role="popover"><div class="popover-arrow"></div><div class="popover-inner"></div></div>' Grunn HTML til að nota þegar þú býrð til popover. Popoverinu titleverður sprautað inn í .popover-inner. .popover-arrowverður ör popoversins. Ysta umbúðaþátturinn ætti að hafa .popoverflokkinn og role="popover".
title strengur, þáttur, fall '' Sjálfgefið titilgildi ef titleeigind er ekki til staðar. Ef fall er gefið upp verður það kallað með thistilvísuninni stillt á þáttinn sem popover er tengdur við.
trigger strengur 'hover focus' Hvernig popover er kveikt: smellur, sveima, fókus, handvirkt. Þú gætir farið framhjá mörgum kveikjum; aðskilja þá með bili. 'manual'gefur til kynna að sprettigluggann verði ræstur forritunarlega með .popover('show'), .popover('hide')og .popover('toggle')aðferðunum; ekki er hægt að sameina þetta gildi við neina aðra kveikju. 'hover'ein og sér mun leiða til popovers sem ekki er hægt að kveikja á með lyklaborðinu og ætti aðeins að nota ef aðrar aðferðir eru til staðar til að miðla sömu upplýsingum fyrir lyklaborðsnotendur.

Gagnaeiginleikar fyrir einstaka sprettiglugga

Að öðrum kosti er hægt að tilgreina valkosti fyrir einstaka sprettiglugga með því að nota gagnaeiginleika, eins og útskýrt er hér að ofan.

Að nota aðgerð meðpopperConfig

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

Aðferðir

Ósamstilltar aðferðir og umskipti

Allar API aðferðir eru ósamstilltar og hefja umskipti . Þeir snúa aftur til þess sem hringir um leið og umskiptin eru hafin en áður en þeim lýkur . Að auki verður aðferðakall á umbreytingarhluta hunsað .

Sjá JavaScript skjölin okkar fyrir frekari upplýsingar .

Aðferð Lýsing
disable Fjarlægir möguleikann á að sprettiglugga frumefnis sé sýnt. Aðeins er hægt að sýna sprettigluggann ef hann er virkjaður aftur.
dispose Felur og eyðir sprettiglugga frumefnis (Fjarlægir vistuð gögn á DOM-einingunni). Popovers sem nota úthlutun (sem eru búnar til með valmöguleikanum selector) er ekki hægt að eyða hver fyrir sig á afkvæma kveikjuþáttum.
enable Gefur popover frumefnis möguleika á að vera sýndur. Popovers eru sjálfgefið virkjaðir.
getInstance Static aðferð sem gerir þér kleift að fá popover tilvikið tengt DOM frumefni.
getOrCreateInstance Statísk aðferð sem gerir þér kleift að fá popover-tilvikið tengt DOM-einingu, eða búa til nýjan ef það var ekki frumstillt.
hide Felur sprettiglugga frumefnis. Snýr aftur til þess sem hringir áður en popover hefur verið falið (þ.e. áður en hidden.bs.popoveratburðurinn á sér stað). Þetta er talið „handvirk“ kveikja á popover.
setContent Gefur leið til að breyta innihaldi sprettigluggans eftir frumstillingu hans.
show Sýnir popover frumefnis. Snýr aftur til þess sem hringir áður en sprettigluggan hefur verið sýnd (þ.e. áður en shown.bs.popoveratburðurinn á sér stað). Þetta er talið „handvirk“ kveikja á popover. Popovers þar sem titill og innihald eru bæði núll lengd birtast aldrei.
toggle Kveikir á sprettiglugga frumefnis. Snýr aftur til þess sem hringir áður en sprettigluggan hefur verið sýnd eða falin (þ.e. áður en atburðurinn shown.bs.popovereða hidden.bs.popoverá sér stað). Þetta er talið „handvirk“ kveikja á popover.
toggleEnabled Skiptir um möguleikann á að sprettiglugga frumefnis sé sýnt eða falið.
update Uppfærir staðsetningu sprettiglugga frumefnis.
// 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'
})
Aðferðin setContenttekur við objectrökum, þar sem hver eignarlykill er gildur stringvalmynd innan popover sniðmátsins, og hvert tengt eignargildi getur verið string| element| function| null

Viðburðir

Viðburður Lýsing
hide.bs.popover Þessi atburður er ræstur strax þegar hidetilviksaðferðin hefur verið kölluð.
hidden.bs.popover Þessi atburður er ræstur þegar búið er að fela sprettigluggann fyrir notandanum (bíður eftir að CSS umbreytingum ljúki).
inserted.bs.popover Þessi atburður er rekinn eftir show.bs.popoveratburðinn þegar popover sniðmátinu hefur verið bætt við DOM.
show.bs.popover Þessi atburður ræsir strax þegar showtilviksaðferðin er kölluð.
shown.bs.popover Þessi atburður er ræstur þegar sprettiglugginn hefur verið gerður sýnilegur notanda (mun bíða eftir að CSS umbreytingum ljúki).
const myPopoverTrigger = document.getElementById('myPopover')
myPopoverTrigger.addEventListener('hidden.bs.popover', () => {
  // do something...
})