Lewati ke konten utama Lewati ke navigasi dokumen
in English

Popover

Dokumentasi dan contoh untuk menambahkan popover Bootstrap, seperti yang ditemukan di iOS, ke elemen apa pun di situs Anda.

Ringkasan

Hal-hal yang perlu diketahui saat menggunakan plugin popover:

  • Popover mengandalkan perpustakaan pihak ke-3 Popper untuk penentuan posisi. Anda harus menyertakan popper.min.js sebelum bootstrap.js atau menggunakan bootstrap.bundle.min.js/ bootstrap.bundle.jsyang berisi Popper agar popover berfungsi!
  • Popover memerlukan plugin tooltip sebagai ketergantungan.
  • Popover diikutsertakan karena alasan kinerja, jadi Anda harus menginisialisasinya sendiri .
  • Panjang nol titledan contentnilai tidak akan pernah menampilkan popover.
  • Tentukan container: 'body'untuk menghindari masalah rendering dalam komponen yang lebih kompleks (seperti grup input, grup tombol, dll.).
  • Memicu popover pada elemen tersembunyi tidak akan berfungsi.
  • Popover untuk .disabledatau disabledelemen harus dipicu pada elemen pembungkus.
  • Saat dipicu dari jangkar yang membungkus beberapa garis, popover akan dipusatkan di antara lebar keseluruhan jangkar. Gunakan .text-nowrappada <a>s Anda untuk menghindari perilaku ini.
  • Popover harus disembunyikan sebelum elemen terkaitnya dihapus dari DOM.
  • Popover dapat dipicu berkat elemen di dalam shadow DOM.
Secara default, komponen ini menggunakan pembersih konten bawaan, yang menghapus elemen HTML apa pun yang tidak diizinkan secara eksplisit. Lihat bagian pembersih dalam dokumentasi JavaScript kami untuk detail selengkapnya.
Efek animasi komponen ini bergantung pada prefers-reduced-motionkueri media. Lihat bagian pengurangan gerakan pada dokumentasi aksesibilitas kami .

Teruslah membaca untuk melihat bagaimana popover bekerja dengan beberapa contoh.

Contoh: Aktifkan popover di mana-mana

Salah satu cara untuk menginisialisasi semua popover pada halaman adalah dengan memilihnya berdasarkan 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 containeropsi

Saat Anda memiliki beberapa gaya pada elemen induk yang mengganggu popover, Anda akan ingin menentukan kustom containersehingga HTML popover muncul di 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

Tersedia empat opsi: rata atas, kanan, bawah, dan kiri. Arah dicerminkan saat menggunakan Bootstrap di 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>

Singkirkan pada klik berikutnya

Gunakan focuspemicu untuk menutup popover pada klik berikutnya pengguna dari elemen yang berbeda dari elemen sakelar.

Markup khusus diperlukan untuk pemberhentian-pada-klik-berikutnya

Untuk perilaku lintas-browser dan lintas-platform yang tepat, Anda harus menggunakan <a>tag, bukan tag <button>, dan Anda juga harus menyertakan 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 dinonaktifkan

Elemen dengan disabledatribut tidak interaktif, artinya pengguna tidak dapat mengarahkan atau mengkliknya untuk memicu popover (atau tooltip). Sebagai solusinya, Anda ingin memicu popover dari wrapper <div>atau <span>, idealnya membuat keyboard-focusable menggunakan tabindex="0".

Untuk pemicu popover yang dinonaktifkan, Anda juga dapat memilih data-bs-trigger="hover focus"agar popover muncul sebagai umpan balik visual langsung kepada pengguna Anda karena mereka mungkin tidak mengharapkan untuk mengklik elemen yang dinonaktifkan.

<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>

Kelancangan

Variabel

$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

Aktifkan popover melalui JavaScript:

var exampleEl = document.getElementById('example')
var popover = new bootstrap.Popover(exampleEl, options)

Membuat popover berfungsi untuk pengguna keyboard dan teknologi bantu

To allow keyboard users to activate your popovers, you should only add them to HTML elements that are traditionally keyboard-focusable and interactive (such as links or form controls). Although arbitrary HTML elements (such as <span>s) can be made focusable by adding the tabindex="0" attribute, this will add potentially annoying and confusing tab stops on non-interactive elements for keyboard users, and most assistive technologies currently do not announce the popover’s content in this situation. Additionally, do not rely solely on hover as the trigger for your popovers, as this will make them impossible to trigger for keyboard users.

Meskipun Anda dapat menyisipkan HTML yang kaya dan terstruktur dalam popover dengan htmlopsi tersebut, kami sangat menyarankan agar Anda menghindari menambahkan konten dalam jumlah berlebihan. Cara kerja popover saat ini adalah, setelah ditampilkan, kontennya terikat ke elemen pemicu dengan aria-describedbyatribut. Akibatnya, keseluruhan konten popover akan diumumkan kepada pengguna teknologi pendukung sebagai satu aliran yang panjang dan tidak terputus.

Selain itu, meskipun dimungkinkan untuk juga menyertakan kontrol interaktif (seperti elemen formulir atau tautan) di popover Anda (dengan menambahkan elemen ini ke allowListatribut dan tag yang diizinkan), perlu diketahui bahwa saat ini popover tidak mengelola urutan fokus keyboard. Ketika pengguna keyboard membuka popover, fokus tetap pada elemen pemicu, dan karena popover biasanya tidak segera mengikuti pemicu dalam struktur dokumen, tidak ada jaminan bahwa bergerak maju/menekanTABakan memindahkan pengguna keyboard ke popover itu sendiri. Singkatnya, hanya menambahkan kontrol interaktif ke popover kemungkinan akan membuat kontrol ini tidak dapat dijangkau/tidak dapat digunakan untuk pengguna keyboard dan pengguna teknologi bantu, atau setidaknya membuat urutan fokus keseluruhan yang tidak logis. Dalam kasus ini, pertimbangkan untuk menggunakan dialog modal sebagai gantinya.

Pilihan

Opsi dapat diteruskan melalui atribut data atau JavaScript. Untuk atribut data, tambahkan nama opsi ke data-bs-, seperti pada data-bs-animation="". Pastikan untuk mengubah jenis kasus dari nama opsi dari camelCase ke kebab-case saat meneruskan opsi melalui atribut data. Misalnya, alih-alih menggunakan data-bs-customClass="beautifier", gunakan data-bs-custom-class="beautifier".

Perhatikan bahwa untuk alasan keamanan opsi sanitize, sanitizeFn, dan allowListtidak dapat diberikan menggunakan atribut data.
Nama Jenis Bawaan Keterangan
animation boolean true Terapkan transisi fade CSS ke popover
container string | elemen | Salah false

Menambahkan popover ke elemen tertentu. Contoh: container: 'body'. Opsi ini sangat berguna karena memungkinkan Anda untuk memposisikan popover dalam aliran dokumen di dekat elemen pemicu - yang akan mencegah popover melayang menjauh dari elemen pemicu selama pengubahan ukuran jendela.

content string | elemen | fungsi ''

Nilai konten default jika data-bs-contentatribut tidak ada.

Jika suatu fungsi diberikan, itu akan dipanggil dengan thisreferensi yang disetel ke elemen tempat popover dilampirkan.

delay nomor | obyek 0

Penundaan menampilkan dan menyembunyikan popover (ms) - tidak berlaku untuk tipe pemicu manual

Jika nomor diberikan, penundaan diterapkan ke sembunyikan/tampilkan

Struktur objek adalah:delay: { "show": 500, "hide": 100 }

html boolean false Masukkan HTML ke dalam popover. Jika salah, innerTextproperti akan digunakan untuk memasukkan konten ke dalam DOM. Gunakan teks jika Anda khawatir tentang serangan XSS.
placement string | fungsi 'right'

Cara memposisikan popover - otomatis | atas | bawah | kiri | Baik.
Ketika autoditentukan, itu akan secara dinamis mengorientasikan ulang popover.

Ketika suatu fungsi digunakan untuk menentukan penempatan, itu dipanggil dengan simpul DOM popover sebagai argumen pertamanya dan elemen pemicu simpul DOM sebagai argumen kedua. Konteks thisdiatur ke instance popover.

selector string | Salah false Jika pemilih disediakan, objek popover akan didelegasikan ke target yang ditentukan. Dalam praktiknya, ini digunakan untuk mengaktifkan konten HTML dinamis agar popover ditambahkan. Lihat ini dan contoh yang informatif .
template rangkaian '<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'

Dasar HTML untuk digunakan saat membuat popover.

Popover titleakan disuntikkan ke file .popover-header.

Popover contentakan disuntikkan ke file .popover-body.

.popover-arrowakan menjadi panah popover.

Elemen pembungkus terluar harus memiliki .popoverkelas.

title string | elemen | fungsi ''

Nilai judul default jika titleatribut tidak ada.

Jika suatu fungsi diberikan, itu akan dipanggil dengan thisreferensi yang disetel ke elemen tempat popover dilampirkan.

trigger rangkaian 'click' Bagaimana popover dipicu - klik | melayang | fokus | manual. Anda dapat melewati beberapa pemicu; pisahkan dengan spasi. manualtidak dapat digabungkan dengan pemicu lainnya.
fallbackPlacements Himpunan ['top', 'right', 'bottom', 'left'] Tentukan penempatan pengganti dengan memberikan daftar penempatan dalam larik (dalam urutan preferensi). Untuk informasi lebih lanjut, lihat dokumen perilaku Popper
boundary string | elemen 'clippingParents' Batas batasan overflow dari popover (hanya berlaku untuk pengubah preventOverflow Popper). Secara default itu 'clippingParents'dan dapat menerima referensi HTMLElement (hanya melalui JavaScript). Untuk informasi lebih lanjut, lihat dokumen detectOverflow Popper .
customClass string | fungsi ''

Tambahkan kelas ke popover saat ditampilkan. Perhatikan bahwa kelas-kelas ini akan ditambahkan sebagai tambahan untuk setiap kelas yang ditentukan dalam template. Untuk menambahkan beberapa kelas, pisahkan dengan spasi: 'class-1 class-2'.

Anda juga dapat melewatkan fungsi yang seharusnya mengembalikan satu string yang berisi nama kelas tambahan.

sanitize boolean true Mengaktifkan atau menonaktifkan sanitasi. Jika diaktifkan 'template', 'content'dan 'title'opsi akan dibersihkan. Lihat bagian pembersih dalam dokumentasi JavaScript kami .
allowList obyek Nilai default Objek yang berisi atribut dan tag yang diizinkan
sanitizeFn nol | fungsi null Di sini Anda dapat menyediakan fungsi sanitasi Anda sendiri. Ini dapat berguna jika Anda lebih suka menggunakan perpustakaan khusus untuk melakukan sanitasi.
offset susunan | string | fungsi [0, 8]

Offset popover relatif terhadap targetnya. Anda dapat meneruskan string dalam atribut data dengan nilai yang dipisahkan koma seperti:data-bs-offset="10,20"

Ketika sebuah fungsi digunakan untuk menentukan offset, itu dipanggil dengan objek yang berisi penempatan popper, referensi, dan popper rect sebagai argumen pertamanya. Node DOM elemen pemicu dilewatkan sebagai argumen kedua. Fungsi harus mengembalikan array dengan dua angka: .[skidding, distance]

Untuk informasi lebih lanjut, lihat dokumen offset Popper .

popperConfig nol | objek | fungsi null

Untuk mengubah konfigurasi Popper default Bootstrap, lihat Konfigurasi Popper .

Ketika sebuah fungsi digunakan untuk membuat konfigurasi Popper, itu dipanggil dengan objek yang berisi konfigurasi Popper default Bootstrap. Ini membantu Anda menggunakan dan menggabungkan default dengan konfigurasi Anda sendiri. Fungsi harus mengembalikan objek konfigurasi untuk Popper.

Atribut data untuk popover individu

Opsi untuk popover individual dapat 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
  }
})

Metode

Metode dan transisi asinkron

Semua metode API tidak sinkron dan memulai transisi . Mereka kembali ke penelepon segera setelah transisi dimulai tetapi sebelum berakhir . Selain itu, pemanggilan metode pada komponen transisi akan diabaikan .

Lihat dokumentasi JavaScript kami untuk informasi lebih lanjut .

menunjukkan

Mengungkapkan popover elemen. Kembali ke pemanggil sebelum popover benar-benar ditampilkan (yaitu sebelum shown.bs.popoveracara terjadi). Ini dianggap sebagai pemicu "manual" dari popover. Popover yang judul dan kontennya sama-sama panjangnya nol tidak pernah ditampilkan.

myPopover.show()

bersembunyi

Menyembunyikan popover elemen. Kembali ke pemanggil sebelum popover sebenarnya disembunyikan (yaitu sebelum hidden.bs.popoveracara terjadi). Ini dianggap sebagai pemicu "manual" dari popover.

myPopover.hide()

beralih

Mengalihkan popover elemen. Kembali ke pemanggil sebelum popover benar-benar ditampilkan atau disembunyikan (yaitu sebelum shown.bs.popoveratau hidden.bs.popoverperistiwa terjadi). Ini dianggap sebagai pemicu "manual" dari popover.

myPopover.toggle()

membuang

Menyembunyikan dan menghancurkan popover elemen (Menghapus data yang tersimpan di elemen DOM). Popover yang menggunakan delegasi (yang dibuat menggunakan opsi selector) tidak dapat dimusnahkan satu per satu pada elemen pemicu turunan.

myPopover.dispose()

memungkinkan

Memberikan popover elemen kemampuan untuk ditampilkan. Popover diaktifkan secara default.

myPopover.enable()

cacat

Menghapus kemampuan popover elemen untuk ditampilkan. Popover hanya akan dapat ditampilkan jika diaktifkan kembali.

myPopover.disable()

toggleDiaktifkan

Mengalihkan kemampuan popover elemen untuk ditampilkan atau disembunyikan.

myPopover.toggleEnabled()

memperbarui

Memperbarui posisi popover elemen.

myPopover.update()

dapatkan Instance

Metode statis yang memungkinkan Anda mendapatkan instance popover yang terkait dengan elemen DOM

var exampleTriggerEl = document.getElementById('example')
var popover = bootstrap.Popover.getInstance(exampleTriggerEl) // Returns a Bootstrap popover instance

getOrCreateInstance

Metode statis yang memungkinkan Anda mendapatkan instance popover yang terkait dengan elemen DOM, atau membuat yang baru jika tidak diinisialisasi

var exampleTriggerEl = document.getElementById('example')
var popover = bootstrap.Popover.getOrCreateInstance(exampleTriggerEl) // Returns a Bootstrap popover instance

Acara

Jenis acara Keterangan
show.bs.popover Acara ini langsung aktif ketika showmetode instance dipanggil.
ditampilkan.bs.popover Acara ini dipicu ketika popover telah dibuat terlihat oleh pengguna (akan menunggu transisi CSS selesai).
hide.bs.popover Acara ini dipecat segera ketika hidemetode instance telah dipanggil.
tersembunyi.bs.popover Acara ini dipicu ketika popover telah selesai disembunyikan dari pengguna (akan menunggu transisi CSS selesai).
dimasukkan.bs.popover Acara ini dipicu setelah show.bs.popoveracara ketika template popover telah ditambahkan ke DOM.
var myPopoverTrigger = document.getElementById('myPopover')
myPopoverTrigger.addEventListener('hidden.bs.popover', function () {
  // do something...
})