Keterangan alat
Dokumentasi dan contoh untuk menambahkan tooltips Bootstrap kustom dengan CSS dan JavaScript menggunakan CSS3 untuk animasi dan atribut data-bs untuk penyimpanan judul lokal.
Ringkasan
Hal-hal yang perlu diketahui saat menggunakan plugin tooltip:
- Tooltips mengandalkan perpustakaan pihak ketiga Popper untuk pemosisian. Anda harus menyertakan popper.min.js sebelum
bootstrap.js
, atau menggunakanbootstrap.bundle.min.js
yang berisi Popper. - Tooltips disertakan karena alasan kinerja, jadi Anda harus menginisialisasinya sendiri .
- Tooltips dengan judul tanpa panjang tidak pernah ditampilkan.
- Tentukan
container: 'body'
untuk menghindari masalah rendering dalam komponen yang lebih kompleks (seperti grup input, grup tombol, dll.). - Memicu tooltips pada elemen tersembunyi tidak akan berfungsi.
- Tooltips untuk
.disabled
ataudisabled
elemen harus dipicu pada elemen pembungkus. - Saat dipicu dari hyperlink yang menjangkau beberapa baris, tooltips akan dipusatkan. Gunakan
white-space: nowrap;
pada<a>
s Anda untuk menghindari perilaku ini. - Tooltips harus disembunyikan sebelum elemen terkaitnya dihapus dari DOM.
- Tooltips dapat dipicu berkat elemen di dalam shadow DOM.
Punya semua itu? Bagus, mari kita lihat bagaimana mereka bekerja dengan beberapa contoh.
prefers-reduced-motion
kueri media. Lihat bagian
pengurangan gerakan pada dokumentasi aksesibilitas kami .
Contoh
Aktifkan tooltips
Seperti disebutkan di atas, Anda harus menginisialisasi tooltips sebelum dapat digunakan. Salah satu cara untuk menginisialisasi semua tooltips pada halaman adalah dengan memilihnya berdasarkan data-bs-toggle
atributnya, seperti:
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
Tooltips pada tautan
Arahkan kursor ke tautan di bawah untuk melihat tooltips:
Teks placeholder untuk mendemonstrasikan beberapa tautan sebaris dengan tooltips. Ini sekarang hanya pengisi, bukan pembunuh. Konten ditempatkan di sini hanya untuk meniru keberadaan teks asli . Dan semua itu hanya untuk memberi Anda gambaran tentang bagaimana tooltips akan terlihat saat digunakan dalam situasi dunia nyata. Jadi semoga Anda sekarang telah melihat bagaimana tooltips pada tautan ini dapat bekerja dalam praktik, setelah Anda menggunakannya di situs atau proyek Anda sendiri .
<p class="muted">Placeholder text to demonstrate some <a href="#" data-bs-toggle="tooltip" data-bs-title="Default tooltip">inline links</a> with tooltips. This is now just filler, no killer. Content placed here just to mimic the presence of <a href="#" data-bs-toggle="tooltip" data-bs-title="Another tooltip">real text</a>. And all that just to give you an idea of how tooltips would look when used in real-world situations. So hopefully you've now seen how <a href="#" data-bs-toggle="tooltip" data-bs-title="Another one here too">these tooltips on links</a> can work in practice, once you use them on <a href="#" data-bs-toggle="tooltip" data-bs-title="The last tip!">your own</a> site or project.
</p>
title
atau
data-bs-title
dalam HTML Anda. Saat
title
digunakan, Popper akan menggantinya secara otomatis dengan
data-bs-title
saat elemen dirender.
Tip alat khusus
Ditambahkan di v5.2.0Anda dapat menyesuaikan tampilan tooltips menggunakan variabel CSS . Kami menetapkan kelas khusus dengan data-bs-custom-class="custom-tooltip"
cakupan tampilan khusus kami dan menggunakannya untuk mengganti variabel CSS lokal.
.custom-tooltip {
--bs-tooltip-bg: var(--bs-primary);
}
<button type="button" class="btn btn-secondary"
data-bs-toggle="tooltip" data-bs-placement="top"
data-bs-custom-class="custom-tooltip"
data-bs-title="This top tooltip is themed via CSS variables.">
Custom tooltip
</button>
Petunjuk arah
Arahkan kursor ke tombol di bawah untuk melihat empat arah tooltips: atas, kanan, bawah, dan kiri. Arah dicerminkan saat menggunakan Bootstrap di RTL.
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" data-bs-title="Tooltip on top">
Tooltip on top
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="right" data-bs-title="Tooltip on right">
Tooltip on right
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-title="Tooltip on bottom">
Tooltip on bottom
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="left" data-bs-title="Tooltip on left">
Tooltip on left
</button>
Dan dengan HTML khusus ditambahkan:
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-html="true" data-bs-title="<em>Tooltip</em> <u>with</u> <b>HTML</b>">
Tooltip with HTML
</button>
Dengan SVG:
CSS
Variabel
Ditambahkan di v5.2.0Sebagai bagian dari pendekatan variabel CSS Bootstrap yang berkembang, tooltips sekarang menggunakan variabel CSS lokal .tooltip
untuk penyesuaian waktu nyata yang ditingkatkan. Nilai untuk variabel CSS diatur melalui Sass, jadi kustomisasi Sass juga masih didukung.
--#{$prefix}tooltip-zindex: #{$zindex-tooltip};
--#{$prefix}tooltip-max-width: #{$tooltip-max-width};
--#{$prefix}tooltip-padding-x: #{$tooltip-padding-x};
--#{$prefix}tooltip-padding-y: #{$tooltip-padding-y};
--#{$prefix}tooltip-margin: #{$tooltip-margin};
@include rfs($tooltip-font-size, --#{$prefix}tooltip-font-size);
--#{$prefix}tooltip-color: #{$tooltip-color};
--#{$prefix}tooltip-bg: #{$tooltip-bg};
--#{$prefix}tooltip-border-radius: #{$tooltip-border-radius};
--#{$prefix}tooltip-opacity: #{$tooltip-opacity};
--#{$prefix}tooltip-arrow-width: #{$tooltip-arrow-width};
--#{$prefix}tooltip-arrow-height: #{$tooltip-arrow-height};
Variabel Sass
$tooltip-font-size: $font-size-sm;
$tooltip-max-width: 200px;
$tooltip-color: $white;
$tooltip-bg: $black;
$tooltip-border-radius: $border-radius;
$tooltip-opacity: .9;
$tooltip-padding-y: $spacer * .25;
$tooltip-padding-x: $spacer * .5;
$tooltip-margin: null; // TODO: remove this in v6
$tooltip-arrow-width: .8rem;
$tooltip-arrow-height: .4rem;
// fusv-disable
$tooltip-arrow-color: null; // Deprecated in Bootstrap 5.2.0 for CSS variables
// fusv-enable
Penggunaan
Plugin tooltip menghasilkan konten dan markup sesuai permintaan, dan secara default menempatkan tooltips setelah elemen pemicunya.
Picu tooltip melalui JavaScript:
const exampleEl = document.getElementById('example')
const tooltip = new bootstrap.Tooltip(exampleEl, options)
Meluap auto
danscroll
Posisi tooltip mencoba untuk berubah secara otomatis ketika wadah induk memiliki overflow: auto
atau overflow: scroll
menyukai .table-responsive
, tetapi tetap mempertahankan posisi penempatan aslinya. Untuk mengatasi ini, atur boundary
opsi (untuk pengubah flip menggunakan popperConfig
opsi) ke HTMLElement apa pun untuk mengganti nilai default, 'clippingParents'
, seperti document.body
:
const tooltip = new bootstrap.Tooltip('#example', {
boundary: document.body // or document.querySelector('#boundary')
})
Markup
Markup yang diperlukan untuk tooltip hanyalah data
atribut dan title
pada elemen HTML Anda ingin memiliki tooltip. Markup tooltip yang dihasilkan agak sederhana, meskipun memerlukan posisi (secara default, disetel top
oleh plugin).
Membuat tooltips berfungsi untuk keyboard dan pengguna teknologi bantu
Anda hanya boleh menambahkan tooltips ke elemen HTML yang secara tradisional berfokus pada keyboard dan interaktif (seperti tautan atau kontrol formulir). Meskipun elemen HTML arbitrer (seperti <span>
s) dapat dibuat fokus dengan menambahkan tabindex="0"
atribut, ini akan menambahkan penghentian tab yang berpotensi mengganggu dan membingungkan pada elemen non-interaktif untuk pengguna keyboard, dan sebagian besar teknologi pendukung saat ini tidak mengumumkan tooltip dalam situasi ini. Selain itu, jangan hanya mengandalkan hover
sebagai pemicu untuk tooltip Anda, karena ini akan membuat tooltip Anda tidak mungkin dipicu untuk pengguna keyboard.
<!-- HTML to write -->
<a href="#" data-bs-toggle="tooltip" data-bs-title="Some tooltip text!">Hover over me</a>
<!-- Generated markup by the plugin -->
<div class="tooltip bs-tooltip-top" role="tooltip">
<div class="tooltip-arrow"></div>
<div class="tooltip-inner">
Some tooltip text!
</div>
</div>
Elemen yang dinonaktifkan
Elemen dengan disabled
atribut tidak interaktif, artinya pengguna tidak dapat memfokuskan, mengarahkan kursor, atau mengkliknya untuk memicu tooltip (atau popover). Sebagai solusinya, Anda ingin memicu tooltip dari wrapper <div>
atau <span>
, idealnya membuat keyboard-focusable menggunakan tabindex="0"
.
<span class="d-inline-block" tabindex="0" data-bs-toggle="tooltip" data-bs-title="Disabled tooltip">
<button class="btn btn-primary" type="button" disabled>Disabled button</button>
</span>
Pilihan
Karena opsi dapat diteruskan melalui atribut data atau JavaScript, Anda dapat menambahkan nama opsi ke data-bs-
, seperti pada data-bs-animation="{value}"
. Pastikan untuk mengubah jenis huruf dari nama opsi dari “ camelCase ” menjadi “ kebab-case ” saat meneruskan opsi melalui atribut data. Misalnya, gunakan data-bs-custom-class="beautifier"
alih-alih data-bs-customClass="beautifier"
.
Pada Bootstrap 5.2.0, semua komponen mendukung atribut data cadangan eksperimentaldata-bs-config
yang dapat menampung konfigurasi komponen sederhana sebagai string JSON. Ketika suatu elemen memiliki data-bs-config='{"delay":0, "title":123}'
dan data-bs-title="456"
atribut, nilai akhir title
akan menjadi 456
dan atribut data yang terpisah akan menimpa nilai yang diberikan pada data-bs-config
. Selain itu, atribut data yang ada dapat menampung nilai JSON seperti data-bs-delay='{"show":0,"hide":150}'
.
sanitize
,
sanitizeFn
, dan
allowList
tidak dapat diberikan menggunakan atribut data.
Nama | Jenis | Bawaan | Keterangan |
---|---|---|---|
allowList |
obyek | Nilai default | Objek yang berisi atribut dan tag yang diizinkan. |
animation |
boolean | true |
Terapkan transisi fade CSS ke tooltip. |
boundary |
string, elemen | 'clippingParents' |
Batas batasan overflow dari tooltip (hanya berlaku untuk pengubah preventOverflow Popper). Secara default, ini 'clippingParents' dan dapat menerima referensi HTMLElement (hanya melalui JavaScript). Untuk informasi lebih lanjut, lihat dokumen detectOverflow Popper . |
container |
string, elemen, salah | false |
Menambahkan tooltip ke elemen tertentu. Contoh: container: 'body' . Opsi ini sangat berguna karena memungkinkan Anda untuk memposisikan tooltip dalam aliran dokumen di dekat elemen pemicu - yang akan mencegah tooltip melayang menjauh dari elemen pemicu selama pengubahan ukuran jendela. |
customClass |
string, fungsi | '' |
Tambahkan kelas ke tooltip 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. |
delay |
nomor, objek | 0 |
Penundaan menampilkan dan menyembunyikan tooltip (ms)—tidak berlaku untuk jenis pemicu manual. Jika nomor diberikan, penundaan diterapkan pada kedua sembunyikan/tampilkan. Struktur objek adalah: delay: { "show": 500, "hide": 100 } . |
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 . |
html |
boolean | false |
Izinkan HTML di tooltip. Jika benar, tag HTML di tooltip title akan dirender di tooltip. Jika salah, innerText properti akan digunakan untuk memasukkan konten ke dalam DOM. Gunakan teks jika Anda khawatir tentang serangan XSS. |
offset |
array, string, fungsi | [0, 0] |
Offset tooltip 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 . |
placement |
string, fungsi | 'top' |
Cara memposisikan tooltip: otomatis, atas, bawah, kiri, kanan. Ketika auto ditentukan, itu akan secara dinamis mengarahkan ulang tooltip. Ketika sebuah fungsi digunakan untuk menentukan penempatan, itu dipanggil dengan simpul DOM tooltip sebagai argumen pertamanya dan simpul DOM elemen pemicu sebagai yang kedua. Konteks this diatur ke contoh tooltip. |
popperConfig |
null, 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. |
sanitize |
boolean | true |
Mengaktifkan atau menonaktifkan sanitasi. Jika diaktifkan 'template' , 'content' dan 'title' opsi akan dibersihkan. |
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. |
selector |
string, salah | false |
Jika pemilih disediakan, objek tooltip akan didelegasikan ke target yang ditentukan. Dalam praktiknya, ini juga digunakan untuk menerapkan tooltips ke elemen DOM yang ditambahkan secara dinamis ( jQuery.on dukungan). Lihat edisi ini dan contoh yang informatif . |
template |
rangkaian | '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' |
HTML dasar untuk digunakan saat membuat tooltip. Tooltip title akan disuntikkan ke dalam .tooltip-inner . .tooltip-arrow akan menjadi panah tooltip. Elemen pembungkus terluar harus memiliki .tooltip kelas dan role="tooltip" . |
title |
string, elemen, fungsi | '' |
Nilai judul default jika title atribut tidak ada. Jika suatu fungsi diberikan, itu akan dipanggil dengan this referensi yang disetel ke elemen tempat popover dilampirkan. |
trigger |
rangkaian | 'hover focus' |
Bagaimana tooltip dipicu: klik, arahkan kursor, fokus, manual. Anda dapat melewati beberapa pemicu; pisahkan dengan spasi. 'manual' menunjukkan bahwa tooltip akan dipicu secara terprogram melalui .tooltip('show') , .tooltip('hide') dan .tooltip('toggle') metode; nilai ini tidak dapat digabungkan dengan pemicu lainnya. 'hover' dengan sendirinya akan menghasilkan tooltips yang tidak dapat dipicu melalui keyboard, dan hanya boleh digunakan jika ada metode alternatif untuk menyampaikan informasi yang sama untuk pengguna keyboard. |
Atribut data untuk masing-masing tooltips
Opsi untuk masing-masing tooltip secara alternatif dapat ditentukan melalui penggunaan atribut data, seperti dijelaskan di atas.
Menggunakan fungsi denganpopperConfig
const tooltip = new bootstrap.Tooltip(element, {
popperConfig(defaultBsPopperConfig) {
// const 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 .
metode | Keterangan |
---|---|
disable |
Menghapus kemampuan tooltip elemen untuk ditampilkan. Tooltip hanya akan dapat ditampilkan jika diaktifkan kembali. |
dispose |
Menyembunyikan dan menghancurkan tooltip elemen (Menghapus data yang tersimpan di elemen DOM). Tooltips yang menggunakan delegasi (yang dibuat menggunakan opsi selector ) tidak dapat dimusnahkan satu per satu pada elemen pemicu turunan. |
enable |
Memberikan tooltip elemen kemampuan untuk ditampilkan. Tooltips diaktifkan secara default. |
getInstance |
Metode statis yang memungkinkan Anda mendapatkan instance tooltip yang terkait dengan elemen DOM, atau membuat yang baru jika tidak diinisialisasi. |
getOrCreateInstance |
Metode statis yang memungkinkan Anda mendapatkan instance tooltip yang terkait dengan elemen DOM, atau membuat yang baru jika tidak diinisialisasi. |
hide |
Menyembunyikan tooltip elemen. Kembali ke pemanggil sebelum tooltip benar-benar disembunyikan (yaitu sebelum hidden.bs.tooltip event terjadi). Ini dianggap sebagai pemicu "manual" dari tooltip. |
setContent |
Memberikan cara untuk mengubah konten tooltip setelah inisialisasi. |
show |
Mengungkapkan tooltip elemen. Kembali ke pemanggil sebelum tooltip benar-benar ditampilkan (yaitu sebelum shown.bs.tooltip event terjadi). Ini dianggap sebagai pemicu "manual" dari tooltip. Tooltips dengan judul tanpa panjang tidak pernah ditampilkan. |
toggle |
Mengalihkan tooltip elemen. Kembali ke pemanggil sebelum tooltip benar-benar ditampilkan atau disembunyikan (yaitu sebelum shown.bs.tooltip atau hidden.bs.tooltip peristiwa terjadi). Ini dianggap sebagai pemicu "manual" dari tooltip. |
toggleEnabled |
Mengalihkan kemampuan tooltip elemen untuk ditampilkan atau disembunyikan. |
update |
Memperbarui posisi tooltip elemen. |
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance
// setContent example
tooltip.setContent({ '.tooltip-inner': 'another title' })
setContent
menerima
object
argumen, di mana setiap kunci properti adalah
string
pemilih yang valid dalam template popover, dan setiap nilai properti terkait dapat
string
|
element
|
function
|
null
Acara
Peristiwa | Keterangan |
---|---|
hide.bs.tooltip |
Acara ini dipecat segera ketika hide metode instance telah dipanggil. |
hidden.bs.tooltip |
Acara ini dipicu ketika popover telah selesai disembunyikan dari pengguna (akan menunggu transisi CSS selesai). |
inserted.bs.tooltip |
Peristiwa ini dipicu setelah show.bs.tooltip peristiwa ketika template tooltip telah ditambahkan ke DOM. |
show.bs.tooltip |
Acara ini langsung aktif ketika show metode instance dipanggil. |
shown.bs.tooltip |
Acara ini dipicu ketika popover telah dibuat terlihat oleh pengguna (akan menunggu transisi CSS selesai). |
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)
myTooltipEl.addEventListener('hidden.bs.tooltip', () => {
// do something...
})
tooltip.hide()