Rīku padomi
Dokumentācija un piemēri pielāgotu Bootstrap rīka padomu pievienošanai ar CSS un JavaScript, izmantojot CSS3 animācijām un data-bs-atribūtus vietējai virsrakstu glabāšanai.
Pārskats
Lietas, kas jāzina, izmantojot rīka padomu spraudni:
- Rīka padomi pozicionēšanai balstās uz trešās puses bibliotēku Popper . Jums ir jāiekļauj popper.min.js pirms
bootstrap.js
, vai izmantojiet tādu,bootstrap.bundle.min.js
kas satur Popper. - Rīka padomi tiek izvēlēti veiktspējas iemeslu dēļ, tāpēc jums tie ir jāinicializē pašam .
- Rīka padomi ar nulles garuma virsrakstiem nekad netiek rādīti.
- Norādiet
container: 'body'
, lai izvairītos no renderēšanas problēmām sarežģītākos komponentos (piemēram, mūsu ievades grupās, pogu grupās utt.). - Rīka padomu aktivizēšana slēptajos elementos nedarbosies.
- Rīka padomi
.disabled
vaidisabled
elementi ir jāaktivizē iesaiņojuma elementā. - Ja to aktivizē hipersaites, kas aptver vairākas rindiņas, rīka padomi tiks centrēti. Izmantojiet
white-space: nowrap;
,<a>
lai izvairītos no šādas uzvedības. - Rīka padomi ir jāpaslēpj, pirms tiem atbilstošie elementi tiek noņemti no DOM.
- Rīka padomus var aktivizēt, pateicoties elementam ēnu DOM iekšpusē.
Vai to visu sapratāt? Lieliski, redzēsim, kā viņi strādā ar dažiem piemēriem.
prefers-reduced-motion
multivides vaicājuma. Skatiet
mūsu pieejamības dokumentācijas sadaļu samazinātas kustības .
Piemēri
Iespējot rīka padomus
Kā minēts iepriekš, pirms to izmantošanas ir jāinicializē rīka padomi. Viens veids, kā inicializēt visus rīka padomus lapā, būtu atlasīt tos pēc to data-bs-toggle
atribūta, piemēram:
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
Rīku padomi par saitēm
Virziet kursoru virs tālāk esošajām saitēm, lai skatītu rīka padomus:
Viettura teksts, lai parādītu dažas iekļautās saites ar rīka padomiem. Tagad tas ir tikai pildījums, nevis slepkava. Šeit ievietots saturs, lai atdarinātu reāla teksta klātbūtni . Un tas viss, lai sniegtu jums priekšstatu par to, kā rīka padomi izskatītos, ja tos izmantotu reālās situācijās. Cerams, ka tagad esat redzējis , kā šie saišu rīka padomi var darboties praksē, kad tos izmantosiet savā vietnē vai projektā.
<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
savā
data-bs-title
HTML. Kad
title
tiek izmantots, Popper to automātiski aizstās ar
data-bs-title
, kad elements tiek renderēts.
Pielāgoti rīka padomi
Pievienots v5.2.0Varat pielāgot rīka padomu izskatu, izmantojot CSS mainīgos . Mēs iestatām pielāgotu klasi ar data-bs-custom-class="custom-tooltip"
sava pielāgotā izskata darbības jomu un izmantojam to, lai ignorētu vietējo CSS mainīgo.
.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>
Norādes
Novietojiet kursoru virs tālāk esošajām pogām, lai skatītu četrus rīka padomu norādes: augšā, pa labi, apakšā un pa kreisi. Norādes tiek atspoguļotas, izmantojot Bootstrap 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>
Un ar pievienotu pielāgotu 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>
Ar SVG:
CSS
Mainīgie
Pievienots v5.2.0Kā daļu no Bootstrap attīstošās CSS mainīgo pieejas rīka padomi tagad izmanto vietējos CSS mainīgos, .tooltip
lai uzlabotu reāllaika pielāgošanu. CSS mainīgo vērtības tiek iestatītas, izmantojot Sass, tāpēc joprojām tiek atbalstīta arī Sass pielāgošana.
--#{$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 mainīgie
$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
Lietošana
Rīkpadomu spraudnis ģenerē saturu un marķējumu pēc pieprasījuma un pēc noklusējuma ievieto rīka padomus aiz to aktivizētāja elementa.
Aktivizējiet rīka padomu, izmantojot JavaScript:
const exampleEl = document.getElementById('example')
const tooltip = new bootstrap.Tooltip(exampleEl, options)
Pārplūde auto
unscroll
Rīka padoma pozīcija mēģina automātiski mainīties, ja vecākkonteinerā ir overflow: auto
vai overflow: scroll
patīk mūsu .table-responsive
, taču joprojām tiek saglabāta sākotnējā izvietojuma pozīcija. Lai to atrisinātu, iestatiet boundary
opciju (apvēršanas modifikatoram, izmantojot popperConfig
opciju) uz jebkuru HTMLElement, lai ignorētu noklusējuma vērtību 'clippingParents'
, piemēram document.body
:
const tooltip = new bootstrap.Tooltip('#example', {
boundary: document.body // or document.querySelector('#boundary')
})
Atzīmes
Rīka padomam nepieciešamais marķējums ir tikai data
atribūts title
, un HTML elementā, kuram vēlaties izveidot rīka padomu. Rīka padoma ģenerētais marķējums ir diezgan vienkāršs, lai gan tam ir nepieciešama pozīcija (pēc noklusējuma to iestatījis top
spraudnis).
Rīka padomu izmantošana tastatūras un palīgtehnoloģiju lietotājiem
Rīka padomi jāpievieno tikai tiem HTML elementiem, kas tradicionāli ir orientēti uz tastatūru un ir interaktīvi (piemēram, saites vai veidlapas vadīklas). Lai gan patvaļīgus HTML elementus (piemēram, <span>
s) var padarīt fokusējamus, pievienojot tabindex="0"
atribūtu, tastatūras lietotājiem tiks pievienotas potenciāli kaitinošas un mulsinošas tabulēšanas pieturas neinteraktīvos elementos, un lielākā daļa palīgtehnoloģiju pašlaik nepaziņo rīka padomu šajā situācijā. Turklāt nepaļaujieties tikai uz hover
jūsu rīka padoma aktivizētāju, jo tas padarīs jūsu rīka padomus neiespējamu tastatūras lietotājiem.
<!-- 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>
Atspējotie elementi
Elementi ar disabled
atribūtu nav interaktīvi, tas nozīmē, ka lietotāji nevar fokusēt, virzīt kursoru vai noklikšķināt uz tiem, lai aktivizētu rīka padomu (vai uznirstošo logu). Kā risinājums ir jāiedarbina rīka padoms no iesaiņojuma <div>
vai <span>
ideālā gadījumā tastatūras fokusēšanas, izmantojot 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>
Iespējas
Tā kā opcijas var nodot, izmantojot datu atribūtus vai JavaScript, varat pievienot opcijas nosaukumu data-bs-
, piemēram, data-bs-animation="{value}"
. Nododot opcijas, izmantojot datu atribūtus , noteikti nomainiet opcijas nosaukuma reģistra veidu no “ camelCase ” uz “ kebab-case ”. Piemēram, data-bs-custom-class="beautifier"
izmantojiet data-bs-customClass="beautifier"
.
Sākot ar versiju Bootstrap 5.2.0, visi komponenti atbalsta eksperimentālu rezervēto datu atribūtu data-bs-config
, kurā var ievietot vienkāršu komponentu konfigurāciju kā JSON virkni. Ja elementam ir atribūti data-bs-config='{"delay":0, "title":123}'
un data-bs-title="456"
, galīgā title
vērtība būs 456
un atsevišķie datu atribūti ignorēs vērtības, kas norādītas data-bs-config
. Turklāt esošie datu atribūti var ietvert JSON vērtības, piemēram, data-bs-delay='{"show":0,"hide":150}'
.
sanitize
opcijas
sanitizeFn
, un
allowList
opcijas nevar nodrošināt, izmantojot datu atribūtus.
Vārds | Tips | Noklusējums | Apraksts |
---|---|---|---|
allowList |
objektu | Noklusējuma vērtība | Objekts, kurā ir atļauti atribūti un tagi. |
animation |
Būla | true |
Rīka padomam izmantojiet CSS izbalēšanas pāreju. |
boundary |
virkne, elements | 'clippingParents' |
Rīka padoma pārpildes ierobežojuma robeža (attiecas tikai uz Popera preventīvā pārpildes modifikatoru). Pēc noklusējuma tas ir 'clippingParents' un var pieņemt HTMLElement atsauci (tikai izmantojot JavaScript). Lai iegūtu papildinformāciju, skatiet Popper's detectOverflow dokumentus . |
container |
virkne, elements, viltus | false |
Pievieno rīka padomu noteiktam elementam. Piemērs: container: 'body' . Šī opcija ir īpaši noderīga, jo tā ļauj novietot rīka padomu dokumenta plūsmā netālu no palaišanas elementa, kas neļaus rīka padomam peldēt prom no aktivizētāja elementa loga lieluma maiņas laikā. |
customClass |
virkne, funkcija | '' |
Pievienojiet klases rīka padomam, kad tas tiek parādīts. Ņemiet vērā, ka šīs klases tiks pievienotas papildus visām veidnē norādītajām klasēm. Lai pievienotu vairākas klases, atdaliet tās ar atstarpēm: 'class-1 class-2' . Varat arī nodot funkciju, kurai jāatgriež viena virkne, kas satur papildu klašu nosaukumus. |
delay |
numurs, objekts | 0 |
Rīka padoma rādīšanas un slēpšanas aizkave (ms) — neattiecas uz manuālo aktivizētāja veidu. Ja tiek norādīts numurs, aizkave tiek piemērota gan slēpšanai/rādīšanai. Objekta struktūra ir: delay: { "show": 500, "hide": 100 } . |
fallbackPlacements |
masīvs | ['top', 'right', 'bottom', 'left'] |
Definējiet rezerves izvietojumus, nodrošinot izvietojumu sarakstu masīvā (priekšrocību secībā). Lai iegūtu papildinformāciju, skatiet Popera uzvedības dokumentus . |
html |
Būla | false |
Atļaut HTML rīka padomos. Ja vērtība ir patiesa, rīka padomos HTML tagi title tiks atveidoti rīka padomos. Ja aplams, innerText īpašums tiks izmantots, lai ievietotu saturu DOM. Izmantojiet tekstu, ja uztraucaties par XSS uzbrukumiem. |
offset |
masīvs, virkne, funkcija | [0, 0] |
Rīka padoma nobīde attiecībā pret tā mērķi. Datu atribūtos varat nodot virkni ar komatu atdalītām vērtībām, piemēram: data-bs-offset="10,20" . Ja funkcija tiek izmantota, lai noteiktu nobīdi, tā tiek izsaukta ar objektu, kurā kā pirmais arguments ir popper izvietojums, atsauce un popper rects. Aktivizējošais elements DOM mezgls tiek nodots kā otrais arguments. Funkcijai ir jāatgriež masīvs ar diviem cipariem: sānslīde , distance . Papildinformāciju skatiet Poppera nobīdes dokumentos . |
placement |
virkne, funkcija | 'top' |
Kā novietot rīka padomu: automātiski, augšā, apakšā, pa kreisi, pa labi. Kad auto ir norādīts, tas dinamiski pārorientēs rīka padomu. Ja funkcija tiek izmantota, lai noteiktu izvietojumu, tā tiek izsaukta ar rīka padoma DOM mezglu kā pirmo argumentu un trigerēšanas elementu DOM mezglu kā otro. Konteksts this ir iestatīts uz rīka padoma instanci. |
popperConfig |
nulle, objekts, funkcija | null |
Lai mainītu Bootstrap noklusējuma Popper konfigurāciju, skatiet Popper konfigurāciju . Ja funkcija tiek izmantota, lai izveidotu Popper konfigurāciju, tā tiek izsaukta ar objektu, kas satur Bootstrap noklusējuma Popper konfigurāciju. Tas palīdz izmantot un apvienot noklusējuma iestatījumus ar savu konfigurāciju. Funkcijai ir jāatgriež Popper konfigurācijas objekts. |
sanitize |
Būla | true |
Iespējojiet vai atspējojiet dezinfekciju. Ja tas ir aktivizēts 'template' , opcijas tiks sanitizētas.'content' 'title' |
sanitizeFn |
null, funkcija | null |
Šeit jūs varat nodrošināt savu dezinfekcijas funkciju. Tas var būt noderīgi, ja vēlaties dezinficēšanai izmantot īpašu bibliotēku. |
selector |
stīga, viltus | false |
Ja ir nodrošināts atlasītājs, rīka padomu objekti tiks deleģēti norādītajiem mērķiem. Praksē to izmanto arī, lai lietotu rīka padomus dinamiski pievienotajiem DOM elementiem ( jQuery.on atbalsts). Skatiet šo izdevumu un informatīvo piemēru . |
template |
virkne | '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' |
Pamata HTML, kas jāizmanto, veidojot rīka padomu. Rīka padoms title tiks ievadīts .tooltip-inner . .tooltip-arrow kļūs par rīka padoma bultiņu. Vistālākajam iesaiņojuma elementam jābūt .tooltip klasei un role="tooltip" . |
title |
virkne, elements, funkcija | '' |
Noklusējuma nosaukuma vērtība, ja title atribūts nav pieejams. Ja funkcija ir dota, tā tiks izsaukta ar this atsauci, kas iestatīta uz elementu, kuram ir pievienots uznirstošais logs. |
trigger |
virkne | 'hover focus' |
Kā tiek aktivizēts rīka padoms: noklikšķiniet, virziet kursoru, fokusējiet, manuāli. Jūs varat nodot vairākus trigerus; atdaliet tos ar atstarpi. 'manual' norāda, ka rīka padoms tiks aktivizēts programmatiski, izmantojot .tooltip('show') , .tooltip('hide') un .tooltip('toggle') metodes; šo vērtību nevar apvienot ar nevienu citu aktivizētāju. 'hover' pati par sevi radīs rīka padomus, kurus nevar aktivizēt, izmantojot tastatūru, un tos vajadzētu izmantot tikai tad, ja ir pieejamas alternatīvas metodes vienas un tās pašas informācijas nodošanai tastatūras lietotājiem. |
Datu atribūti atsevišķiem rīka padomiem
Atsevišķu rīka padomu opcijas var arī norādīt, izmantojot datu atribūtus, kā paskaidrots iepriekš.
Izmantojot funkciju arpopperConfig
const tooltip = new bootstrap.Tooltip(element, {
popperConfig(defaultBsPopperConfig) {
// const newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
Metodes
Asinhronās metodes un pārejas
Visas API metodes ir asinhronas un sāk pāreju . Viņi atgriežas pie zvanītāja, tiklīdz ir sākta pāreja, bet pirms tās beigām . Turklāt pārejas komponenta metodes izsaukums tiks ignorēts .
Metode | Apraksts |
---|---|
disable |
Noņem iespēju rādīt elementa rīka padomu. Rīka padomu varēs parādīt tikai tad, ja tas būs atkārtoti iespējots. |
dispose |
Paslēpj un iznīcina elementa rīka padomu (noņem DOM elementā saglabātos datus). Rīka padomus, kuros tiek izmantota deleģēšana (kas tiek izveidoti, izmantojot opciju selector ) , nevar atsevišķi iznīcināt pēcnācēju aktivizētāja elementiem. |
enable |
Nodrošina elementa rīka padomam iespēju tikt parādītam. Rīka padomi ir iespējoti pēc noklusējuma. |
getInstance |
Statiskā metode, kas ļauj iegūt rīka padoma gadījumu, kas saistīts ar DOM elementu, vai izveidot jaunu, ja tas nav inicializēts. |
getOrCreateInstance |
Statiskā metode, kas ļauj iegūt rīka padoma gadījumu, kas saistīts ar DOM elementu, vai izveidot jaunu, ja tas nav inicializēts. |
hide |
Paslēpj elementa rīka padomu. Atgriežas pie zvanītāja, pirms rīka padoms faktiski ir paslēpts (ti, pirms hidden.bs.tooltip notikuma). To uzskata par rīka padoma “manuālu” aktivizēšanu. |
setContent |
Dod iespēju mainīt rīka padoma saturu pēc tā inicializācijas. |
show |
Parāda elementa rīka padomu. Atgriežas pie zvanītāja, pirms rīka padoms ir faktiski parādīts (ti, pirms shown.bs.tooltip notikuma). To uzskata par rīka padoma “manuālu” aktivizēšanu. Rīka padomi ar nulles garuma virsrakstiem nekad netiek rādīti. |
toggle |
Pārslēdz elementa rīka padomu. Atgriežas pie zvanītāja, pirms rīka padoms faktiski ir parādīts vai paslēpts (ti, pirms shown.bs.tooltip vai hidden.bs.tooltip notikuma). To uzskata par rīka padoma “manuālu” aktivizēšanu. |
toggleEnabled |
Pārslēdz iespēju rādīt vai paslēpt elementa rīka padomu. |
update |
Atjaunina elementa rīka padoma pozīciju. |
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance
// setContent example
tooltip.setContent({ '.tooltip-inner': 'another title' })
setContent
pieņem
object
argumentu, kur katra rekvizīta atslēga ir derīgs
string
atlasītājs uznirstošā veidnē, un katra saistītā rekvizīta vērtība var būt
string
|
element
|
function
|
null
Pasākumi
Pasākums | Apraksts |
---|---|
hide.bs.tooltip |
Šis notikums tiek aktivizēts nekavējoties, kad hide ir izsaukta instances metode. |
hidden.bs.tooltip |
Šis notikums tiek aktivizēts, kad uznirstošais logs ir paslēpts no lietotāja (gaidīs, līdz tiks pabeigtas CSS pārejas). |
inserted.bs.tooltip |
Šis notikums tiek aktivizēts pēc show.bs.tooltip notikuma, kad rīka padoma veidne ir pievienota DOM. |
show.bs.tooltip |
Šis notikums tiek aktivizēts nekavējoties, kad show tiek izsaukta instances metode. |
shown.bs.tooltip |
Šis notikums tiek aktivizēts, kad uznirstošais logs ir padarīts redzams lietotājam (pagaidīs, līdz tiks pabeigtas CSS pārejas). |
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)
myTooltipEl.addEventListener('hidden.bs.tooltip', () => {
// do something...
})
tooltip.hide()