Popovers
Dokuméntasi sareng conto pikeun nambihan popovers Bootstrap, sapertos anu aya dina ios, kana unsur naon waé dina situs anjeun.
Ihtisar
Hal-hal anu kedah terang nalika nganggo plugin popover:
- Popovers ngandelkeun perpustakaan pihak katilu Popper pikeun positioning. Anjeun kedah ngalebetkeun popper.min.js sateuacan
bootstrap.js
, atanapi nganggobootstrap.bundle.min.js
anu ngandung Popper. - Popovers merlukeun plugin popover salaku kagumantungan.
- Popovers milih pikeun alesan kinerja, janten anjeun kedah ngamimitian nyalira .
- Nol-panjang
title
jeungcontent
nilai moal nembongkeun popover a. - Sebutkeun
container: 'body'
pikeun nyegah masalah rendering dina komponén anu langkung kompleks (sapertos grup input kami, grup tombol, jsb). - Triggering popovers on elemen disumputkeun moal jalan.
- Popovers pikeun
.disabled
atawadisabled
elemen kudu dipicu dina unsur wrapper. - Nalika dipicu tina jangkar anu ngabungkus sababaraha garis, popovers bakal dipuseurkeun antara lebar sadayana jangkar. Paké
.text-nowrap
on<a>
s anjeun ulah kabiasaan ieu. - Popovers kudu disumputkeun saméméh elemen pakait maranéhanana geus dihapus tina DOM.
- Popovers tiasa dipicu berkat unsur dina DOM kalangkang.
prefers-reduced-motion
pamundut média. Tempo
bagian gerak ngurangan tina dokuméntasi aksés kami .
Tetep maca pikeun ningali kumaha popovers dianggo sareng sababaraha conto.
Contona
Aktipkeun popovers
Sakumaha didadarkeun di luhur, Anjeun kudu initialize popovers saméméh maranéhna bisa dipaké. Salah sahiji cara pikeun ngamimitian sadayana popovers dina halaman nyaéta milih aranjeunna dumasar kana data-bs-toggle
atributna, sapertos kieu:
const popoverTriggerList = document.querySelectorAll('[data-bs-toggle="popover"]')
const popoverList = [...popoverTriggerList].map(popoverTriggerEl => new bootstrap.Popover(popoverTriggerEl))
Live demo
Kami nganggo JavaScript anu sami sareng snippet di luhur pikeun ngajantenkeun popover langsung di handap ieu. Judul diatur via data-bs-title
jeung eusi awak disetel via data-bs-content
.
title
atawa
data-bs-title
dina HTML Anjeun. Nalika
title
dianggo, Popper bakal ngagentos sacara otomatis
data-bs-title
nalika unsurna didamel.
<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>
Opat arah
Opat pilihan sadia: luhur, katuhu, handap, jeung kénca. Arah dicerminkeun nalika nganggo Bootstrap di RTL. Setel data-bs-placement
pikeun ngarobah arah.
<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>
Adatcontainer
Lamun anjeun boga sababaraha gaya dina unsur indungna nu ngaganggu popover a, anjeun bakal hoyong nangtukeun custom a container
sangkan HTML nu popover urang némbongan dina unsur éta gantina. Ieu umum dina tabel responsif, grup input, jeung sajabana.
const popover = new bootstrap.Popover('.example-popover', {
container: 'body'
})
Situasi anu sanés dimana anjeun badé nyetél adat anu eksplisit container
nyaéta popovers di jero dialog modal , pikeun mastikeun yén popover sorangan ditambah kana modal. Ieu hususna penting pikeun popover nu ngandung elemen interaktif - dialog modal bakal bubu fokus, jadi iwal popover mangrupa unsur anak tina modal, pamaké moal bisa museurkeun atawa ngaktipkeun elemen interaktif ieu.
const popover = new bootstrap.Popover('.example-popover', {
container: '.modal-body'
})
popovers custom
Ditambahkeun dina v5.2.0Anjeun tiasa nyaluyukeun penampilan popovers nganggo variabel CSS . Urang nyetel kelas custom kalawan data-bs-custom-class="custom-popover"
wengkuan penampilan custom urang jeung make eta pikeun override sababaraha variabel CSS lokal.
.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>
Leupaskeun dina klik salajengna
Anggo focus
pemicu pikeun ngaleungitkeun popovers dina klik salajengna pangguna tina unsur anu béda ti unsur toggle.
Markup spésifik dipikabutuh pikeun dismiss-on-next-click
Pikeun paripolah cross-browser sareng cross-platform anu leres, anjeun kedah nganggo <a>
tag, sanés tag <button>
, sareng anjeun ogé kedah ngalebetkeun tabindex
atribut.
<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'
})
Unsur ditumpurkeun
Unsur-unsur anu gaduh disabled
atribut henteu interaktif, hartosna pangguna henteu tiasa hover atanapi ngaklikana pikeun memicu popover (atanapi tooltip). Salaku workaround a, anjeun bakal hoyong pemicu popover ti wrapper <div>
atawa <span>
, idéal dijieun keyboard-focusable maké tabindex="0"
.
Pikeun pemicu popover anu ditumpurkeun, anjeun ogé tiasa resep data-bs-trigger="hover focus"
supados popover muncul salaku eupan balik visual langsung ka pangguna anjeun sabab henteu nyangka ngaklik unsur anu ditumpurkeun.
<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
Variabel
Ditambahkeun dina v5.2.0Salaku bagian tina pendekatan variabel CSS Bootstrap anu ngembang, popovers ayeuna nganggo variabel CSS lokal .popover
pikeun kustomisasi sacara real-time anu ditingkatkeun. Nilai pikeun variabel CSS diatur via Sass, jadi kustomisasi Sass masih dirojong, teuing.
--#{$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);
variabel 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;
Pamakéan
Aktipkeun popovers via JavaScript:
const exampleEl = document.getElementById('example')
const popover = new bootstrap.Popover(exampleEl, options)
Ngadamel popovers dianggo pikeun keyboard sareng pangguna téknologi anu ngabantosan
Pikeun ngidinan pamaké keyboard pikeun ngaktipkeun popovers anjeun, anjeun ngan kudu nambahanana kana elemen HTML nu tradisional keyboard-focusable sarta interaktif (saperti tumbu atawa kontrol formulir). Sanajan elemen HTML sawenang (sapertos <span>
s) bisa dijieun focusable ku nambahkeun tabindex="0"
atribut, ieu bakal nambahan tab berpotensi bangor tur matak ngabingungkeun eureun dina elemen non-interaktif pikeun pamaké keyboard, sarta paling téknologi mantuan ayeuna teu ngumumkeun eusi popover dina situasi ieu. . Salaku tambahan, ulah ngan ukur ngandelkeun hover
salaku pemicu pikeun popovers anjeun, sabab ieu bakal ngajantenkeun aranjeunna teu mungkin dipicuna pikeun pangguna keyboard.
Sanaos anjeun tiasa nyelapkeun HTML terstruktur anu beunghar dina popovers kalayan html
pilihan, kami nyarankeun pisan yén anjeun ulah nambihan eusi anu kaleuleuwihan. Cara popovers ayeuna jalan nyaeta, sakali ditampilkeun, eusi maranéhanana dihijikeun ka unsur pemicu jeung aria-describedby
atribut. Hasilna, sakabéh eusi popover bakal diumumkeun ka pamaké téhnologi assistive salaku hiji aliran panjang, uninterrupted.
Salaku tambahan, sanaos kamungkinan ogé kalebet kadali interaktif (sapertos elemen bentuk atanapi tautan) dina popover anjeun (ku nambihan elemen ieu kana allowList
atribut sareng tag anu diidinan), perhatikeun yén ayeuna popover henteu ngatur urutan fokus keyboard. Lamun pamaké keyboard muka popover a, fokus tetep dina unsur pemicu, sarta salaku popover biasana teu langsung nuturkeun pemicu dina struktur dokumen urang, euweuh jaminan yén pindah ka hareup / mencét.TABbakal mindahkeun hiji pamaké keyboard kana popover sorangan. Pondokna, ngan saukur nambahkeun kadali interaktif kana popover a kamungkinan nyieun kadali ieu unreachable / teu bisa dipaké pikeun pamaké keyboard jeung pamaké téknologi assistive, atawa sahenteuna nyieun hiji urutan fokus sakabéhna teu logis. Dina kasus ieu, mertimbangkeun ngagunakeun dialog modal gantina.
Pilihan
Salaku pilihan bisa diliwatan via atribut data atawa JavaScript, anjeun bisa append hiji ngaran pilihan pikeun data-bs-
, sakumaha dina data-bs-animation="{value}"
. Pastikeun pikeun ngarobah tipe kasus tina ngaran pilihan tina " camelCase " pikeun " kebab-case " nalika ngalirkeun pilihan ngaliwatan atribut data. Contona, make data-bs-custom-class="beautifier"
tinimbang data-bs-customClass="beautifier"
.
Salaku Bootstrap 5.2.0, sadaya komponén ngarojong hiji atribut data ditangtayungan eksperimendata-bs-config
nu bisa imah konfigurasi komponén basajan salaku string JSON. Lamun hiji unsur boga data-bs-config='{"delay":0, "title":123}'
jeung data-bs-title="456"
atribut, nilai final title
bakal 456
jeung atribut data misah bakal override nilai dibikeun dina data-bs-config
. Salaku tambahan, atribut data anu aya tiasa ngeusian nilai JSON sapertos data-bs-delay='{"show":0,"hide":150}'
.
sanitize
,
sanitizeFn
, sareng
allowList
pilihan teu tiasa disayogikeun nganggo atribut data.
Ngaran | Tipe | Default | Katerangan |
---|---|---|---|
allowList |
objék | Nilai standar | Obyék anu ngandung atribut sareng tag anu diidinan. |
animation |
boolean | true |
Larapkeun transisi fade CSS kana popover. |
boundary |
string, unsur | 'clippingParents' |
wates konstrain mudal tina popover (ngan manglaku ka Popper's preventOverflow modifier). Sacara standar, éta 'clippingParents' sarta bisa nampa hiji rujukan HTMLElement (via JavaScript wungkul). Kanggo inpo nu leuwih lengkep tingal Popper urang detectOverflow docs . |
container |
string, unsur, palsu | false |
Appends popover ka elemen husus. Contona: container: 'body' . Pilihan ieu hususna kapaké sabab ngamungkinkeun anjeun pikeun nempatkeun popover dina aliran dokumen caket unsur pemicu - anu bakal nyegah popover ngambang jauh tina unsur pemicu nalika ngarobih ukuran jandela. |
content |
string, unsur, fungsi | '' |
Nilai eusi standar upami data-bs-content atribut teu aya. Upami fungsina dipasihkeun, éta bakal disebat sareng this rujukanna disetel ka unsur anu napel popover. |
customClass |
string, fungsi | '' |
Tambahkeun kelas kana popover nalika dipintonkeun. Catet yén kelas-kelas ieu bakal ditambah salian ti kelas-kelas anu aya dina citakan. Pikeun nambahkeun sababaraha kelas, misahkeun aranjeunna kalayan spasi: 'class-1 class-2' . Anjeun oge bisa lulus fungsi nu kudu balik a string tunggal ngandung ngaran kelas tambahan. |
delay |
angka, objék | 0 |
Tunda nunjukkeun sareng nyumputkeun popover (ms) - henteu dilarapkeun kana jinis pemicu manual. Lamun jumlah disadiakeun, reureuh diterapkeun ka duanana nyumputkeun / acara. Struktur objék nyaéta: delay: { "show": 500, "hide": 100 } . |
fallbackPlacements |
string, susunan | ['top', 'right', 'bottom', 'left'] |
Nangtukeun panempatan fallback ku cara méré daptar panempatan dina susunan (dina urutan preferensi). Kanggo inpo nu leuwih lengkep tingal docs kabiasaan Popper urang . |
html |
boolean | false |
Ngidinan HTML dina popover nu. Lamun bener, tag HTML dina popover urang title bakal rendered di popover nu. Upami palsu, innerText harta bakal dianggo pikeun nyelapkeun eusi kana DOM. Anggo téks upami anjeun hariwang ngeunaan serangan XSS. |
offset |
angka, string, fungsi | [0, 0] |
Offset tina popover relatif ka target na. Anjeun tiasa ngaliwat senar dina atribut data kalayan nilai anu dipisahkeun koma sapertos: data-bs-offset="10,20" . Nalika hiji fungsi dipaké pikeun nangtukeun offset, mangka disebut kalawan objék ngandung panempatan popper, rujukan, sarta popper rects salaku argumen kahijina. The triggering unsur DOM titik diliwatan salaku argumen kadua. fungsi kudu balik hiji Asép Sunandar Sunarya dua angka: skidding , jarak . Kanggo inpo nu leuwih lengkep tingal docs offset Popper urang . |
placement |
string, fungsi | 'top' |
Kumaha posisi popover: otomatis, luhur, handap, kénca, katuhu. Nalika auto dieusian, éta bakal dinamis reorient popover. Nalika fungsi dipaké pikeun nangtukeun panempatan, mangka disebut titik popover DOM salaku argumen kahijina sarta triggering unsur titik DOM salaku kadua. Kontéks this disetel ka conto popover. |
popperConfig |
null, objék, fungsi | null |
Pikeun ngarobah konfigurasi Popper standar Bootstrap, tingali konfigurasi Popper . Nalika hiji fungsi dipaké pikeun nyieun konfigurasi Popper, mangka disebut kalawan obyék nu ngandung konfigurasi Popper standar Bootstrap urang. Éta ngabantosan anjeun nganggo sareng ngahijikeun standar sareng konfigurasi anjeun nyalira. fungsi kudu balik hiji objek konfigurasi pikeun Popper. |
sanitize |
boolean | true |
Aktipkeun atanapi mareuman sanitasi. Upami diaktipkeun 'template' , 'content' sareng 'title' pilihan bakal disanitasi. |
sanitizeFn |
null, fungsi | null |
Di dieu anjeun tiasa nyayogikeun fungsi sanitasi anjeun nyalira. Ieu tiasa mangpaat upami anjeun resep ngagunakeun perpustakaan khusus pikeun ngalaksanakeun sanitasi. |
selector |
string, palsu | false |
Upami pamilih disayogikeun, obyék popover bakal didelegasikeun ka target anu ditangtukeun. Dina prakték, ieu dipaké pikeun ogé nerapkeun popovers kana elemen DOM ditambahkeun dinamis ( jQuery.on rojongan). Tempo masalah ieu sareng conto informatif . |
template |
senar | '<div class="popover" role="popover"><div class="popover-arrow"></div><div class="popover-inner"></div></div>' |
Dasar HTML pikeun dianggo nalika nyiptakeun popover. The popover urang title bakal nyuntik kana .popover-inner . .popover-arrow bakal janten panah popover. Unsur wrapper pangluarna kudu boga .popover kelas na role="popover" . |
title |
string, unsur, fungsi | '' |
Nilai judul standar upami title atribut teu aya. Upami fungsina dipasihkeun, éta bakal disebat sareng this rujukanna disetel ka unsur anu napel popover. |
trigger |
senar | 'hover focus' |
Kumaha popover dipicu: klik, hover, fokus, manual. Anjeun tiasa ngalangkungan sababaraha pemicu; misahkeun aranjeunna kalayan spasi. 'manual' nunjukkeun yén popover bakal dipicu programmatically via .popover('show') , .popover('hide') jeung .popover('toggle') métode; nilai ieu teu bisa digabungkeun jeung sagala pemicu séjén. 'hover' sorangan bakal ngahasilkeun popovers nu teu bisa micu via kibor, sarta kudu ngan dipaké lamun aya métode alternatif pikeun nepikeun informasi anu sarua pikeun pamaké keyboard. |
Atribut data pikeun popovers individu
Pilihan pikeun popovers individu bisa Alternatipna dieusian ngaliwatan pamakéan atribut data, sakumaha dipedar di luhur.
Ngagunakeun fungsi kalawanpopperConfig
const popover = new bootstrap.Popover(element, {
popperConfig(defaultBsPopperConfig) {
// const newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
Métode
Métode Asynchronous sareng transisi
Sadaya metode API henteu sinkron sareng ngamimitian transisi . Aranjeunna balik deui ka panelepon pas transisi dimimitian tapi saméméh éta ends . Sajaba ti éta, panggero métode dina komponén transisi bakal dipaliré .
Tempo dokuméntasi JavaScript kami pikeun inpo nu leuwih lengkep .
Métode | Katerangan |
---|---|
disable |
Ngahapus kamampuan popover unsur pikeun ditingalikeun. Popover ngan bakal tiasa ditingalikeun upami diaktipkeun deui. |
dispose |
Nyumputkeun sareng ngancurkeun popover unsur (Ngahapus data anu disimpen dina unsur DOM). Popovers nu make delegasi (anu dijieun maké pilihanselector ) teu bisa individual ancur dina elemen pemicu turunan. |
enable |
Méré popover hiji unsur kamampuhan pikeun ditingalikeun. Popovers diaktipkeun sacara standar. |
getInstance |
Metodeu statik anu ngamungkinkeun anjeun kéngingkeun conto popover anu aya hubunganana sareng unsur DOM. |
getOrCreateInstance |
Métode statik anu ngamungkinkeun anjeun kéngingkeun conto popover anu aya hubunganana sareng unsur DOM, atanapi ngadamel anu énggal upami henteu diinisialisasi. |
hide |
Nyumputkeun popover unsur. Mulih ka panelepon saméméh popover sabenerna geus disumputkeun (ie saméméh hidden.bs.popover acara lumangsung). Ieu dianggap "manual" triggering of popover nu. |
setContent |
Méré cara pikeun ngarobah eusi popover sanggeus initialization na. |
show |
Nembongkeun popover unsur. Mulih ka panelepon saméméh popover sabenerna geus ditémbongkeun (ie saméméh shown.bs.popover acara lumangsung). Ieu dianggap "manual" triggering of popover nu. Popovers anu judulna sareng eusina duanana panjangna nol teu pernah ditampilkeun. |
toggle |
Toggles popover unsur urang. Mulih ka nu nelepon saméméh popover sabenerna geus ditémbongkeun atawa disumputkeun (ie saméméh shown.bs.popover atawa hidden.bs.popover kajadian lumangsung). Ieu dianggap "manual" triggering of popover nu. |
toggleEnabled |
Toggles kamampuhan pikeun popover unsur pikeun ditémbongkeun atawa disumputkeun. |
update |
Ngamutahirkeun posisi popover unsur. |
// 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
narima
object
argumen, dimana unggal sipat-konci mangrupakeun
string
pamilih valid dina template popover, sarta unggal patali sipat-nilai bisa jadi
string
|
element
|
function
|
null
Kajadian
Acara | Katerangan |
---|---|
hide.bs.popover |
Kajadian ieu langsung dipecat nalika hide metode conto parantos disebut. |
hidden.bs.popover |
Acara ieu dipecat nalika popover parantos disumputkeun tina pangguna (bari ngantosan transisi CSS réngsé). |
inserted.bs.popover |
Kajadian ieu dipecat sanggeus show.bs.popover kajadian nalika template popover geus ditambahkeun kana DOM. |
show.bs.popover |
Kajadian ieu langsung hurung nalika show metode conto disebut. |
shown.bs.popover |
Kajadian ieu dipecat nalika popover parantos katingali ku pangguna (bari ngantosan transisi CSS réngsé). |
const myPopoverTrigger = document.getElementById('myPopover')
myPopoverTrigger.addEventListener('hidden.bs.popover', () => {
// do something...
})