Petua alat
Dokumentasi dan contoh untuk menambah petua Bootstrap tersuai dengan CSS dan JavaScript menggunakan CSS3 untuk animasi dan data-bs-atribut untuk storan tajuk tempatan.
Gambaran keseluruhan
Perkara yang perlu diketahui apabila menggunakan pemalam tooltip:
- Petua alat bergantung pada pustaka pihak ketiga Popper untuk kedudukan. Anda mesti menyertakan popper.min.js sebelum
bootstrap.js
, atau gunakanbootstrap.bundle.min.js
yang mengandungi Popper. - Petua alat ikut serta atas sebab prestasi, jadi anda mesti memulakannya sendiri .
- Petua alat dengan tajuk panjang sifar tidak pernah dipaparkan.
- Tentukan
container: 'body'
untuk mengelakkan masalah rendering dalam komponen yang lebih kompleks (seperti kumpulan input kami, kumpulan butang, dll). - Mencetuskan petua alat pada elemen tersembunyi tidak akan berfungsi.
- Petua alat untuk
.disabled
ataudisabled
elemen mesti dicetuskan pada elemen pembalut. - Apabila dicetuskan daripada hiperpautan yang menjangkau berbilang baris, petua alat akan dipusatkan. Gunakan
white-space: nowrap;
pada<a>
s anda untuk mengelakkan tingkah laku ini. - Petua alat mesti disembunyikan sebelum elemen yang sepadan dialih keluar daripada DOM.
- Petua alat boleh dicetuskan terima kasih kepada elemen dalam DOM bayangan.
Dapat semua itu? Hebat, mari lihat cara ia berfungsi dengan beberapa contoh.
prefers-reduced-motion
pertanyaan media. Lihat bahagian
gerakan yang dikurangkan dalam dokumentasi kebolehaksesan kami .
Contoh
Dayakan petua alat
Seperti yang dinyatakan di atas, anda mesti memulakan petua alat sebelum ia boleh digunakan. Satu cara untuk memulakan semua petua alat pada halaman ialah memilihnya mengikut data-bs-toggle
atributnya, seperti:
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
Petua alat pada pautan
Tuding pada pautan di bawah untuk melihat petua alat:
Teks pemegang tempat untuk menunjukkan beberapa pautan sebaris dengan petua alat. Ini kini hanya pengisi, tiada pembunuh. Kandungan diletakkan di sini hanya untuk meniru kehadiran teks sebenar . Dan semua itu hanya untuk memberi anda gambaran tentang rupa petua alat apabila digunakan dalam situasi dunia sebenar. Jadi diharapkan anda kini telah melihat bagaimana petua alat pada pautan ini boleh berfungsi dalam amalan, sebaik sahaja anda menggunakannya di tapak atau projek 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. Apabila
title
digunakan, Popper akan menggantikannya secara automatik dengan
data-bs-title
apabila elemen itu dipaparkan.
Petua alat tersuai
Ditambah dalam v5.2.0Anda boleh menyesuaikan penampilan petua alat menggunakan pembolehubah CSS . Kami menetapkan kelas tersuai dengan data-bs-custom-class="custom-tooltip"
skop penampilan tersuai kami dan menggunakannya untuk mengatasi pembolehubah CSS setempat.
.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>
Arah
Tuding pada butang di bawah untuk melihat empat arah petua alat: atas, kanan, bawah dan kiri. Arah dicerminkan apabila menggunakan Bootstrap dalam 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 tersuai 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
Pembolehubah
Ditambah dalam v5.2.0Sebagai sebahagian daripada pendekatan pembolehubah CSS Bootstrap yang sedang berkembang, petua alat kini menggunakan pembolehubah CSS tempatan .tooltip
untuk penyesuaian masa nyata yang dipertingkatkan. Nilai untuk pembolehubah CSS ditetapkan melalui Sass, jadi penyesuaian Sass masih disokong juga.
--#{$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};
Pembolehubah 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
Pemalam petua alat menjana kandungan dan penanda atas permintaan, dan secara lalai meletakkan petua alat selepas elemen pencetusnya.
Cetuskan petua alat melalui JavaScript:
const exampleEl = document.getElementById('example')
const tooltip = new bootstrap.Tooltip(exampleEl, options)
Limpahan auto
danscroll
Kedudukan petua alat cuba menukar secara automatik apabila bekas induk mempunyai overflow: auto
atau overflow: scroll
menyukai kami .table-responsive
, tetapi masih mengekalkan kedudukan peletakan asal. Untuk menyelesaikan masalah ini, tetapkan boundary
pilihan (untuk pengubah suai flip menggunakan popperConfig
pilihan) kepada mana-mana HTMLElement untuk mengatasi nilai lalai, 'clippingParents'
, seperti document.body
:
const tooltip = new bootstrap.Tooltip('#example', {
boundary: document.body // or document.querySelector('#boundary')
})
Penanda
Penanda yang diperlukan untuk petua alat hanyalah data
atribut dan title
pada elemen HTML anda ingin mempunyai petua alat. Penanda yang dijana bagi petua alat agak mudah, walaupun ia memerlukan kedudukan (secara lalai, ditetapkan top
oleh pemalam).
Membuat petua alat berfungsi untuk papan kekunci dan pengguna teknologi bantuan
Anda hanya perlu menambah petua alat 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 dijadikan 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 petua alat dalam situasi ini. Selain itu, jangan bergantung semata-mata hover
sebagai pencetus untuk petua alat anda, kerana ini akan menjadikan petua alat anda mustahil untuk dicetuskan untuk pengguna papan kekunci.
<!-- 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 dilumpuhkan
Elemen dengan disabled
atribut tidak interaktif, bermakna pengguna tidak boleh memfokus, menuding atau mengkliknya untuk mencetuskan petua alat (atau popover). Sebagai penyelesaian, anda perlu mencetuskan petua alat daripada pembalut <div>
atau <span>
, yang idealnya boleh difokuskan papan kekunci 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
Memandangkan pilihan boleh dihantar melalui atribut data atau JavaScript, anda boleh menambahkan nama pilihan pada data-bs-
, seperti dalam data-bs-animation="{value}"
. Pastikan anda menukar jenis kes bagi nama pilihan daripada " camelCase " kepada " kebab-case " apabila menghantar pilihan melalui atribut data. Sebagai contoh, gunakan data-bs-custom-class="beautifier"
bukannya data-bs-customClass="beautifier"
.
Mulai Bootstrap 5.2.0, semua komponen menyokong atribut data simpanan percubaandata-bs-config
yang boleh menempatkan konfigurasi komponen ringkas sebagai rentetan JSON. Apabila elemen mempunyai data-bs-config='{"delay":0, "title":123}'
dan data-bs-title="456"
atribut, nilai akhir title
akan menjadi 456
dan atribut data yang berasingan akan mengatasi nilai yang diberikan pada data-bs-config
. Selain itu, atribut data sedia ada dapat menempatkan nilai JSON seperti data-bs-delay='{"show":0,"hide":150}'
.
sanitize
,
sanitizeFn
, dan
allowList
pilihan tidak boleh dibekalkan menggunakan atribut data.
Nama | taip | Lalai | Penerangan |
---|---|---|---|
allowList |
objek | Nilai asal | Objek yang mengandungi atribut dan tag yang dibenarkan. |
animation |
boolean | true |
Gunakan peralihan pudar CSS pada petua alat. |
boundary |
rentetan, unsur | 'clippingParents' |
Sempadan kekangan limpahan petua alat (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 . |
container |
rentetan, unsur, palsu | false |
Menambahkan petua alat pada elemen tertentu. Contoh: container: 'body' . Pilihan ini amat berguna kerana ia membolehkan anda meletakkan petua alat dalam aliran dokumen berhampiran elemen pencetus - yang akan menghalang petua alat daripada terapung dari elemen pencetus semasa mengubah saiz tetingkap. |
customClass |
rentetan, fungsi | '' |
Tambahkan kelas pada petua alat 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. |
delay |
nombor, objek | 0 |
Kelewatan menunjukkan dan menyembunyikan petua alat (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 } . |
fallbackPlacements |
tatasusunan | ['top', 'right', 'bottom', 'left'] |
Tentukan peletakan sandaran dengan menyediakan senarai peletakan dalam tatasusunan (mengikut keutamaan). Untuk maklumat lanjut rujuk kepada dokumen tingkah laku Popper . |
html |
boolean | false |
Benarkan HTML dalam petua alat. Jika benar, teg HTML dalam petua alat title akan dipaparkan dalam petua alat. Jika palsu, innerText harta akan digunakan untuk memasukkan kandungan ke dalam DOM. Gunakan teks jika anda bimbang tentang serangan XSS. |
offset |
tatasusunan, rentetan, fungsi | [0, 0] |
Mengimbangi petua alat 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: tergelincir , jarak . Untuk maklumat lanjut rujuk kepada dokumen offset Popper . |
placement |
rentetan, fungsi | 'top' |
Cara meletakkan petua alat: auto, atas, bawah, kiri, kanan. Apabila auto ditentukan, ia akan mengorientasikan semula petua alat secara dinamik. Apabila fungsi digunakan untuk menentukan peletakan, ia dipanggil dengan nod DOM petua alat sebagai hujah pertamanya dan nod DOM elemen pencetus sebagai yang kedua. Konteks ditetapkan this kepada contoh petua alat. |
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. |
sanitize |
boolean | true |
Dayakan atau lumpuhkan sanitasi. Jika diaktifkan 'template' , 'content' dan 'title' pilihan akan dibersihkan. |
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. |
selector |
rentetan, palsu | false |
Jika pemilih disediakan, objek petua alat akan diwakilkan kepada sasaran yang ditentukan. Dalam amalan, ini digunakan untuk turut menggunakan petua alat untuk menambahkan elemen DOM ( jQuery.on sokongan) secara dinamik. Lihat isu ini dan contoh bermaklumat . |
template |
tali | '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' |
HTML asas untuk digunakan semasa membuat petua alat. Petua alat title akan disuntik ke dalam .tooltip-inner . .tooltip-arrow akan menjadi anak panah petua alat. Elemen pembungkus paling luar harus mempunyai .tooltip kelas dan role="tooltip" . |
title |
rentetan, unsur, fungsi | '' |
Nilai tajuk lalai jika title atribut tidak ada. Jika fungsi diberikan, ia akan dipanggil dengan this set rujukannya kepada elemen yang dilampirkan popover. |
trigger |
tali | 'hover focus' |
Cara petua alat dicetuskan: klik, tuding, fokus, manual. Anda boleh melepasi pelbagai pencetus; pisahkan mereka dengan ruang. 'manual' menunjukkan bahawa petua alat akan dicetuskan secara pemrograman melalui kaedah .tooltip('show') , .tooltip('hide') dan .tooltip('toggle') ; nilai ini tidak boleh digabungkan dengan mana-mana pencetus lain. 'hover' dengan sendirinya akan menghasilkan petua alat yang tidak boleh dicetuskan melalui papan kekunci, dan hanya boleh digunakan jika kaedah alternatif untuk menyampaikan maklumat yang sama untuk pengguna papan kekunci ada. |
Atribut data untuk petua alat individu
Pilihan untuk petua alat individu boleh ditentukan secara alternatif melalui penggunaan atribut data, seperti yang dijelaskan di atas.
Menggunakan fungsi denganpopperConfig
const tooltip = new bootstrap.Tooltip(element, {
popperConfig(defaultBsPopperConfig) {
// const 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 .
Kaedah | Penerangan |
---|---|
disable |
Mengalih keluar keupayaan untuk petua alat elemen untuk ditunjukkan. Petua alat hanya akan dapat ditunjukkan jika ia didayakan semula. |
dispose |
Menyembunyikan dan memusnahkan petua alat elemen (Mengalih keluar data yang disimpan pada elemen DOM). Petua alat yang menggunakan perwakilan (yang dibuat menggunakan pilihan ) tidak selector boleh dimusnahkan secara individu pada elemen pencetus keturunan. |
enable |
Memberi petua alat elemen keupayaan untuk ditunjukkan. Petua alat didayakan secara lalai. |
getInstance |
Kaedah statik yang membolehkan anda mendapatkan contoh petua alat yang dikaitkan dengan elemen DOM, atau mencipta yang baharu sekiranya ia tidak dimulakan. |
getOrCreateInstance |
Kaedah statik yang membolehkan anda mendapatkan contoh petua alat yang dikaitkan dengan elemen DOM, atau mencipta yang baharu sekiranya ia tidak dimulakan. |
hide |
Menyembunyikan petua alat elemen. Kembali kepada pemanggil sebelum petua alat sebenarnya disembunyikan (iaitu sebelum hidden.bs.tooltip peristiwa berlaku). Ini dianggap sebagai pencetus "manual" petua alat. |
setContent |
Memberi cara untuk menukar kandungan petua alat selepas pemulaannya. |
show |
Mendedahkan petua alat elemen. Kembali kepada pemanggil sebelum petua alat sebenarnya ditunjukkan (iaitu sebelum shown.bs.tooltip peristiwa berlaku). Ini dianggap sebagai pencetus "manual" petua alat. Petua alat dengan tajuk panjang sifar tidak pernah dipaparkan. |
toggle |
Menogol petua alat elemen. Kembali kepada pemanggil sebelum petua alat benar-benar ditunjukkan atau disembunyikan (iaitu sebelum shown.bs.tooltip atau hidden.bs.tooltip peristiwa berlaku). Ini dianggap sebagai pencetus "manual" petua alat. |
toggleEnabled |
Togol keupayaan untuk petua alat elemen untuk ditunjukkan atau disembunyikan. |
update |
Mengemas kini kedudukan petua alat elemen. |
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance
// setContent example
tooltip.setContent({ '.tooltip-inner': 'another title' })
setContent
ini menerima
object
hujah, di mana setiap kunci harta ialah
string
pemilih yang sah dalam templat popover, dan setiap nilai harta berkaitan boleh
string
|
element
|
function
|
null
Peristiwa
Peristiwa | Penerangan |
---|---|
hide.bs.tooltip |
Peristiwa ini dicetuskan serta-merta apabila hide kaedah contoh telah dipanggil. |
hidden.bs.tooltip |
Acara ini dicetuskan apabila popover telah selesai disembunyikan daripada pengguna (akan menunggu peralihan CSS selesai). |
inserted.bs.tooltip |
Acara ini dicetuskan selepas show.bs.tooltip acara apabila templat petua alat telah ditambahkan pada DOM. |
show.bs.tooltip |
Peristiwa ini menyala serta-merta apabila show kaedah contoh dipanggil. |
shown.bs.tooltip |
Peristiwa ini dicetuskan apabila popover telah dilihat kepada pengguna (akan menunggu peralihan CSS selesai). |
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)
myTooltipEl.addEventListener('hidden.bs.tooltip', () => {
// do something...
})
tooltip.hide()