Popovers
Dokumentasi dan contoh untuk menambahkan popover Bootstrap, seperti yang terdapat dalam iOS, pada mana-mana elemen di tapak anda.
Gambaran keseluruhan
Perkara yang perlu diketahui apabila menggunakan pemalam popover:
- Popovers bergantung pada perpustakaan pihak ke-3 Popper untuk kedudukan. Anda mesti menyertakan popper.min.js sebelum bootstrap.js atau gunakan
bootstrap.bundle.min.js
/bootstrap.bundle.js
yang mengandungi Popper agar popover berfungsi! - Popovers memerlukan pemalam tooltip sebagai pergantungan.
- Popovers mengikut serta atas sebab prestasi, jadi anda mesti memulakannya sendiri .
- Panjang sifar
title
dancontent
nilai tidak akan menunjukkan popover. - Tentukan
container: 'body'
untuk mengelakkan masalah rendering dalam komponen yang lebih kompleks (seperti kumpulan input kami, kumpulan butang, dll). - Mencetuskan popover pada elemen tersembunyi tidak akan berfungsi.
- Popover untuk
.disabled
ataudisabled
elemen mesti dicetuskan pada elemen pembalut. - Apabila dicetuskan daripada sauh yang membalut berbilang baris, popover akan dipusatkan di antara lebar keseluruhan sauh. Gunakan
.text-nowrap
pada<a>
s anda untuk mengelakkan tingkah laku ini. - Popover mesti disembunyikan sebelum elemen yang sepadan dialih keluar daripada DOM.
- Popover boleh dicetuskan terima kasih kepada elemen dalam DOM bayangan.
prefers-reduced-motion
pertanyaan media. Lihat bahagian
gerakan yang dikurangkan dalam dokumentasi kebolehaksesan kami .
Teruskan membaca untuk melihat cara popover berfungsi dengan beberapa contoh.
Contoh: Dayakan popover di mana-mana sahaja
Satu cara untuk memulakan semua popover pada halaman ialah memilihnya mengikut data-bs-toggle
atributnya:
var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'))
var popoverList = popoverTriggerList.map(function (popoverTriggerEl) {
return new bootstrap.Popover(popoverTriggerEl)
})
Contoh: Menggunakan container
pilihan
Apabila anda mempunyai beberapa gaya pada elemen induk yang mengganggu popover, anda perlu menentukan tersuai container
supaya HTML popover muncul dalam elemen itu.
var popover = new bootstrap.Popover(document.querySelector('.example-popover'), {
container: 'body'
})
Contoh
<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>
Empat arah
Empat pilihan tersedia: dijajar atas, kanan, bawah dan kiri. Arah dicerminkan apabila menggunakan Bootstrap dalam 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>
Tolak pada klik seterusnya
Gunakan focus
pencetus untuk mengetepikan popover pada klik seterusnya pengguna bagi elemen yang berbeza daripada elemen togol.
Penanda khusus diperlukan untuk dismiss-on-next-click
Untuk kelakuan merentas penyemak imbas dan merentas platform yang betul, anda mesti menggunakan <a>
teg, bukan teg<button>
, dan anda juga mesti menyertakan tabindex
atribut.
<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'
})
Elemen yang dilumpuhkan
Elemen dengan disabled
atribut tidak interaktif, bermakna pengguna tidak boleh menuding atau mengkliknya untuk mencetuskan popover (atau petua alat). Sebagai penyelesaian, anda perlu mencetuskan popover daripada pembalut <div>
atau <span>
, yang idealnya boleh difokuskan papan kekunci menggunakan tabindex="0"
.
Untuk pencetus popover yang dilumpuhkan, anda juga boleh memilih data-bs-trigger="hover focus"
supaya popover muncul sebagai maklum balas visual segera kepada pengguna anda kerana mereka mungkin tidak menjangkakan untuk mengklik pada elemen yang dilumpuhkan.
<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
Pembolehubah
$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);
Penggunaan
Dayakan popovers melalui JavaScript:
var exampleEl = document.getElementById('example')
var popover = new bootstrap.Popover(exampleEl, options)
Membuat popover berfungsi untuk papan kekunci dan pengguna teknologi bantuan
Untuk membenarkan pengguna papan kekunci mengaktifkan popover anda, anda hanya perlu menambahkannya pada elemen HTML yang secara tradisinya boleh memfokus papan kekunci dan interaktif (seperti pautan atau kawalan borang). Walaupun elemen HTML sewenang-wenangnya (seperti <span>
s) boleh dibuat boleh difokuskan dengan menambahkan tabindex="0"
atribut, ini akan menambah hentian tab yang berpotensi menjengkelkan dan mengelirukan pada elemen bukan interaktif untuk pengguna papan kekunci, dan kebanyakan teknologi bantuan pada masa ini tidak mengumumkan kandungan popover dalam situasi ini. . Selain itu, jangan bergantung semata-mata hover
sebagai pencetus popover anda, kerana ini akan menjadikannya mustahil untuk dicetuskan untuk pengguna papan kekunci.
Walaupun anda boleh memasukkan HTML yang kaya dan berstruktur dalam popover dengan html
pilihan, kami amat mengesyorkan agar anda mengelak daripada menambah jumlah kandungan yang berlebihan. Cara popover berfungsi pada masa ini ialah, setelah dipaparkan, kandungannya terikat pada elemen pencetus dengan aria-describedby
atribut. Akibatnya, keseluruhan kandungan popover akan diumumkan kepada pengguna teknologi bantuan sebagai satu aliran yang panjang dan tanpa gangguan.
Selain itu, walaupun mungkin juga untuk memasukkan kawalan interaktif (seperti elemen bentuk atau pautan) dalam popover anda (dengan menambahkan elemen ini pada allowList
atribut dan teg yang dibenarkan), ambil perhatian bahawa pada masa ini popover tidak mengurus susunan fokus papan kekunci. Apabila pengguna papan kekunci membuka popover, fokus kekal pada elemen pencetus, dan memandangkan popover biasanya tidak serta-merta mengikut pencetus dalam struktur dokumen, tiada jaminan bahawa bergerak ke hadapan/menekanTABakan memindahkan pengguna papan kekunci ke dalam popover itu sendiri. Ringkasnya, hanya menambah kawalan interaktif pada popover berkemungkinan menjadikan kawalan ini tidak dapat dicapai/tidak boleh digunakan untuk pengguna papan kekunci dan pengguna teknologi bantuan, atau sekurang-kurangnya membuat susunan fokus keseluruhan yang tidak logik. Dalam kes ini, pertimbangkan untuk menggunakan dialog modal.
Pilihan
Pilihan boleh dihantar melalui atribut data atau JavaScript. Untuk atribut data, tambahkan nama pilihan pada data-bs-
, seperti dalam data-bs-animation=""
. Pastikan anda menukar jenis kes bagi nama pilihan daripada camelCase kepada kebab-case apabila menghantar pilihan melalui atribut data. Sebagai contoh, daripada menggunakan data-bs-customClass="beautifier"
, gunakan data-bs-custom-class="beautifier"
.
sanitize
,
sanitizeFn
, dan
allowList
pilihan tidak boleh dibekalkan menggunakan atribut data.
Nama | taip | Lalai | Penerangan |
---|---|---|---|
animation |
boolean | true |
Gunakan peralihan pudar CSS ke popover |
container |
rentetan | unsur | salah | false |
Menambah popover pada elemen tertentu. Contoh: |
content |
rentetan | unsur | fungsi | '' |
Nilai kandungan lalai jika Jika fungsi diberikan, ia akan dipanggil dengan |
delay |
nombor | objek | 0 |
Kelewatan menunjukkan dan menyembunyikan popover (ms) - tidak digunakan untuk jenis pencetus manual Jika nombor dibekalkan, kelewatan dikenakan pada kedua-dua sembunyi/tunjukkan Struktur objek ialah: |
html |
boolean | false |
Masukkan HTML ke dalam popover. Jika palsu, innerText harta akan digunakan untuk memasukkan kandungan ke dalam DOM. Gunakan teks jika anda bimbang tentang serangan XSS. |
placement |
rentetan | fungsi | 'right' |
Bagaimana untuk meletakkan popover - auto | atas | bawah | kiri | betul. Apabila fungsi digunakan untuk menentukan peletakan, ia dipanggil dengan nod DOM popover sebagai hujah pertamanya dan nod DOM elemen pencetus sebagai yang kedua. Konteks ditetapkan |
selector |
rentetan | salah | false |
Jika pemilih disediakan, objek popover akan diwakilkan kepada sasaran yang ditentukan. Dalam amalan, ini digunakan untuk membolehkan kandungan HTML dinamik mempunyai popover ditambah. Lihat ini dan contoh bermaklumat . |
template |
tali | '<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>' |
HTML asas untuk digunakan semasa membuat popover. Popover Popover
Elemen pembungkus paling luar harus mempunyai |
title |
rentetan | unsur | fungsi | '' |
Nilai tajuk lalai jika Jika fungsi diberikan, ia akan dipanggil dengan |
trigger |
tali | 'click' |
Cara popover dicetuskan - klik | tuding | tumpuan | manual. Anda boleh melepasi pelbagai pencetus; pisahkan mereka dengan ruang. manual tidak boleh digabungkan dengan mana-mana pencetus lain. |
fallbackPlacements |
tatasusunan | ['top', 'right', 'bottom', 'left'] |
Tentukan peletakan sandaran dengan menyediakan senarai peletakan dalam tatasusunan (mengikut keutamaan). Untuk maklumat lanjut rujuk dokumen tingkah laku Popper |
boundary |
rentetan | unsur | 'clippingParents' |
Sempadan kekangan limpahan popover (hanya digunakan untuk pengubah suai preventOverflow Popper). Secara lalai ia 'clippingParents' dan boleh menerima rujukan HTMLElement (melalui JavaScript sahaja). Untuk mendapatkan maklumat lanjut rujuk kepada Popper's detectOverflow docs . |
customClass |
rentetan | fungsi | '' |
Tambahkan kelas pada popover apabila ia ditunjukkan. Ambil perhatian bahawa kelas ini akan ditambah sebagai tambahan kepada mana-mana kelas yang dinyatakan dalam templat. Untuk menambah berbilang kelas, pisahkan mereka dengan ruang: Anda juga boleh lulus fungsi yang harus mengembalikan rentetan tunggal yang mengandungi nama kelas tambahan. |
sanitize |
boolean | true |
Dayakan atau lumpuhkan sanitasi. Jika diaktifkan 'template' , 'content' dan 'title' pilihan akan dibersihkan. Lihat bahagian sanitizer dalam dokumentasi JavaScript kami . |
allowList |
objek | Nilai asal | Objek yang mengandungi atribut dan tag yang dibenarkan |
sanitizeFn |
null | fungsi | null |
Di sini anda boleh membekalkan fungsi sanitasi anda sendiri. Ini boleh berguna jika anda lebih suka menggunakan perpustakaan khusus untuk melakukan sanitasi. |
offset |
tatasusunan | rentetan | fungsi | [0, 8] |
Mengimbangi popover berbanding sasarannya. Anda boleh menghantar rentetan dalam atribut data dengan nilai dipisahkan koma seperti: Apabila fungsi digunakan untuk menentukan ofset, ia dipanggil dengan objek yang mengandungi peletakan popper, rujukan, dan popper rects sebagai hujah pertamanya. Nod DOM elemen pencetus diluluskan sebagai hujah kedua. Fungsi mesti mengembalikan tatasusunan dengan dua nombor: . Untuk maklumat lanjut rujuk kepada dokumen offset Popper . |
popperConfig |
null | objek | fungsi | null |
Untuk menukar konfigurasi Popper lalai Bootstrap, lihat konfigurasi Popper . Apabila fungsi digunakan untuk mencipta konfigurasi Popper, ia dipanggil dengan objek yang mengandungi konfigurasi Popper lalai Bootstrap. Ia membantu anda menggunakan dan menggabungkan lalai dengan konfigurasi anda sendiri. Fungsi mesti mengembalikan objek konfigurasi untuk Popper. |
Atribut data untuk popover individu
Pilihan untuk popover individu boleh ditentukan secara alternatif melalui penggunaan atribut data, seperti yang dijelaskan di atas.
Menggunakan fungsi denganpopperConfig
var popover = new bootstrap.Popover(element, {
popperConfig: function (defaultBsPopperConfig) {
// var newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
Kaedah
Kaedah dan peralihan tak segerak
Semua kaedah API adalah tak segerak dan mulakan peralihan . Mereka kembali kepada pemanggil sebaik sahaja peralihan dimulakan tetapi sebelum ia tamat . Selain itu, panggilan kaedah pada komponen peralihan akan diabaikan .
Lihat dokumentasi JavaScript kami untuk mendapatkan maklumat lanjut .
tunjuk
Mendedahkan popover elemen. Kembali kepada pemanggil sebelum popover sebenarnya telah ditunjukkan (iaitu sebelum shown.bs.popover
peristiwa berlaku). Ini dianggap sebagai "manual" pencetus popover. Popover yang tajuk dan kandungannya sama-sama panjang sifar tidak pernah dipaparkan.
myPopover.show()
bersembunyi
Menyembunyikan popover elemen. Kembali kepada pemanggil sebelum popover sebenarnya telah disembunyikan (iaitu sebelum hidden.bs.popover
peristiwa berlaku). Ini dianggap sebagai "manual" pencetus popover.
myPopover.hide()
togol
Menogol popover elemen. Kembali kepada pemanggil sebelum popover sebenarnya telah ditunjukkan atau disembunyikan (iaitu sebelum shown.bs.popover
atau hidden.bs.popover
peristiwa berlaku). Ini dianggap sebagai "manual" pencetus popover.
myPopover.toggle()
buang
Menyembunyikan dan memusnahkan popover elemen (Mengalih keluar data yang disimpan pada elemen DOM). Popover yang menggunakan perwakilan (yang dibuat menggunakan pilihan ) tidak selector
boleh dimusnahkan secara individu pada elemen pencetus keturunan.
myPopover.dispose()
membolehkan
Memberi popover elemen keupayaan untuk ditunjukkan. Popovers didayakan secara lalai.
myPopover.enable()
melumpuhkan
Mengalih keluar keupayaan untuk popover elemen untuk ditunjukkan. Popover hanya akan dapat ditunjukkan jika ia didayakan semula.
myPopover.disable()
toggleDidayakan
Togol keupayaan untuk popover elemen untuk ditunjukkan atau disembunyikan.
myPopover.toggleEnabled()
kemas kini
Mengemas kini kedudukan popover elemen.
myPopover.update()
getInstance
Kaedah statik yang membolehkan anda mendapatkan contoh popover yang dikaitkan dengan elemen DOM
var exampleTriggerEl = document.getElementById('example')
var popover = bootstrap.Popover.getInstance(exampleTriggerEl) // Returns a Bootstrap popover instance
getOrCreateInstance
Kaedah statik yang membolehkan anda mendapatkan contoh popover yang dikaitkan dengan elemen DOM, atau mencipta yang baharu sekiranya ia tidak dimulakan
var exampleTriggerEl = document.getElementById('example')
var popover = bootstrap.Popover.getOrCreateInstance(exampleTriggerEl) // Returns a Bootstrap popover instance
Peristiwa
Jenis acara | Penerangan |
---|---|
show.bs.popover | Peristiwa ini berlaku serta-merta apabila show kaedah contoh dipanggil. |
ditunjukkan.bs.popover | Acara ini dicetuskan apabila popover telah dilihat kepada pengguna (akan menunggu peralihan CSS selesai). |
hide.bs.popover | Peristiwa ini dicetuskan serta-merta apabila hide kaedah contoh telah dipanggil. |
hidden.bs.popover | Acara ini dicetuskan apabila popover telah selesai disembunyikan daripada pengguna (akan menunggu peralihan CSS selesai). |
disisipkan.bs.popover | Acara ini dicetuskan selepas show.bs.popover acara apabila templat popover telah ditambahkan pada DOM. |
var myPopoverTrigger = document.getElementById('myPopover')
myPopoverTrigger.addEventListener('hidden.bs.popover', function () {
// do something...
})