Popovers
Dokumentasi lan conto kanggo nambah popovers Bootstrap, kaya sing ditemokake ing iOS, menyang unsur apa wae ing situs sampeyan.
Ringkesan
Sing kudu dingerteni nalika nggunakake plugin popover:
- Popovers gumantung ing perpustakaan pihak katelu Popper kanggo posisi. Sampeyan kudu kalebu popper.min.js sadurunge
bootstrap.js
, utawa nggunakake salah sijibootstrap.bundle.min.js
sing ngemot Popper. - Popovers mbutuhake plugin popover minangka dependensi.
- Popovers milih kanggo alasan kinerja, dadi sampeyan kudu miwiti dhewe .
- Zero-dawa
title
lancontent
nilai ora bakal nuduhake popover. - Nemtokake
container: 'body'
kanggo ngindhari masalah rendering ing komponen sing luwih rumit (kayata grup input, grup tombol, lsp). - Micu popovers ing unsur sing didhelikake ora bakal bisa.
- Popovers kanggo
.disabled
utawadisabled
unsur kudu micu ing unsur wrapper. - Nalika dipicu saka jangkar sing mbungkus pirang-pirang baris, popover bakal dipusatake ing antarane jembar sakabèhé jangkar. Gunakake
.text-nowrap
ing<a>
s kanggo supaya prilaku iki. - Popovers kudu didhelikake sadurunge unsur sing cocog wis dibusak saka DOM.
- Popovers bisa micu thanks kanggo unsur nang bayangan DOM.
prefers-reduced-motion
pitakon media. Deleng
bagean gerakan suda saka dokumentasi aksesibilitas kita .
Tansah maca kanggo ndeleng carane popovers bisa digunakake karo sawetara conto.
Tuladha
Aktifake popovers
Kaya kasebut ing ndhuwur, sampeyan kudu miwiti popovers sadurunge bisa digunakake. Salah siji cara kanggo miwiti kabeh popovers ing sawijining kaca yaiku milih kanthi data-bs-toggle
atribut, kayata:
const popoverTriggerList = document.querySelectorAll('[data-bs-toggle="popover"]')
const popoverList = [...popoverTriggerList].map(popoverTriggerEl => new bootstrap.Popover(popoverTriggerEl))
demo langsung
Kita nggunakake JavaScript sing padha karo cuplikan ing ndhuwur kanggo nggawe popover langsung ing ngisor iki. Judhul disetel liwat data-bs-title
lan isi awak disetel liwat data-bs-content
.
title
utawa
data-bs-title
ing HTML. Nalika
title
digunakake, Popper bakal ngganti kanthi otomatis
data-bs-title
nalika unsur wis render.
<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>
Papat arah
Ana papat opsi: ndhuwur, tengen, ngisor, lan kiwa. Arah dicerminake nalika nggunakake Bootstrap ing RTL. Setel data-bs-placement
kanggo ngganti 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
Yen sampeyan duwe sawetara gaya ing unsur induk sing ngganggu popover, sampeyan pengin nemtokake adat container
supaya HTML popover katon ing unsur kasebut. Iki umum ing tabel responsif, grup input, lan liya-liyane.
const popover = new bootstrap.Popover('.example-popover', {
container: 'body'
})
Kahanan liyane ing ngendi sampeyan pengin nyetel adat eksplisit container
yaiku popovers ing dialog modal , kanggo mesthekake yen popover dhewe ditambahake menyang modal. Iki penting banget kanggo popover sing ngemot unsur interaktif - dialog modal bakal njebak fokus, dadi kajaba popover minangka unsur anak saka modal, pangguna ora bakal bisa fokus utawa ngaktifake unsur interaktif kasebut.
const popover = new bootstrap.Popover('.example-popover', {
container: '.modal-body'
})
Custom popovers
Ditambahake ing v5.2.0Sampeyan bisa ngatur tampilan popovers nggunakake variabel CSS . Kita nyetel kelas khusus data-bs-custom-class="custom-popover"
kanggo nyakup tampilan khusus lan digunakake kanggo ngatasi sawetara 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>
Mbusak ing klik sabanjuré
Gunakake focus
pemicu kanggo ngilangi popovers ing klik sabanjuré pangguna saka unsur beda saka unsur toggle.
Markup khusus dibutuhake kanggo ngilangi-on-next-click
Kanggo prilaku lintas-browser lan lintas-platform sing tepat, sampeyan kudu nggunakake <a>
tag, dudu tag <button>
, lan sampeyan uga kudu nyakup 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 dipatèni
Elemen karo disabled
atribut ora interaktif, tegese pangguna ora bisa ngeklik utawa ngeklik kanggo micu popover (utawa tooltip). Minangka workaround, sampeyan bakal pengin micu popover saka pambungkus <div>
utawa <span>
, saenipun digawe keyboard-focusable nggunakake tabindex="0"
.
Kanggo pemicu popover sing dipatèni, sampeyan uga luwih seneng data-bs-trigger="hover focus"
supaya popover katon minangka umpan balik visual langsung kanggo pangguna amarga ora ngarep-arep ngeklik unsur sing dipatèni.
<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
Ditambahake ing v5.2.0Minangka bagéan saka pendekatan variabel CSS Bootstrap sing berkembang, popovers saiki nggunakake variabel CSS lokal .popover
kanggo kustomisasi wektu nyata sing ditingkatake. Nilai kanggo variabel CSS disetel liwat Sass, supaya kustomisasi Sass isih didhukung.
--#{$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;
Panggunaan
Aktifake popovers liwat JavaScript:
const exampleEl = document.getElementById('example')
const popover = new bootstrap.Popover(exampleEl, options)
Nggawe popovers bisa digunakake kanggo pangguna keyboard lan teknologi assistive
Kanggo ngidini pangguna keyboard ngaktifake popover sampeyan, sampeyan mung kudu nambahake menyang unsur HTML sing biasane fokus keyboard lan interaktif (kayata pranala utawa kontrol formulir). Senajan unsur HTML kasepakatan (kayata <span>
s) bisa digawe fokus kanthi nambah tabindex="0"
atribut, iki bakal nambah potensi ngganggu lan mbingungake tab mandheg ing unsur non-interaktif kanggo pangguna keyboard, lan paling teknologi assistive saiki ora ngumumake isi popover ing kahanan iki. . Kajaba iku, aja ngandelake mung hover
minangka pemicu kanggo popovers sampeyan, amarga iki ora bisa dipicu kanggo pangguna keyboard.
Nalika sampeyan bisa nglebokake HTML sing sugih lan terstruktur ing popovers kanthi html
pilihan, kita banget nyaranake supaya ora nambah konten sing akeh banget. Cara popovers saiki bisa digunakake yaiku, yen ditampilake, isi kasebut diikat karo unsur pemicu kanthi aria-describedby
atribut. Akibaté, kabeh isi popover bakal diumumake menyang pangguna teknologi asisten minangka aliran sing dawa lan tanpa gangguan.
Kajaba iku, nalika bisa uga kalebu kontrol interaktif (kayata unsur formulir utawa pranala) ing popover sampeyan (kanthi nambahake unsur kasebut menyang allowList
atribut lan tag sing diidinake), elinga yen saiki popover ora ngatur urutan fokus keyboard. Nalika pangguna keyboard mbukak popover, fokus tetep ing unsur pemicu, lan minangka popover biasane ora langsung ngetutake pemicu ing struktur dokumen, ora ana jaminan sing maju / menet.TABbakal mindhah pangguna keyboard menyang popover dhewe. Ing cendhak, mung nambah kontrol interaktif kanggo popover kamungkinan kanggo nggawe kontrol iki ora bisa diakses / ora bisa digunakake kanggo pangguna keyboard lan pangguna teknologi assistive, utawa paling ora nggawe urutan fokus sakabehe ora logis. Ing kasus iki, nimbang nggunakake dialog modal tinimbang.
Pilihan
Minangka opsi bisa liwati liwat atribut data utawa JavaScript, sampeyan bisa nambah jeneng pilihan kanggo data-bs-
, kaya ing data-bs-animation="{value}"
. Priksa manawa kanggo ngganti jinis kasus jeneng pilihan saka " camelCase " kanggo " kebab-case " nalika ngliwati pilihan liwat atribut data. Contone, nggunakake data-bs-custom-class="beautifier"
tinimbang data-bs-customClass="beautifier"
.
Ing Bootstrap 5.2.0, kabeh komponen ndhukung atribut data sing dilindhungi eksperimendata-bs-config
sing bisa ngemot konfigurasi komponen sing prasaja minangka string JSON. Nalika unsur duwe data-bs-config='{"delay":0, "title":123}'
lan data-bs-title="456"
atribut, title
nilai pungkasan bakal 456
lan atribut data sing kapisah bakal ngilangi nilai sing diwenehake ing data-bs-config
. Kajaba iku, atribut data sing ana bisa ngemot nilai JSON kaya data-bs-delay='{"show":0,"hide":150}'
.
sanitize
,
sanitizeFn
, lan
allowList
opsi ora bisa diwenehake nggunakake atribut data.
jeneng | Jinis | Default | Katrangan |
---|---|---|---|
allowList |
obyek | Nilai standar | Obyek sing ngemot atribut lan tag sing diidini. |
animation |
boolean | true |
Aplikasi transisi fade CSS menyang popover. |
boundary |
string, unsur | 'clippingParents' |
Wates kendala overflow saka popover (mung ditrapake kanggo modifier preventOverflow Popper). Kanthi gawan, iku 'clippingParents' lan bisa nampa referensi HTMLElement (mung liwat JavaScript). Kanggo informasi luwih lengkap waca docs detectOverflow Popper . |
container |
string, unsur, palsu | false |
Nambahake popover menyang unsur tartamtu. Tuladha: container: 'body' . Opsi iki migunani banget amarga ngidini sampeyan nyetel popover ing aliran dokumen ing cedhak unsur pemicu - sing bakal nyegah popover saka ngambang saka unsur pemicu nalika ngowahi ukuran jendhela. |
content |
string, elemen, fungsi | '' |
Nilai isi standar yen data-bs-content atribut ora ana. Yen fungsi diwenehi, iku bakal disebut karo this referensi disetel kanggo unsur sing popover ditempelake. |
customClass |
string, fungsi | '' |
Tambah kelas menyang popover nalika ditampilake. Elinga yen kelas iki bakal ditambahake saliyane kelas sing ditemtokake ing cithakan. Kanggo nambah sawetara kelas, misahake karo spasi: 'class-1 class-2' . Sampeyan uga bisa pass fungsi sing ngirim bali senar siji ngemot jeneng kelas tambahan. |
delay |
nomer, obyek | 0 |
Tundha nuduhake lan ndhelikake popover (ms) - ora ditrapake kanggo jinis pemicu manual. Yen nomer diwenehake, wektu tundha ditrapake kanggo ndhelikake / nuduhake. Struktur obyek yaiku: delay: { "show": 500, "hide": 100 } . |
fallbackPlacements |
string, susunan | ['top', 'right', 'bottom', 'left'] |
Nemtokake placements fallback kanthi menehi dhaptar panggonan ing array (miturut preferensi). Kanggo informasi luwih lengkap waca docs prilaku Popper . |
html |
boolean | false |
Ngidini HTML ing popover. Yen bener, tag HTML ing popover title bakal ditampilake ing popover. Yen palsu, innerText properti bakal digunakake kanggo nglebokake isi menyang DOM. Gunakake teks yen sampeyan kuwatir babagan serangan XSS. |
offset |
angka, string, fungsi | [0, 0] |
Offset saka popover relatif kanggo target sawijining. Sampeyan bisa ngliwati senar ing atribut data kanthi nilai sing dipisahake koma kaya: data-bs-offset="10,20" . Nalika fungsi digunakake kanggo nemtokake offset, diarani obyek sing ngemot panggonan popper, referensi, lan popper rects minangka argumen pisanan. Node DOM unsur pemicu dilewati minangka argumen kapindho. Fungsi kasebut kudu ngasilake array kanthi rong nomer: skidding , distance . Kanggo informasi luwih lengkap waca docs offset Popper . |
placement |
string, fungsi | 'top' |
Carane posisi popover: otomatis, ndhuwur, ngisor, kiwa, tengen. Nalika auto wis ditemtokake, iku bakal mbosenke reorient popover. Nalika fungsi digunakake kanggo nemtokake panggonan seko, diarani simpul DOM popover minangka argumen pisanan lan unsur pemicu DOM node minangka kaloro. Konteks this disetel menyang conto popover. |
popperConfig |
null, obyek, fungsi | null |
Kanggo ngganti konfigurasi Popper standar Bootstrap, ndeleng konfigurasi Popper . Nalika fungsi digunakake kanggo nggawe konfigurasi Popper, diarani obyek sing ngemot konfigurasi Popper standar Bootstrap. Iki mbantu sampeyan nggunakake lan nggabungake standar karo konfigurasi sampeyan dhewe. Fungsi kasebut kudu ngasilake obyek konfigurasi kanggo Popper. |
sanitize |
boolean | true |
Aktifake utawa mateni sanitasi. Yen diaktifake 'template' , 'content' lan 'title' pilihan bakal diresiki. |
sanitizeFn |
null, fungsi | null |
Ing kene sampeyan bisa nyedhiyakake fungsi sanitasi dhewe. Iki bisa migunani yen sampeyan luwih seneng nggunakake perpustakaan khusus kanggo nindakake sanitasi. |
selector |
string, palsu | false |
Yen pamilih diwenehake, obyek popover bakal didelegasikan menyang target sing ditemtokake. Ing laku, iki digunakake kanggo uga aplikasi popovers kanggo mbosenke ditambahaké DOM unsur ( jQuery.on support). Waca masalah iki lan conto informatif . |
template |
senar | '<div class="popover" role="popover"><div class="popover-arrow"></div><div class="popover-inner"></div></div>' |
HTML dhasar kanggo digunakake nalika nggawe popover. Popover title bakal disuntikake menyang .popover-inner . .popover-arrow bakal dadi panah popover. Unsur pambungkus paling njaba kudu duwe .popover kelas lan role="popover" . |
title |
string, elemen, fungsi | '' |
Nilai judhul standar yen title atribut ora ana. Yen fungsi diwenehi, iku bakal disebut karo this referensi disetel kanggo unsur sing popover ditempelake. |
trigger |
senar | 'hover focus' |
Carane popover dipicu: klik, hover, fokus, manual. Sampeyan bisa ngliwati sawetara pemicu; misahake karo spasi. 'manual' nuduhake yen popover bakal micu programmatically liwat .popover('show') , .popover('hide') lan .popover('toggle') cara; Nilai iki ora bisa digabungake karo pemicu liyane. 'hover' dhewe bakal kasil popovers sing ora bisa micu liwat keyboard, lan mung kudu digunakake yen cara alternatif kanggo ngirim informasi sing padha kanggo pangguna keyboard saiki. |
Atribut data kanggo popovers individu
Pilihan kanggo popovers individu bisa uga ditemtokake liwat nggunakake atribut data, kaya sing diterangake ing ndhuwur.
Nggunakake fungsi karopopperConfig
const popover = new bootstrap.Popover(element, {
popperConfig(defaultBsPopperConfig) {
// const newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
Metode
Cara lan transisi asinkron
Kabeh cara API ora sinkron lan miwiti transisi . Dheweke bali menyang panelpon sanalika transisi diwiwiti nanging sadurunge rampung . Kajaba iku, panggilan metode ing komponen transisi bakal diabaikan .
Deleng dokumentasi JavaScript kita kanggo informasi luwih lengkap .
Metode | Katrangan |
---|---|
disable |
Mbusak kemampuan kanggo popover unsur kanggo ditampilake. Popover mung bakal bisa ditampilake yen diaktifake maneh. |
dispose |
Ndhelikake lan ngrusak popover unsur (Mbusak data sing disimpen ing unsur DOM). Popovers sing nggunakake delegasi (sing digawe nggunakake pilihanselector ) ora bisa dirusak individu ing unsur pemicu turunan. |
enable |
Menehi popover unsur kemampuan kanggo ditampilake. Popovers diaktifake kanthi gawan. |
getInstance |
Cara statis sing ngidini sampeyan entuk conto popover sing ana gandhengane karo unsur DOM. |
getOrCreateInstance |
Cara statis sing ngidini sampeyan entuk conto popover sing digandhengake karo unsur DOM, utawa nggawe sing anyar yen ora diwiwiti. |
hide |
Ndhelikake popover unsur. Bali menyang panelpon sadurunge popover bener-bener didhelikake (yaiku sadurunge hidden.bs.popover kedadeyan kasebut). Iki dianggep minangka "manual" pemicu popover. |
setContent |
Menehi cara kanggo ngganti isi popover sawise initialization sawijining. |
show |
Nuduhake popover unsur. Bali menyang panelpon sadurunge popover bener-bener ditampilake (yaiku sadurunge shown.bs.popover acara kasebut kedadeyan). Iki dianggep minangka "manual" pemicu popover. Popovers sing judhul lan isine nol-dawa ora tau ditampilake. |
toggle |
Ngalih popover unsur. Bali menyang panelpon sadurunge popover wis bener ditampilake utawa didhelikake (yaiku sadurunge acara shown.bs.popover utawa hidden.bs.popover kedadeyan). Iki dianggep minangka "manual" pemicu popover. |
toggleEnabled |
Ngalih kemampuan kanggo popover unsur supaya ditampilake utawa didhelikake. |
update |
Nganyari 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
kasebut nampa
object
argumentasi, ing ngendi saben kunci properti minangka
string
pamilih sing bener ing cithakan popover, lan saben nilai properti sing gegandhengan bisa dadi
string
|
element
|
function
|
null
Acara
Acara | Katrangan |
---|---|
hide.bs.popover |
Acara iki langsung dipecat nalika hide metode conto wis diarani. |
hidden.bs.popover |
Acara iki dipecat nalika popover wis rampung didhelikake saka pangguna (bakal ngenteni transisi CSS rampung). |
inserted.bs.popover |
Acara iki dipecat sawise show.bs.popover acara nalika cithakan popover wis ditambahake menyang DOM. |
show.bs.popover |
Acara iki langsung murub nalika show metode conto diarani. |
shown.bs.popover |
Acara iki dipecat nalika popover wis katon kanggo pangguna (bakal ngenteni transisi CSS rampung). |
const myPopoverTrigger = document.getElementById('myPopover')
myPopoverTrigger.addEventListener('hidden.bs.popover', () => {
// do something...
})