Mga tooltip
Dokumentasyon at mga halimbawa para sa pagdaragdag ng mga custom na Bootstrap tooltip na may CSS at JavaScript gamit ang CSS3 para sa mga animation at data-bs-attribute para sa lokal na imbakan ng pamagat.
Pangkalahatang-ideya
Mga bagay na dapat malaman kapag ginagamit ang tooltip plugin:
- Umaasa ang mga tooltip sa third party na library na Popper para sa pagpoposisyon. Dapat mong isama ang popper.min.js bago
bootstrap.js
, o gumamit ng isabootstrap.bundle.min.js
na naglalaman ng Popper. - Ang mga tooltip ay nag-opt-in para sa mga dahilan ng pagganap, kaya dapat mong simulan ang mga ito sa iyong sarili .
- Ang mga tooltip na may zero-length na mga pamagat ay hindi kailanman ipinapakita.
- Tukuyin
container: 'body'
upang maiwasan ang pag-render ng mga problema sa mas kumplikadong mga bahagi (tulad ng aming mga pangkat ng input, mga pangkat ng button, atbp). - Ang pag-trigger ng mga tooltip sa mga nakatagong elemento ay hindi gagana.
- Ang mga tooltip para sa
.disabled
o mgadisabled
elemento ay dapat na ma-trigger sa isang elemento ng wrapper. - Kapag na-trigger mula sa mga hyperlink na sumasaklaw sa maraming linya, ang mga tooltip ay igigitna. Gamitin
white-space: nowrap;
sa iyong<a>
s upang maiwasan ang pag-uugaling ito. - Dapat itago ang mga tooltip bago maalis ang mga kaukulang elemento nito sa DOM.
- Maaaring ma-trigger ang mga tooltip salamat sa isang elemento sa loob ng shadow DOM.
Nakuha ang lahat ng iyon? Mahusay, tingnan natin kung paano gumagana ang mga ito sa ilang mga halimbawa.
prefers-reduced-motion
query ng media. Tingnan ang
seksyon ng pinababang paggalaw ng aming dokumentasyon ng pagiging naa-access .
Mga halimbawa
Paganahin ang mga tooltip
Gaya ng nabanggit sa itaas, dapat mong simulan ang mga tooltip bago magamit ang mga ito. Ang isang paraan upang simulan ang lahat ng mga tooltip sa isang pahina ay ang piliin ang mga ito ayon sa kanilang data-bs-toggle
katangian, tulad nito:
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
Mga tooltip sa mga link
Mag-hover sa mga link sa ibaba upang makita ang mga tooltip:
Text ng placeholder upang ipakita ang ilang inline na link na may mga tooltip. Ito ngayon ay tagapuno lamang, walang mamamatay. Nilalaman na inilagay dito para lang gayahin ang presensya ng totoong text . At lahat ng iyon para lang mabigyan ka ng ideya kung ano ang magiging hitsura ng mga tooltip kapag ginamit sa mga totoong sitwasyon sa mundo. Kaya sana ay nakita mo na ngayon kung paano gumagana ang mga tooltip na ito sa mga link sa pagsasanay, kapag ginamit mo ang mga ito sa iyong sariling site o proyekto.
<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
o
data-bs-title
sa iyong HTML. Kapag
title
ginamit, awtomatikong papalitan ito ng Popper
data-bs-title
kapag nai-render ang elemento.
Mga custom na tooltip
Idinagdag sa v5.2.0Maaari mong i-customize ang hitsura ng mga tooltip gamit ang mga variable ng CSS . Nagtakda kami ng custom na klase data-bs-custom-class="custom-tooltip"
upang saklawin ang aming custom na hitsura at gamitin ito upang i-override ang isang lokal na variable ng CSS.
.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>
Mga direksyon
Mag-hover sa mga button sa ibaba upang makita ang apat na mga direksyon ng tooltip: itaas, kanan, ibaba, at kaliwa. Ang mga direksyon ay sinasalamin kapag gumagamit ng Bootstrap sa 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>
At may idinagdag na custom na HTML:
<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>
Sa isang SVG:
CSS
Mga variable
Idinagdag sa v5.2.0Bilang bahagi ng umuusbong na mga variable ng CSS ng Bootstrap, ginagamit na ngayon ng mga tooltip ang mga lokal na variable ng CSS .tooltip
para sa pinahusay na real-time na pag-customize. Ang mga halaga para sa mga variable ng CSS ay itinakda sa pamamagitan ng Sass, kaya sinusuportahan pa rin ang pag-customize ng Sass.
--#{$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};
Sass variable
$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
Paggamit
Ang tooltip plugin ay bumubuo ng content at markup on demand, at bilang default ay naglalagay ng mga tooltip pagkatapos ng kanilang trigger element.
I-trigger ang tooltip sa pamamagitan ng JavaScript:
const exampleEl = document.getElementById('example')
const tooltip = new bootstrap.Tooltip(exampleEl, options)
Umaapaw auto
atscroll
Ang posisyon ng tooltip ay sumusubok na awtomatikong magbago kapag ang isang pangunahing container ay mayroon overflow: auto
o overflow: scroll
nagustuhan ang aming .table-responsive
, ngunit pinapanatili pa rin ang pagpoposisyon ng orihinal na placement. Upang malutas ito, itakda ang boundary
opsyon (para sa flip modifier gamit ang popperConfig
opsyon) sa anumang HTMLElement upang i-override ang default na halaga, 'clippingParents'
, gaya ng document.body
:
const tooltip = new bootstrap.Tooltip('#example', {
boundary: document.body // or document.querySelector('#boundary')
})
Markup
Ang kinakailangang markup para sa isang tooltip ay isang data
katangian lamang at title
sa HTML element na nais mong magkaroon ng isang tooltip. Ang nabuong markup ng isang tooltip ay medyo simple, bagama't nangangailangan ito ng isang posisyon (bilang default, nakatakda sa top
pamamagitan ng plugin).
Ang paggawa ng mga tooltip ay gumagana para sa mga gumagamit ng keyboard at pantulong na teknolohiya
Dapat ka lang magdagdag ng mga tooltip sa mga elemento ng HTML na tradisyonal na nakatuon sa keyboard at interactive (tulad ng mga link o mga kontrol sa form). Bagama't ang mga arbitrary na elemento ng HTML (tulad ng <span>
s) ay maaaring gawing focusable sa pamamagitan ng pagdaragdag ng tabindex="0"
attribute, ito ay magdaragdag ng potensyal na nakakainis at nakakalito na mga tab stop sa mga hindi interactive na elemento para sa mga user ng keyboard, at karamihan sa mga pantulong na teknolohiya ay kasalukuyang hindi nag-aanunsyo ng tooltip sa sitwasyong ito. Bukod pa rito, huwag umasa lamang hover
bilang trigger para sa iyong tooltip, dahil gagawin nitong imposibleng ma-trigger ang iyong mga tooltip para sa mga user ng 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>
Mga elementong may kapansanan
Ang mga elementong may disabled
katangian ay hindi interactive, ibig sabihin, ang mga user ay hindi maaaring tumuon, mag-hover, o mag-click sa mga ito upang mag-trigger ng tooltip (o popover). Bilang isang solusyon, gugustuhin mong i-trigger ang tooltip mula sa isang wrapper <div>
o <span>
, perpektong ginawang keyboard-focusable gamit ang 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>
Mga pagpipilian
Dahil maaaring maipasa ang mga opsyon sa pamamagitan ng mga katangian ng data o JavaScript, maaari kang magdagdag ng pangalan ng opsyon sa data-bs-
, tulad ng sa data-bs-animation="{value}"
. Siguraduhing baguhin ang uri ng case ng pangalan ng opsyon mula sa " camelCase " sa " kebab-case " kapag ipinapasa ang mga opsyon sa pamamagitan ng mga katangian ng data. Halimbawa, gamitin data-bs-custom-class="beautifier"
sa halip na data-bs-customClass="beautifier"
.
Mula sa Bootstrap 5.2.0, sinusuportahan ng lahat ng mga bahagi ang isang pang- eksperimentong nakalaan na katangian ng data data-bs-config
na maaaring maglagay ng simpleng configuration ng bahagi bilang isang string ng JSON. Kapag ang isang elemento ay may data-bs-config='{"delay":0, "title":123}'
at data-bs-title="456"
mga katangian, ang huling title
halaga ay magiging 456
at ang hiwalay na mga katangian ng data ay mag-o-override sa mga halagang ibinigay sa data-bs-config
. Bilang karagdagan, ang mga kasalukuyang katangian ng data ay nakakapaglagay ng mga halaga ng JSON tulad ng data-bs-delay='{"show":0,"hide":150}'
.
sanitize
,
sanitizeFn
, at
mga allowList
opsyon ay hindi maibibigay gamit ang mga katangian ng data.
Pangalan | Uri | Default | Paglalarawan |
---|---|---|---|
allowList |
bagay | Default na halaga | Bagay na naglalaman ng mga pinapayagang katangian at tag. |
animation |
boolean | true |
Maglapat ng CSS fade transition sa tooltip. |
boundary |
string, elemento | 'clippingParents' |
Overflow constraint na hangganan ng tooltip (nalalapat lang sa preventOverflow modifier ng Popper). Bilang default, ito 'clippingParents' ay at maaaring tumanggap ng isang HTMLElement reference (sa pamamagitan ng JavaScript lamang). Para sa higit pang impormasyon sumangguni sa detectOverflow docs ng Popper . |
container |
string, elemento, mali | false |
Idinaragdag ang tooltip sa isang partikular na elemento. Halimbawa: container: 'body' . Ang pagpipiliang ito ay partikular na kapaki-pakinabang dahil pinapayagan ka nitong iposisyon ang tooltip sa daloy ng dokumento malapit sa nagti-trigger na elemento - na pipigil sa tooltip na lumutang palayo sa nagti-trigger na elemento sa panahon ng pagbabago ng laki ng window. |
customClass |
string, function | '' |
Magdagdag ng mga klase sa tooltip kapag ipinakita ito. Tandaan na ang mga klase na ito ay idaragdag bilang karagdagan sa anumang mga klase na tinukoy sa template. Upang magdagdag ng maraming klase, paghiwalayin ang mga ito ng mga puwang: 'class-1 class-2' . Maaari ka ring magpasa ng isang function na dapat magbalik ng isang string na naglalaman ng mga karagdagang pangalan ng klase. |
delay |
numero, bagay | 0 |
Pagkaantala sa pagpapakita at pagtatago ng tooltip (ms)—ay hindi nalalapat sa manu-manong uri ng pag-trigger. Kung may ibinigay na numero, ilalapat ang pagkaantala sa parehong itago/ipakita. Ang istraktura ng bagay ay: delay: { "show": 500, "hide": 100 } . |
fallbackPlacements |
array | ['top', 'right', 'bottom', 'left'] |
Tukuyin ang mga fallback na placement sa pamamagitan ng pagbibigay ng listahan ng mga placement sa array (ayon sa kagustuhan). Para sa higit pang impormasyon sumangguni sa mga doc ng pag-uugali ng Popper . |
html |
boolean | false |
Payagan ang HTML sa tooltip. Kung totoo, ang mga HTML na tag sa tooltip title ay ire-render sa tooltip. Kung false, innerText gagamitin ang property para magpasok ng content sa DOM. Gumamit ng text kung nag-aalala ka tungkol sa mga pag-atake ng XSS. |
offset |
array, string, function | [0, 0] |
Offset ng tooltip na nauugnay sa target nito. Maaari kang magpasa ng string sa mga katangian ng data na may mga halagang pinaghihiwalay ng kuwit tulad ng: data-bs-offset="10,20" . Kapag ang isang function ay ginamit upang matukoy ang offset, ito ay tinatawag na may isang bagay na naglalaman ng popper placement, ang reference, at popper rects bilang ang unang argumento nito. Ang triggering element na DOM node ay ipinasa bilang pangalawang argumento. Ang function ay dapat magbalik ng array na may dalawang numero: skidding , distance . Para sa higit pang impormasyon sumangguni sa mga offset na doc ng Popper . |
placement |
string, function | 'top' |
Paano iposisyon ang tooltip: auto, itaas, ibaba, kaliwa, kanan. Kapag auto tinukoy, dynamic nitong i-reorient ang tooltip. Kapag ginamit ang isang function upang matukoy ang placement, tinatawag itong tooltip DOM node bilang unang argumento nito at ang triggering element na DOM node bilang pangalawa nito. Nakatakda ang this konteksto sa instance ng tooltip. |
popperConfig |
null, object, function | null |
Upang baguhin ang default na Popper config ng Bootstrap, tingnan ang configuration ng Popper . Kapag ang isang function ay ginamit upang lumikha ng Popper configuration, ito ay tinatawag na may isang object na naglalaman ng default na Popper configuration ng Bootstrap. Tinutulungan ka nitong gamitin at pagsamahin ang default sa sarili mong configuration. Ang function ay dapat magbalik ng configuration object para sa Popper. |
sanitize |
boolean | true |
Paganahin o huwag paganahin ang sanitization. Kung na-activate 'template' , 'content' at 'title' ang mga opsyon ay ma-sanitize. |
sanitizeFn |
null, function | null |
Dito maaari kang magbigay ng iyong sariling sanitize function. Maaari itong maging kapaki-pakinabang kung mas gusto mong gumamit ng nakalaang library para magsagawa ng sanitization. |
selector |
string, mali | false |
Kung may ibibigay na tagapili, ang mga bagay sa tooltip ay idelegado sa mga tinukoy na target. Sa pagsasagawa, ito ay ginagamit upang ilapat din ang mga tooltip sa dynamic na idinagdag na mga elemento ng DOM ( jQuery.on suporta). Tingnan ang isyung ito at isang halimbawang nagbibigay-kaalaman . |
template |
string | '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' |
Base HTML na gagamitin kapag gumagawa ng tooltip. Ang mga tooltip title ay ilalagay sa .tooltip-inner . .tooltip-arrow ay magiging arrow ng tooltip. Ang pinakamalawak na elemento ng wrapper ay dapat magkaroon ng .tooltip klase at role="tooltip" . |
title |
string, elemento, function | '' |
Default na halaga ng pamagat kung title walang katangian. Kung ang isang function ay ibinigay, ito ay tatawagin kasama ang this reference na nakatakda sa elemento kung saan ang popover ay naka-attach sa. |
trigger |
string | 'hover focus' |
Paano na-trigger ang tooltip: click, hover, focus, manual. Maaari kang magpasa ng maraming trigger; paghiwalayin sila ng isang puwang. 'manual' ay nagpapahiwatig na ang tooltip ay ma-trigger sa pamamagitan ng programmatically sa pamamagitan ng .tooltip('show') , .tooltip('hide') at mga .tooltip('toggle') pamamaraan; hindi maaaring isama ang halagang ito sa anumang iba pang trigger. 'hover' magreresulta sa sarili nitong mga tooltip na hindi ma-trigger sa pamamagitan ng keyboard, at dapat lang gamitin kung may mga alternatibong pamamaraan para sa paghahatid ng parehong impormasyon para sa mga user ng keyboard. |
Mga katangian ng data para sa mga indibidwal na tooltip
Ang mga opsyon para sa mga indibidwal na tooltip ay maaaring tukuyin sa pamamagitan ng paggamit ng mga katangian ng data, gaya ng ipinaliwanag sa itaas.
Paggamit ng function na maypopperConfig
const tooltip = new bootstrap.Tooltip(element, {
popperConfig(defaultBsPopperConfig) {
// const newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
Paraan
Mga asynchronous na pamamaraan at paglipat
Ang lahat ng mga pamamaraan ng API ay asynchronous at nagsisimula ng isang paglipat . Bumalik sila sa tumatawag sa sandaling magsimula ang paglipat ngunit bago ito matapos . Bilang karagdagan, babalewalain ang isang method call sa isang transitioning component .
Tingnan ang aming dokumentasyon ng JavaScript para sa higit pang impormasyon .
Pamamaraan | Paglalarawan |
---|---|
disable |
Tinatanggal ang kakayahang ipakita ang tooltip ng isang elemento. Maipapakita lang ang tooltip kung ito ay muling pinagana. |
dispose |
Itinatago at sinisira ang tooltip ng isang elemento (Tinatanggal ang nakaimbak na data sa elemento ng DOM). Ang mga tooltip na gumagamit ng delegasyon (na ginawa gamit ang selector opsyon ) ay hindi maaaring isa-isang sirain sa mga elemento ng descendant na trigger. |
enable |
Nagbibigay sa tooltip ng elemento ng kakayahang ipakita. Ang mga tooltip ay pinagana bilang default. |
getInstance |
Static na paraan na nagbibigay-daan sa iyong makuha ang tooltip na instance na nauugnay sa isang elemento ng DOM, o gumawa ng bago kung sakaling hindi ito nasimulan. |
getOrCreateInstance |
Static na paraan na nagbibigay-daan sa iyong makuha ang tooltip na instance na nauugnay sa isang elemento ng DOM, o gumawa ng bago kung sakaling hindi ito nasimulan. |
hide |
Itinatago ang tooltip ng isang elemento. Bumabalik sa tumatawag bago pa talaga naitago ang tooltip (ibig sabihin, bago hidden.bs.tooltip mangyari ang kaganapan). Ito ay itinuturing na isang "manual" na pag-trigger ng tooltip. |
setContent |
Nagbibigay ng paraan upang baguhin ang nilalaman ng tooltip pagkatapos ng pagsisimula nito. |
show |
Nagpapakita ng tooltip ng isang elemento. Bumabalik sa tumatawag bago aktwal na naipakita ang tooltip (ibig sabihin, bago shown.bs.tooltip mangyari ang kaganapan). Ito ay itinuturing na isang "manual" na pag-trigger ng tooltip. Ang mga tooltip na may zero-length na mga pamagat ay hindi kailanman ipinapakita. |
toggle |
I-toggle ang tooltip ng isang elemento. Bumabalik sa tumatawag bago ang tooltip ay aktwal na naipakita o naitago (ibig sabihin, bago mangyari ang shown.bs.tooltip o hidden.bs.tooltip kaganapan). Ito ay itinuturing na isang "manual" na pag-trigger ng tooltip. |
toggleEnabled |
I-toggle ang kakayahang ipakita o itago ang tooltip ng isang elemento. |
update |
Ina-update ang posisyon ng tooltip ng isang elemento. |
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance
// setContent example
tooltip.setContent({ '.tooltip-inner': 'another title' })
setContent
pamamaraan ay tumatanggap
object
ng argumento, kung saan ang bawat property-key ay isang wastong
string
tagapili sa loob ng popover template, at ang bawat nauugnay na property-value ay maaaring
string
|
element
|
function
|
null
Mga kaganapan
Kaganapan | Paglalarawan |
---|---|
hide.bs.tooltip |
Agad na pinapagana ang kaganapang ito kapag hide tinawag na ang paraan ng instance. |
hidden.bs.tooltip |
Ang kaganapang ito ay pinapagana kapag ang popover ay tapos nang itago mula sa user (maghihintay para sa mga transition ng CSS upang makumpleto). |
inserted.bs.tooltip |
Ang kaganapang ito ay pinapagana pagkatapos ng show.bs.tooltip kaganapan kapag ang template ng tooltip ay naidagdag sa DOM. |
show.bs.tooltip |
Agad na gagana ang kaganapang ito kapag show tinawag ang paraan ng instance. |
shown.bs.tooltip |
Ang kaganapang ito ay pinapagana kapag ang popover ay ginawang nakikita ng user (maghihintay na makumpleto ang mga transition ng CSS). |
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)
myTooltipEl.addEventListener('hidden.bs.tooltip', () => {
// do something...
})
tooltip.hide()