Skip to di men tin dɛn we de insay Skip to doks nevigishɔn
in English

Popovers dɛn

Dokumɛnt ɛn ɛgzampul fɔ ad Bootstrap popovers, lɛk di wan dɛn we de na iOS, to ɛni ɛlimɛnt na yu sayt.

Ɔvaviu fɔ di Baybul

Tin dɛn fɔ no we yu de yuz di popover plɔgin:

  • Popovers de abop pan di 3rd pati laybri Popper fɔ posishun. Yu fɔ inklud popper.min.js bifo bootstrap.js ɔ yuz bootstrap.bundle.min.js/ bootstrap.bundle.jswe gɛt Popper fɔ mek popovers wok!
  • Popovers nid di tultip plɔgin as dipɛnsin.
  • Popovers na opt-in fɔ pefɔmɛns rizin, so yu fɔ initialize dɛn yusɛf .
  • Ziro-lɛngth titleɛn contentvalyu dɛn nɔ go ɛva sho wan popover.
  • Spɛsify container: 'body'fɔ avɔyd fɔ rɛnd prɔblɛm dɛn na mɔ kɔmpleks kɔmpɔnɛnt dɛn (lɛk wi input grup dɛn, bɔtin grup dɛn, ɛn ɔda wan dɛn).
  • Trigεr popovers pan hidden elements nɔ go wok.
  • Popovers fɔ .disabledɔ disabledɛlimɛnt dɛn fɔ trig pan wan wrap ɛlimɛnt.
  • We dɛn trig am frɔm anka dɛn we de rap akɔdin to bɔku layn dɛn, di popover dɛn go de sɛnt bitwin di ankɔ dɛn ɔl di wit. Yuz .text-nowrappan yu <a>s fɔ avɔyd dis bihayvya.
  • Popovers fɔ ayd bifo dɛn dɔn pul dɛn kɔrɛspɔndɛns ɛlimɛnt dɛn na di DOM.
  • Popovers kin trigεr tanks to wan εlimεnt insay wan shado DOM.
Bay difɔlt, dis kɔmpɔnɛnt de yuz di kɔntinyu sanitiza we dɛn bil insay, we de pul ɛni HTML ɛlimɛnt dɛn we dɛn nɔ alaw klia wan. Si di say we se sanitiza na wi JavaSkript dɔkyumentri fɔ no mɔ.
Di animashɔn ifɛkt fɔ dis kɔmpɔnɛnt de dipen pan di prefers-reduced-motionmidia kwɛstyɔn. Si di ridyus muvmɛnt sɛkshɔn na wi aksesibiliti dɔkyumentri .

Kɔntinyu fɔ rid fɔ si aw popovers de wok wit sɔm ɛgzampul dɛn.

Example: Enable popovers evriwia

Wan we fɔ initialize ɔl di popovers na wan pej go bi fɔ pik dɛn bay dɛn data-bs-toggleatribyut:

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

Example: Yuz di containeropshon

We yu gɛt sɔm stayl dɛn pan wan mama ɛn papa ɛlimɛnt we de ambɔg wan popover, yu go want fɔ spɛsifa wan kɔstɔm containerso dat di popover in HTML go apia insay da ɛlimɛnt de insted.

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

Ɛgzampul

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

Fo dairekshɔn dɛn

Fo opshɔn dɛn de: ɔp, rayt, dɔŋ, ɛn lɛft alaynɛd. Dairekshɔn dɛn de mirɔ we yu de yuz Bootstrap na RTL.

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

Dismis na di nɛks klik

Yuz di focustriga fɔ dismis popovers pan di yuza in nɛks klik fɔ wan difrɛn ɛlimɛnt pas di tɔgl ɛlimɛnt.

Speshal mak we nid fɔ dismis-ɔn-nɛks-klik

Fɔ mek yu krɔs-brawza ɛn krɔs-pletfɔm biev fayn, yu fɔ yuz di <a>tɛg, nɔto di <button>tɛg, ɛn yu fɔ put wan tabindexatribyut bak.

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

Di ɛlimɛnt dɛn we nɔ ebul fɔ wok

Elemɛnt dɛn wit di disabledatribyut nɔ de intaraktiv, we min se yuzman dɛn nɔ kin ebul fɔ hover ɔ klik dɛn fɔ trig wan popover (ɔ tultip). As wokarawnd, yu go want fɔ trig di popover frɔm wan wrap <div>ɔ <span>, ideally mek keyboard-focusable yuz tabindex="0".

Fɔ disabled popover triggers, yu kin lɛk bak data-bs-trigger="hover focus"so dat di popover go apia as kwik vijual fidbak to yu yuza dɛn as dɛn nɔ go ɛkspɛkt fɔ klik pan wan disabled 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 we bin de

Di tin dɛn we kin chenj

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

Aw fɔ yuz am

Enable popovers bay JavaSkript:

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

Mek popovers wok fɔ kibɔd ɛn ɛp tɛknɔlɔji yuza dɛn

Fɔ alaw kibɔd yuza dɛn fɔ aktiv yu popovers, yu fɔ jɔs ad dɛn to HTML ɛlimɛnt dɛn we tradishɔnal kibɔd-fɔkus ɛn intaraktiv (lɛk link ɔ fɔm kɔntrol). Pan ɔl we dɛn kin mek arbitri HTML ɛlimɛnt dɛn (lɛk <span>s) fɔs bay we dɛn ad di tabindex="0"atribyut, dis go ad tab stɔp dɛn we kin anɔynt ɛn kɔnfyus pan tin dɛn we nɔ de intaraktiv fɔ di wan dɛn we de yuz di kibɔd, ɛn bɔku pan di ɛtɛknɔlɔji dɛn we de ɛp pipul dɛn naw nɔ de anɔys di tin dɛn we de insay di popover insay dis sityueshɔn . Apat frɔm dat, nɔ jɔs abop pan hoveras di trig fɔ yu popovers, bikɔs dis go mek dɛn nɔ pɔsibul fɔ trig fɔ di wan dɛn we de yuz kibɔd.

Pan ɔl we yu kin put rich, strɔkchɔ HTML insay popovers wit di htmlopshɔn, wi rili advays yu fɔ avɔyd fɔ ad bɔku bɔku tin dɛn. Di we aw popover dɛn de wok naw na dat, wans dɛn dɔn sho dɛn, dɛn kɔntinyu fɔ tay to di trig ɛlimɛnt wit di aria-describedbyatribyut. As a rizulyt, di ɔltin fɔ di popover in kɔntinyu go anɔys to ɛp tɛknɔlɔji yuza dɛm as wan lɔng, nɔ-interrupted strim.

Apat frɔm dat, pan ɔl we i pɔsibul fɔ put intaraktiv kɔntrol dɛn bak (lɛk fɔm ɛlimɛnt ɔ link dɛn) na yu popover (bay we yu ad dɛn ɛlimɛnt dɛn ya to di allowListɔf atribyut ɛn tag dɛn we dɛn alaw), mɛmba se naw di popover nɔ de manej kibɔd fɔs ɔda. We pɔsin we de yuz kibɔd opin popover, fɔs de kɔntinyu fɔ de pan di trig ɛlimɛnt, ɛn as di popover nɔ kin fala di trig wantɛm wantɛm na di dɔkyumɛnt in strɔkchɔ, no garanti nɔ de fɔ se fɔ go bifo/presTABgo muv wan kibɔd yuza insay di popover sɛf. In shot, jɔs ad intaraktiv kɔntrol to wan popover go mɔs mek dɛn kɔntrol ya nɔ rich/nɔ yuz fɔ di wan dɛn we de yuz kibɔd ɛn di wan dɛn we de yuz ɛp tɛknɔlɔji dɛn, ɔ at di ɔl fɔ mek wan ɔvala fɔs ɔda we nɔ mek lɔjik. Insay dɛn kayn tin ya, tink bɔt fɔ yuz wan modal dayalɔg insted.

Di tin dɛn we yu kin pik fɔ du

Yu kin pas opshɔn dɛn bay we yu yuz data atribyut ɔ JavaSkript. Fɔ data atribyut dɛn, ad di opshɔn nem to data-bs-, lɛk insay data-bs-animation="". Mek shɔ se yu chenj di kes tayp fɔ di opshɔn nem frɔm camelCase to kebab-case we yu de pas di opshɔn dɛn via data atribyut dɛn. Fɔ ɛgzampul, bifo yu yuz data-bs-customClass="beautifier", yuz data-bs-custom-class="beautifier".

Notis se fɔ sikyɔriti rizin dɛn nɔ go ebul fɔ gi di sanitize, sanitizeFn, ɛn allowListopshɔn dɛn we yu de yuz di data atribyut dɛn.
Nem Kayn Balans Tɔk bɔt
animation boolean we dɛn kɔl true Aplay wan CSS fade transishɔn to di popover
container string fɔ di wan dɛn we de | elemɛnt | lay false

Apɛnd di popover to wan patikyula ɛlimɛnt. Fɔ ɛgzampul: container: 'body'. Dis opshɔn rili yusful bikɔs i de alaw yu fɔ posishun di popover insay di flɔ na di dɔkyumɛnt nia di trig ɛlimɛnt - we go mek di popover nɔ flot away frɔm di trig ɛlimɛnt we yu de risayz di winda.

content string fɔ di wan dɛn we de | elemɛnt | wok ''

Difɔlt kɔntinyu valyu if data-bs-contentatribyut nɔ de.

If dɛn gi wan fɛnshɔn, dɛn go kɔl am wit in thisrɛfrɛns sɛt to di ɛlimɛnt we di popover ataya to.

delay nɔmba | tin 0

Dilay fɔ sho ɛn ayd di popover (ms) - nɔ de aplay to manual trigger type

If dɛn gi wan nɔmba, dɛn kin delay fɔ ɔl tu di ayd/sho

Objekt strɔkchɔ na:delay: { "show": 500, "hide": 100 }

html boolean we dɛn kɔl false Put HTML insay di popover. If na lay, innerTextdɛn go yuz prɔpati fɔ put kɔntinyu insay di DOM. Yuz tɛks if yu de wɔri bɔt XSS atak dɛn.
placement string fɔ di wan dɛn we de | wok 'right'

Aw fɔ posishun di popover - auto | top | dɔŋ ya | lɛft | rayt.
We autodɛn spɛsifa, i go dinamik rioriɛnt di popover.

We dɛn yuz wan fɛnshɔn fɔ no di plesmɛnt, dɛn kin kɔl am wit di popover DOM node as in fɔs argumɛnt ɛn di trigɛn ɛlimɛnt DOM node as in sɛkɔn. Di thiskɔntɛks de sɛt to di popover instans.

selector string fɔ di wan dɛn we de | lay false If dɛn gi wan sɛlɛktɔ, dɛn go deleget popover ɔbjɛkt dɛn to di target dɛn we dɛn dɔn spɛsifa. Insay prɔsis, dɛn kin yuz dis fɔ mek dinamik HTML kɔntinyu fɔ gɛt popovers we dɛn ad. Si dis ɛn wan ɛgzampul we gɛt bɔku tin dɛn fɔ no bɔt .
template rop '<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'

Base HTML fɔ yuz we yu de mek di popover.

Di popover's titlego injekt insay di .popover-header.

Di popover's contentgo injekt insay di .popover-body.

.popover-arrowgo bi di popover in aro.

Di ɔtamost wrap ɛlimɛnt fɔ gɛt di .popoverklas.

title string fɔ di wan dɛn we de | elemɛnt | wok ''

Difɔlt taytul valyu if titleatribyut nɔ de.

If dɛn gi wan fɛnshɔn, dɛn go kɔl am wit in thisrɛfrɛns sɛt to di ɛlimɛnt we di popover ataya to.

trigger rop 'click' Aw popover de trig - klik | hover fɔ di wan dɛn we de wok | fɔs fɔs | buk. Yu kin pas bɔku trig dɛn; separet dɛn wit wan ples. manualnɔ kin ebul fɔ jɔyn wit ɛni ɔda trig.
fallbackPlacements arenjmɛnt fɔ di wan dɛn we de ['top', 'right', 'bottom', 'left'] Difayn fɔlbak plesmɛnt dɛn bay we yu gi wan list fɔ plesmɛnt dɛn na arenjmɛnt (in ɔda we aw dɛn lɛk). Fɔ no mɔ, luk na Popper’s behavior docs
boundary string fɔ di wan dɛn we de | tin 'clippingParents' Ovaflɔ kɔnstrakshɔn bɔda fɔ di popover (i de aplay nɔmɔ to Popper in preventOverflow modifya). Bay difɔlt na 'clippingParents'ɛn kin aksept wan HTMLElement rɛfrɛns (via JavaSkript nɔmɔ). Fɔ no mɔ, luk na Popper’s detectOverflow docs .
customClass string fɔ di wan dɛn we de | wok ''

Ad klas dɛn to di popover we dɛn sho am. Notis se dɛn go ad dɛn klas ya apat frɔm ɛni klas we dɛn dɔn sho na di tɛmplat. Fɔ ad bɔku klas dɛn, separet dɛn wit spɛshal say dɛn: 'class-1 class-2'.

Yu kin pas wan fɛnshɔn bak we fɔ ritɔn wan string we gɛt ɔda klas nem dɛn.

sanitize boolean we dɛn kɔl true Enable ɔ disable di sanitayzeshɔn. If activated 'template', 'content'ɛn 'title'opshɔn dɛn go sanitayz. Si di say we se sanitiza na wi JavaSkript dɔkyumentri .
allowList tin Difɔlt valyu Objek we gɛt atribyut ɛn tag dɛn we dɛn alaw
sanitizeFn nul we de na di wɔl | wok null Na ya yu kin saplae yu own sanitize function. Dis kin fayn if yu lɛk fɔ yuz laybri we dɛn dɔn gi yu fɔ du sanitayzeshɔn.
offset arenjmɛnt fɔ | string fɔ di wan dɛn we de | wok [0, 8]

Offset of di popover rilitiv to in target. Yu kin pas wan string insay data atribyut dɛn wit kɔma separet valyu dɛn lɛk:data-bs-offset="10,20"

We dɛn yuz wan fɛnshɔn fɔ no di ɔfset, dɛn kin kɔl am wit wan ɔbjɛkt we gɛt di pɔpa plesmɛnt, di rɛfrɛns, ɛn di pɔpa rɛkt dɛn as in fɔs argumɛnt. Di trigεrin εlimεnt DOM node de pas as di sɛkɔn argumɛnt. Di fɛnshɔn fɔ ritɔn wan arenjmɛnt wit tu nɔmba dɛn: .[skidding, distance]

Fɔ no mɔ, luk na Popper’s offset docs .

popperConfig nul we de na di wɔl | ɔbjɛkt | wok null

Fɔ chenj Bootstrap in difɔlt Popper kɔnfigyushɔn, si Popper in kɔnfigyushɔn .

We dɛn yuz wan fɛnshɔn fɔ mek di Popper kɔnfigyushɔn, dɛn kin kɔl am wit wan ɔbjɛkt we gɛt di Bootstrap in difɔlt Popper kɔnfigyushɔn. I de ɛp yu fɔ yuz ɛn jɔyn di difɔlt wit yu yon kɔnfigyushɔn. Di fɛnshɔn fɔ ritɔn wan kɔnfigyushɔn ɔbjɛkt fɔ Popa.

Data atribyut fɔ wan wan popover dɛn

Opshɔn fɔ wan wan popover dɛn kin ɔda we fɔ spɛsifa tru di yus fɔ data atribyut dɛn, as dɛn ɛksplen am ɔp.

Yuz funkshɔn witpopperConfig

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

Di we aw dɛn de du am

Asynchronous mεtכd dεm εn transishכn dεm

Ɔl di API mɛtɔd dɛn na asynchronous ɛn dɛn kin stat wan transishɔn . Dɛn kin go bak to di pɔsin we kɔl am jɔs lɛk aw dɛn bigin fɔ chenj bɔt bifo i dɔn . Apat frɔm dat, dɛn go ignore wan mɛtɔd kɔl pan wan transishɔn kɔmpɔnɛnt .

Si wi JavaSkript dɔkyumentri fɔ no mɔ .

sho

Rivɛl wan ɛlimɛnt in popover. Ritɔn to di pɔsin we kɔl bifo di popover dɔn rili sho (dat na bifo di shown.bs.popoverivin apin). Dɛn kin tek dis as “manual” we de trig di popover. Popovers we dɛn taytul ɛn kɔntinyu ɔl tu na ziro-lɛngth nɔ de ɛva sho.

myPopover.show()

ayd

Ayd wan ɛlimɛnt in popover. Ritɔn to di pɔsin we kɔl bifo di popover dɔn rili ayd (dat na bifo di hidden.bs.popoverivin apin). Dɛn kin tek dis as “manual” we de trig di popover.

myPopover.hide()

fɔ chenj di we aw dɛn de

Toggles wan element in popover. Ritɔn to di pɔsin we kɔl bifo di popover dɔn rili sho ɔ ayd (dat na bifo di shown.bs.popoverɔ hidden.bs.popoverivin apin). Dɛn kin tek dis as “manual” we de trig di popover.

myPopover.toggle()

fɔ trowe am

Ayd ɛn pwɛl wan ɛlimɛnt in popover (Rimov di data we dɛn dɔn kip na di DOM ɛlimɛnt). Popovers we de yuz delegɛshɔn (we dɛn mek yuz di selectoropshɔn ) nɔ kin ebul fɔ pwɛl wan wan pan disɛndant trig ɛlimɛnt dɛn.

myPopover.dispose()

ɛp

Gi wan element in popover di abiliti fɔ sho. Popovers dɛn dɔn ɛnabul bay difɔlt.

myPopover.enable()

disebul

Rimov di abiliti fɔ wan ɛlimɛnt in popover fɔ sho. Di popover go onli ebul fɔ sho if dɛn ri-enable am.

myPopover.disable()

toggleDɛn dɔn ɛnabul am

Toggles di abiliti fɔ wan element in popover fɔ sho ɔ ayd.

myPopover.toggleEnabled()

chenj

Updates di posishun fɔ wan ɛlimɛnt in popover.

myPopover.update()

getInstans fɔ di wan dɛn we de

Statik we de alaw yu fɔ gɛt di popover instans we gɛt fɔ du wit wan DOM ɛlimɛnt

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

getƆKriɛtInstans

Statik we de alaw yu fɔ gɛt di popover instans we gɛt fɔ du wit wan DOM ɛlimɛnt, ɔ mek wan nyu wan insay kes we i nɔ bin initialize

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

Di tin dɛn we kin apin

Di kayn tin we apin Tɔk bɔt
sho.bs.popover fɔ di wan dɛn we de Dis ivent de faya wantɛm wantɛm we dɛn kɔl di showinstans mɛtɔd.
sho.bs.popova Dis ivent de faya we di popover dɔn mek visible to di yuza (go wet fɔ CSS transishɔn fɔ dɔn).
ayd.bs.popover fɔ di wan dɛn we de Dis ivent de faya wantɛm wantɛm we hidedɛn dɔn kɔl di instans mɛtɔd.
ayd.bs.powa we de Dis ivent de faya we di popover dɔn dɔn fɔ ayd frɔm di yuza (go wet fɔ CSS transishɔn dɛn fɔ dɔn).
insay.bs.poova Dis ivent de faya afta di show.bs.popoverivent we dɛn dɔn ad di popover tɛmplat to di DOM.
var myPopoverTrigger = document.getElementById('myPopover')
myPopoverTrigger.addEventListener('hidden.bs.popover', function () {
  // do something...
})