Passà à u cuntenutu principale Salta à a navigazione di documenti
Check
in English

Popovers

Documentazione è esempi per aghjunghje popovers Bootstrap, cum'è quelli chì si trovanu in iOS, à qualsiasi elementu in u vostru situ.

Panoramica

Cose da sapè quandu si usa u plugin popover:

  • Popovers s'appoghjanu nantu à a biblioteca di terzu Popper per u posizionamentu. Duvete include popper.min.js prima bootstrap.js, o utilizate unu bootstrap.bundle.min.jschì cuntene Popper.
  • Popovers necessitanu u plugin popover cum'è una dipendenza.
  • I popovers sò opt-in per ragioni di rendiment, cusì duvete inizializzalli voi stessu .
  • A lunghezza zero titleè contenti valori ùn mostraranu mai un popover.
  • Specificate container: 'body'per evità prublemi di rende in cumpunenti più cumplessi (cum'è i nostri gruppi di input, gruppi di buttone, etc.).
  • Triggering popovers nantu à elementi nascosti ùn funziona micca.
  • Popovers per .disabledo disabledelementi deve esse attivati ​​nantu à un elementu wrapper.
  • Quandu sò attivati ​​​​da ancore chì si avvolgenu in parechje linee, i popovers seranu centrati trà a larghezza generale di l'ancore. Aduprate .text-nowrapnantu à u vostru <a>s per evità stu cumpurtamentu.
  • Popovers deve esse ammucciatu prima chì i so elementi currispondenti sò stati eliminati da u DOM.
  • Popovers ponu esse attivati ​​grazia à un elementu in un DOM ombra.
Per automaticamente, stu cumpunente usa u sanitizer di cuntenutu integratu, chì sguassate qualsiasi elementi HTML chì ùn sò micca esplicitamente permessi. Vede a sezione di disinfettante in a nostra documentazione JavaScript per più dettagli.
L'effettu di l'animazione di stu cumpunente dipende da a prefers-reduced-motionmedia query. Vede a sezione di movimentu ridottu di a nostra documentazione d'accessibilità .

Continua a leghje per vede cumu i popovers funzionanu cù alcuni esempi.

Esempii

Abilita i popovers

Cumu l'esitatu sopra, duvete inizializà popovers prima di pudè esse usatu. Una manera di inizializà tutti i popovers in una pagina seria di selezziunà per u so data-bs-toggleattributu, cusì:

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

Demo live

Usemu JavaScript simile à u snippet sopra per rende u popover live in seguitu. I tituli sò stabiliti via data-bs-titleè u cuntenutu di u corpu hè stabilitu via data-bs-content.

Sentite liberu di utilizà titleo data-bs-titlein u vostru HTML. Quandu titlehè utilizatu, Popper a rimpiazzà automaticamente cù data-bs-titlequandu l'elementu hè resu.
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>

Quattru direzzione

Quattru opzioni sò dispunibuli: cima, destra, fondu è manca. L'indicazioni sò specchiate quandu si usa Bootstrap in RTL. Set data-bs-placementper cambià a direzzione.

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>

Customcontainer

Quandu avete qualchi stili nantu à un elementu parent chì interferiscenu cù un popover, vi vulete specificà un persunalizatu containerper chì l'HTML di u popover apparisce in quellu elementu invece. Questu hè cumunu in e tabelle responsive, gruppi di input, è simili.

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

Un'altra situazione induve vulete stabilisce un persunalizatu esplicitu containersò popovers in un dialogu modale , per assicurà chì u popover stessu hè appiccicatu à u modale. Questu hè particularmente impurtante per i popovers chì cuntenenu elementi interattivi - i dialoghi modali trappuleranu u focu, cusì à menu chì u popover hè un elementu zitellu di u modale, l'utilizatori ùn puderanu micca focalizà o attivà questi elementi interattivi.

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

Popovers persunalizati

Aggiuntu in v5.2.0

Pudete persunalizà l'aspettu di popovers usendu variabili CSS . Avemu stabilitu una classa persunalizata data-bs-custom-class="custom-popover"per scopre a nostra apparenza persunalizata è l'utilizanu per annullà alcune di e variabili CSS lucali.

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

Licenziate nantu à u prossimu clic

Aduprate u focustrigger per scaccià i popovers nantu à u prossimu clic di l'utilizatori di un elementu sfarente da l'elementu di toggle.

Marcatura specifica necessaria per dismiss-on-next-click

Per un cumpurtamentu propiu cross-browser è cross-platform, duvete aduprà l' <a>etichetta, micca l' <button>etichetta, è ancu deve include un tabindexattributu.

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

Elementi disabilitati

L'elementi cù l' disabledattributu ùn sò micca interattivi, vale à dì chì l'utilizatori ùn ponu micca sopra o cliccà per attivà un popover (o tooltip). Cum'è una soluzione alternativa, vi vulete attivà u popover da un wrapper <div>o <span>, idealmente fattu focalizatu da u teclatu utilizendu tabindex="0".

Per attivatori di popover disattivati, pudete ancu preferite data-bs-trigger="hover focus"cusì chì u popover apparisce cum'è feedback visuale immediatu à i vostri utilizatori perchè ùn anu micca aspittà di cliccà nantu à un elementu disabilitatu.

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

Variabili

Aggiuntu in v5.2.0

Comu parte di l'approcciu di variabili CSS in evoluzione di Bootstrap, i popovers usanu avà variabili CSS lucali .popoverper una persunalizazione rinfurzata in tempu reale. I valori per e variabili CSS sò stabiliti via Sass, cusì a persunalizazione di Sass hè ancu supportata.

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

Variabili Sass

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

Usu

Abilita popovers via JavaScript:

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

Fà chì i popovers funzionanu per l'utilizatori di tastiera è di tecnulugia di assistenza

Per permettà à l'utilizatori di u teclatu per attivà i vostri popovers, duvete aghjunghje solu à elementi HTML chì sò tradiziunali focalizzati in u teclatu è interattivi (cum'è ligami o cuntrolli di forma). Ancu se l'elementi HTML arbitrarii (cum'è <span>s) ponu esse focalizzati aghjunghjendu l' tabindex="0"attributu, questu aghjunghjenu tabulazione potenzialmente fastidiosa è confusa nantu à elementi non interattivi per l'utilizatori di u teclatu, è a maiò parte di e tecnulugie d'assistenza ùn anu micca annunziatu u cuntenutu di popover in questa situazione. . Inoltre, ùn fiate micca solu hovercum'è u trigger per i vostri popovers, postu chì questu li farà impussibili per l'utilizatori di u teclatu.

Mentre pudete inserisce HTML riccu è strutturatu in popovers cù l' htmlopzione, ricumandemu fermamente chì evità di aghjunghje una quantità eccessiva di cuntenutu. A manera chì i popovers travaglianu attualmente hè chì, una volta affissatu, u so cuntenutu hè ligatu à l'elementu di trigger cù l' aria-describedbyattributu. In u risultatu, l'interu cuntenutu di u popover serà annunziatu à l'utilizatori di a tecnulugia di assistenza cum'è un flussu longu è ininterrottu.

Inoltre, mentre hè pussibule ancu include cuntrolli interattivi (cum'è elementi di forma o ligami) in u vostru popover (aghjunghjendu questi elementi à l' allowListattributi è tag permessi), sia cuscenti chì attualmente u popover ùn gestisce micca l'ordine di focus di u teclatu. Quandu un utilizatore di u teclatu apre un popover, l'enfasi resta nantu à l'elementu di attivazione, è cum'è u popover di solitu ùn seguita micca immediatamente u trigger in a struttura di u documentu, ùn ci hè micca garanzia chì avanzà / pressendu.TABmoverà un utilizatore di tastiera in u popover stessu. In breve, solu aghjunghje cuntrolli interattivi à un popover hè prubabile di rende questi cuntrolli inaccessibili / inutilizabili per l'utilizatori di u teclatu è l'utilizatori di tecnulugii d'assistenza, o almenu facenu per un ordine di focu generale illogicu. In questi casi, cunzidira à utilizà un dialogu modale invece.

Opzioni

Siccomu l'opzioni ponu esse passati via attributi di dati o JavaScript, pudete appiccicà un nome d'opzione à data-bs-, cum'è in data-bs-animation="{value}". Assicuratevi di cambià u tipu di casu di u nome di l'opzione da " camelCase " à " kebab-case " quandu passanu l'opzioni via attributi di dati. Per esempiu, aduprà data-bs-custom-class="beautifier"invece di data-bs-customClass="beautifier".

A partire da Bootstrap 5.2.0, tutti i cumpunenti supportanu un attributu di dati riservatu sperimentaledata-bs-config chì pò accoglie cunfigurazione di cumpunenti simplice cum'è una stringa JSON. Quandu un elementu hà data-bs-config='{"delay":0, "title":123}'è data-bs-title="456"attributi, u valore finali titleserà 456è l'attributi di dati separati annullaranu i valori dati nantu à data-bs-config. Inoltre, l'attributi di dati esistenti sò capaci di allughjà valori JSON cum'è data-bs-delay='{"show":0,"hide":150}'.

Nota chì, per ragioni di sicurità, l' opzioni sanitize, sanitizeFn, è allowListùn ponu esse furnite cù l'attributi di dati.
Nome Tipu Default Descrizzione
allowList ughjettu Valore predeterminatu Ughjettu chì cuntene attributi permessi è tags.
animation booleanu true Applica una transizione di fade CSS à u popover.
boundary corda, elementu 'clippingParents' Limite di limitazione di overflow di u popover (applica solu à u modificatore preventOverflow di Popper). Per automaticamente, hè 'clippingParents'è pò accettà una riferenza HTMLElement (via JavaScript solu). Per più infurmazione, fate riferimentu à i docs detectOverflow di Popper .
container stringa, elementu, falsu false Appendi u popover à un elementu specificu. Esempiu: container: 'body'. Questa opzione hè particularmente utile in quantu vi permette di pusà u popover in u flussu di u documentu vicinu à l'elementu di attivazione - chì impedisce chì u popover si alluntanassi da l'elementu di attivazione durante un ridimensionamentu di a finestra.
content stringa, elementu, funzione '' Valore di cuntenutu predeterminatu se data-bs-contentl'attributu ùn hè micca presente. Se una funzione hè datu, serà chjamata cù u so thisriferimentu stabilitu à l'elementu chì u popover hè attaccatu.
customClass stringa, funzione '' Aghjunghjite classi à u popover quandu si mostra. Nota chì queste classi seranu aghjunte in più di qualsiasi classi specificate in u mudellu. Per aghjunghje parechje classi, siparalli cù spazii: 'class-1 class-2'. Pudete ancu passà una funzione chì deve rinvià una sola stringa chì cuntene nomi di classi supplementari.
delay numeru, ughjettu 0 Ritarda di mostra è nasconde u popover (ms) - ùn hè micca applicatu à u tipu di trigger manuale. Se un numeru hè furnitu, u ritardu hè appiicatu à tramindui nascondere / mostra. A struttura di l'ughjettu hè: delay: { "show": 500, "hide": 100 }.
fallbackPlacements stringa, array ['top', 'right', 'bottom', 'left'] Definite i piazzamenti fallback fornendu una lista di piazzamenti in array (in ordine di preferenza). Per più infurmazione, fate riferimentu à i documenti di cumpurtamentu di Popper .
html booleanu false Permette HTML in u popover. Se veru, i tag HTML in u popover titleseranu resi in u popover. Se false, innerTexta pruprietà serà aduprata per inserisce u cuntenutu in u DOM. Aduprate u testu s'è vo site preoccupatu per l'attacchi XSS.
offset numeru, stringa, funzione [0, 0] Offset di u popover relative à u so scopu. Pudete passà una stringa in attributi di dati cù valori separati da virgola cum'è: data-bs-offset="10,20". Quandu una funzione hè aduprata per determinà l'offset, hè chjamatu cù un oggettu chì cuntene a pusizione di popper, a riferenza è u popper rects cum'è u so primu argumentu. L'elementu triggering node DOM hè passatu cum'è u sicondu argumentu. A funzione deve rinvià un array cù dui numeri: skidding , distance . Per più infurmazione, fate riferimentu à i documenti offset di Popper .
placement stringa, funzione 'top' Cumu pusà u popover: auto, top, bottom, left, right. Quandu autohè specificatu, reorienterà dinamicamente u popover. Quandu una funzione hè aduprata per determinà a piazza, hè chjamata cù u popover DOM node cum'è u so primu argumentu è l'elementu triggering DOM node cum'è u so secondu. U thiscuntestu hè stabilitu à l'istanza popover.
popperConfig null, ughjettu, funzione null Per cambià a configurazione Popper predeterminata di Bootstrap, vede a cunfigurazione di Popper . Quandu una funzione hè aduprata per creà a cunfigurazione Popper, hè chjamata cù un ughjettu chì cuntene a cunfigurazione Popper predeterminata di Bootstrap. Vi aiuta à aduprà è unisce u predeterminatu cù a vostra cunfigurazione. A funzione deve rinvià un oggettu di cunfigurazione per Popper.
sanitize booleanu true Attivà o disattivà a sanitizazione. Se attivatu 'template', 'content'è 'title'l'opzioni seranu sanitizate.
sanitizeFn null, funzione null Quì pudete furnisce a vostra propria funzione di sanitizazione. Questu pò esse utile se preferite aduprà una biblioteca dedicata per fà a sanitizazione.
selector stringa, falza false Se un selettore hè furnitu, l'uggetti popover seranu delegati à i miri specificati. In pratica, questu hè utilizatu per applicà ancu popovers à elementi DOM aghjuntu dinamicamente ( jQuery.onsupportu). Vede stu prublema è un esempiu informativu .
template stringa '<div class="popover" role="popover"><div class="popover-arrow"></div><div class="popover-inner"></div></div>' HTML di basa per aduprà quandu crea u popover. U popover titlesarà injectatu in u .popover-inner. .popover-arrowdiventerà a freccia di u popover. L'elementu wrapper più esterno deve avè a .popoverclassa è role="popover".
title stringa, elementu, funzione '' Valore di u titulu predeterminatu se titlel'attributu ùn hè micca presente. Se una funzione hè datu, serà chjamata cù u so thisriferimentu stabilitu à l'elementu chì u popover hè attaccatu.
trigger stringa 'hover focus' Cumu u popover hè attivatu: cliccate, hover, focus, manual. Pudete passà parechje triggers; separà cù un spaziu. 'manual'indica chì u popover serà attivatu in modu programmaticu per mezu di i metudi .popover('show'), .popover('hide')è ; .popover('toggle')stu valore ùn pò esse cumminatu cù qualsiasi altru trigger. 'hover'da u so propiu risultatu in popovers chì ùn ponu micca esse attivati ​​via u teclatu, è deve esse usatu solu se i metudi alternativi per trasmette a listessa infurmazione per l'utilizatori di u teclatu sò prisenti.

Attributi di dati per popovers individuali

L'opzioni per popovers individuali ponu esse specificati in alternativa per l'usu di l'attributi di dati, cum'è spiegatu sopra.

Utilizà a funzione cùpopperConfig

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

I metudi

Metudi asincroni è transizioni

Tutti i metudi API sò asincroni è cumincianu una transizione . Ritornanu à u chjamante appena a transizione hè iniziata, ma prima chì finisce . Inoltre, un metudu chjamatu nantu à un cumpunente di transizione serà ignoratu .

Vede a nostra documentazione JavaScript per più infurmazione .

Metudu Descrizzione
disable Elimina l'abilità di mostra un popover di l'elementu. U popover pò esse mostratu solu s'ellu hè riattivatu.
dispose Oculta è distrugge u popover di un elementu (Elimina i dati almacenati nantu à l'elementu DOM). Popovers chì utilizanu a delegazione (chì sò creati cù l' selectoropzione ) ùn ponu micca esse distrutte individualmente nantu à elementi di trigger discendenti.
enable Dà a popover di un elementu a capacità di esse mostrata. I popovers sò attivati ​​per automaticamente.
getInstance Metudu staticu chì permette di ottene l'istanza popover assuciata à un elementu DOM.
getOrCreateInstance Metudu staticu chì permette di ottene l'istanza popover assuciata à un elementu DOM, o creanu un novu in casu ùn hè micca inizializatu.
hide Nasconde u popover di un elementu. Ritorna à u chjamante prima chì u popover sia statu oculatu (vale à dì prima chì l' hidden.bs.popoveravvenimentu si faci). Questu hè cunsideratu un attivazione "manuale" di u popover.
setContent Dà un modu per cambià u cuntenutu di u popover dopu a so inizializazione.
show Revela u popover di un elementu. Ritorna à u chjamante prima chì u popover sia statu veramente mostratu (vale à dì prima chì l' shown.bs.popoveravvenimentu si faci). Questu hè cunsideratu un attivazione "manuale" di u popover. Popovers chì u titulu è u cuntenutu sò tutti dui di lunghezza zero ùn sò mai affissati.
toggle Commuta u popover di un elementu. Ritorna à u chjamante prima chì u popover sia statu veramente mostratu o oculatu (vale à dì prima chì l' avvenimentu shown.bs.popovero hidden.bs.popoversi faci). Questu hè cunsideratu un attivazione "manuale" di u popover.
toggleEnabled Commuta a capacità per a popover di un elementu per esse mostrata o oculata.
update Aghjurnate a pusizione di popover di un elementu.
// 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'
})
U setContentmetudu accetta un objectargumentu, induve ogni chjave di pruprietà hè un stringselettore validu in u mudellu popover, è ogni valore di pruprietà in relazione pò esse string| element| function| null

Avvenimenti

Avvenimentu Descrizzione
hide.bs.popover Questu avvenimentu hè sparatu immediatamente quandu u hidemetudu di istanza hè statu chjamatu.
hidden.bs.popover Questu avvenimentu hè sparatu quandu u popover hà finitu di esse oculatu da l'utilizatore (aspetterà chì e transizioni CSS finiscinu).
inserted.bs.popover Questu avvenimentu hè sparatu dopu l' show.bs.popoveravvenimentu quandu u mudellu popover hè statu aghjuntu à u DOM.
show.bs.popover Questu avvenimentu spara immediatamente quandu u showmetudu di istanza hè chjamatu.
shown.bs.popover Questu avvenimentu hè sparatu quandu u popover hè statu resu visibile à l'utilizatore (aspetterà chì e transizioni CSS finiscinu).
const myPopoverTrigger = document.getElementById('myPopover')
myPopoverTrigger.addEventListener('hidden.bs.popover', () => {
  // do something...
})