Langkau ke kandungan utama Langkau ke navigasi dokumen
in English

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.jsyang mengandungi Popper agar popover berfungsi!
  • Popovers memerlukan pemalam tooltip sebagai pergantungan.
  • Popovers mengikut serta atas sebab prestasi, jadi anda mesti memulakannya sendiri .
  • Panjang sifar titledan contentnilai 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 .disabledatau disabledelemen mesti dicetuskan pada elemen pembalut.
  • Apabila dicetuskan daripada sauh yang membalut berbilang baris, popover akan dipusatkan di antara lebar keseluruhan sauh. Gunakan .text-nowrappada <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.
Secara lalai, komponen ini menggunakan sanitizer kandungan terbina dalam, yang menghilangkan sebarang elemen HTML yang tidak dibenarkan secara jelas. Lihat bahagian sanitizer dalam dokumentasi JavaScript kami untuk mendapatkan butiran lanjut.
Kesan animasi komponen ini bergantung pada prefers-reduced-motionpertanyaan 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-bs-toggleatributnya:

var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'))
var popoverList = popoverTriggerList.map(function (popoverTriggerEl) {
  return new bootstrap.Popover(popoverTriggerEl)
})

Contoh: Menggunakan containerpilihan

Apabila anda mempunyai beberapa gaya pada elemen induk yang mengganggu popover, anda perlu menentukan tersuai containersupaya 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 focuspencetus 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 tabindexatribut.

<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 disabledatribut 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 hoversebagai 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 htmlpilihan, 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-describedbyatribut. 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 allowListatribut 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".

Ambil perhatian bahawa atas sebab keselamatan sanitize, sanitizeFn, dan allowListpilihan 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: container: 'body'. Pilihan ini amat berguna kerana ia membolehkan anda meletakkan popover dalam aliran dokumen berhampiran elemen pencetus - yang akan menghalang popover daripada terapung daripada elemen pencetus semasa saiz semula tetingkap.

content rentetan | unsur | fungsi ''

Nilai kandungan lalai jika data-bs-contentatribut tidak ada.

Jika fungsi diberikan, ia akan dipanggil dengan thisset rujukannya kepada elemen yang dilampirkan popover.

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:delay: { "show": 500, "hide": 100 }

html boolean false Masukkan HTML ke dalam popover. Jika palsu, innerTextharta 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 autoditentukan, ia akan mengorientasikan semula popover secara dinamik.

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 thiskepada contoh popover.

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 titleakan disuntik ke dalam .popover-header.

Popover contentakan disuntik ke dalam .popover-body.

.popover-arrowakan menjadi anak panah popover.

Elemen pembungkus paling luar harus mempunyai .popoverkelas.

title rentetan | unsur | fungsi ''

Nilai tajuk lalai jika titleatribut tidak ada.

Jika fungsi diberikan, ia akan dipanggil dengan thisset rujukannya kepada elemen yang dilampirkan popover.

trigger tali 'click' Cara popover dicetuskan - klik | tuding | tumpuan | manual. Anda boleh melepasi pelbagai pencetus; pisahkan mereka dengan ruang. manualtidak 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 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: 'class-1 class-2'.

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:data-bs-offset="10,20"

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: .[skidding, distance]

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.popoverperistiwa 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.popoverperistiwa 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.popoveratau hidden.bs.popoverperistiwa 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 selectorboleh 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 menyala serta-merta apabila showkaedah 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 hidekaedah 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.popoveracara apabila templat popover telah ditambahkan pada DOM.
var myPopoverTrigger = document.getElementById('myPopover')
myPopoverTrigger.addEventListener('hidden.bs.popover', function () {
  // do something...
})