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.
- Jika anda sedang membina JavaScript kami daripada sumber, ia memerlukan
util.js
. - 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 adalah dengan memilihnya mengikut data-toggle
atributnya:
$(function () {
$('[data-toggle="popover"]').popover()
})
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.
$(function () {
$('.example-popover').popover({
container: 'body'
})
})
Contoh
<button type="button" class="btn btn-lg btn-danger" data-toggle="popover" title="Popover title" data-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.
<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="top" data-content="Top popover">
Popover on top
</button>
<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="right" data-content="Right popover">
Popover on right
</button>
<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="bottom" data-content="Bottom popover">
Popover on bottom
</button>
<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="left" data-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 memasukkan tabindex
atribut.
<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-toggle="popover" data-trigger="focus" title="Dismissible popover" data-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a>
$('.popover-dismiss').popover({
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 pembungkus <div>
atau <span>
dan mengatasi pointer-events
pada elemen yang dilumpuhkan.
Untuk pencetus popover yang dilumpuhkan, anda juga boleh memilih data-trigger="hover"
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" data-toggle="popover" data-content="Disabled popover">
<button class="btn btn-primary" style="pointer-events: none;" type="button" disabled>Disabled button</button>
</span>
Penggunaan
Dayakan popovers melalui JavaScript:
$('#example').popover(options)
pecutan GPU
Popover kadangkala kelihatan kabur pada peranti Windows 10 disebabkan oleh pecutan GPU dan DPI sistem yang diubah suai. Penyelesaian untuk ini dalam v4 adalah untuk melumpuhkan pecutan GPU seperti yang diperlukan pada popover anda.
Pembaikan yang dicadangkan:
Popper.Defaults.modifiers.computeStyle.gpuAcceleration = !(window.devicePixelRatio < 1.5 && /Win/.test(navigator.platform))
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 whiteList
atribut dan teg yang dibenarkan), maklum 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-
, seperti dalam data-animation=""
.
sanitize
,
sanitizeFn
dan
whiteList
pilihan tidak boleh dibekalkan menggunakan atribut data.
Nama | taip | Lalai | Penerangan |
---|---|---|---|
animasi | boolean | benar | Gunakan peralihan pudar CSS ke popover |
bekas | rentetan | unsur | salah | salah | Menambah popover pada elemen tertentu. Contoh: |
kandungan | rentetan | unsur | fungsi | '' | Nilai kandungan lalai jika Jika fungsi diberikan, ia akan dipanggil dengan |
kelewatan | 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 | salah | Masukkan HTML ke dalam popover. Jika palsu, text kaedah jQuery akan digunakan untuk memasukkan kandungan ke dalam DOM. Gunakan teks jika anda bimbang tentang serangan XSS. |
penempatan | rentetan | fungsi | 'betul' | 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 |
pemilih | rentetan | salah | salah | 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 . |
templat | tali | '<div class="popover" role="tooltip"><div class="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 |
tajuk | rentetan | unsur | fungsi | '' | Nilai tajuk lalai jika Jika fungsi diberikan, ia akan dipanggil dengan |
pencetus | tali | 'klik' | 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. |
mengimbangi | nombor | tali | 0 | Mengimbangi popover berbanding sasarannya. Untuk maklumat lanjut rujuk kepada dokumen offset Popper . |
fallbackPlacement | rentetan | tatasusunan | 'terbalik' | Benarkan untuk menentukan kedudukan yang Popper akan gunakan pada sandaran. Untuk maklumat lanjut rujuk dokumen tingkah laku Popper |
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. |
sempadan | rentetan | unsur | 'scrollParent' | Sempadan kekangan limpahan popover. Menerima nilai 'viewport' , 'window' , 'scrollParent' , atau rujukan HTMLElement (JavaScript sahaja). Untuk maklumat lanjut rujuk dokumen preventOverflow Popper . |
membersihkan | boolean | benar | Dayakan atau lumpuhkan sanitasi. Jika diaktifkan 'template' , 'content' dan 'title' pilihan akan dibersihkan. Lihat bahagian sanitizer dalam dokumentasi JavaScript kami . |
senarai putih | objek | Nilai asal | Objek yang mengandungi atribut dan tag yang dibenarkan |
sanitasiFn | 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. |
popperConfig | null | objek | null | Untuk menukar konfigurasi Popper lalai Bootstrap, lihat konfigurasi Popper |
Atribut data untuk popover individu
Pilihan untuk popover individu boleh ditentukan secara alternatif melalui penggunaan atribut data, seperti yang dijelaskan di atas.
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 .
$().popover(options)
Memulakan popover untuk koleksi elemen.
.popover('show')
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.
$('#element').popover('show')
.popover('hide')
Menyembunyikan popover elemen. Kembali kepada pemanggil sebelum popover sebenarnya telah disembunyikan (iaitu sebelum hidden.bs.popover
peristiwa berlaku). Ini dianggap sebagai "manual" pencetus popover.
$('#element').popover('hide')
.popover('toggle')
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.
$('#element').popover('toggle')
.popover('dispose')
Menyembunyikan dan memusnahkan popover elemen. Popover yang menggunakan perwakilan (yang dibuat menggunakan pilihan ) tidak selector
boleh dimusnahkan secara individu pada elemen pencetus keturunan.
$('#element').popover('dispose')
.popover('enable')
Memberi popover elemen keupayaan untuk ditunjukkan. Popovers didayakan secara lalai.
$('#element').popover('enable')
.popover('disable')
Mengalih keluar keupayaan untuk popover elemen untuk ditunjukkan. Popover hanya akan dapat ditunjukkan jika ia didayakan semula.
$('#element').popover('disable')
.popover('toggleEnabled')
Togol keupayaan untuk popover elemen untuk ditunjukkan atau disembunyikan.
$('#element').popover('toggleEnabled')
.popover('update')
Mengemas kini kedudukan popover elemen.
$('#element').popover('update')
Peristiwa
Jenis acara | Penerangan |
---|---|
show.bs.popover | Peristiwa ini menyala serta-merta apabila show kaedah contoh dipanggil. |
ditunjukkan.bs.popover | Peristiwa 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. |
$('#myPopover').on('hidden.bs.popover', function () {
// do something...
})