Sfaturi instrumente
Documentație și exemple pentru adăugarea de instrucțiuni personalizate Bootstrap cu CSS și JavaScript folosind CSS3 pentru animații și atribute data-bs pentru stocarea locală a titlurilor.
Prezentare generală
Lucruri de știut atunci când utilizați pluginul tooltip:
- Sfaturile instrumente se bazează pe biblioteca terță parte Popper pentru poziționare. Trebuie să includeți popper.min.js înainte de
bootstrap.js
, sau să utilizați unulbootstrap.bundle.min.js
care conține Popper. - Sfaturile instrumente sunt înscrise din motive de performanță, așa că trebuie să le inițializați singur .
- Sfaturile instrumente cu titluri de lungime zero nu sunt niciodată afișate.
- Specificați
container: 'body'
pentru a evita problemele de randare în componente mai complexe (cum ar fi grupurile noastre de intrare, grupurile de butoane etc.). - Declanșarea indicațiilor de instrucțiuni pentru elementele ascunse nu va funcționa.
- Sfaturile instrumente pentru
.disabled
saudisabled
elemente trebuie să fie declanșate pe un element de înveliș. - Când sunt declanșate de la hyperlinkuri care se întind pe mai multe linii, sfaturile instrumente vor fi centrate. Folosește -l
white-space: nowrap;
pe tine<a>
pentru a evita acest comportament. - Sfaturile cu instrumente trebuie ascunse înainte ca elementele lor corespunzătoare să fie eliminate din DOM.
- Sfaturile cu instrumente pot fi declanșate datorită unui element din interiorul unui DOM umbră.
Ai toate astea? Grozav, să vedem cum funcționează cu câteva exemple.
prefers-reduced-motion
interogarea media. Consultați
secțiunea cu mișcare redusă a documentației noastre de accesibilitate .
Exemple
Activați sfaturile instrumente
După cum sa menționat mai sus, trebuie să inițializați sfaturile instrumente înainte de a putea fi utilizate. O modalitate de a inițializa toate sfaturile instrumente dintr-o pagină ar fi să le selectați după data-bs-toggle
atributul lor, astfel:
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
Sfaturi pentru legături
Treceți cu mouse-ul peste linkurile de mai jos pentru a vedea sfaturi despre instrumente:
Text substituent pentru a demonstra câteva legături inline cu sfaturi pentru instrumente. Acesta este acum doar umplutură, nu ucigaș. Conținut plasat aici doar pentru a imita prezența textului real . Și toate acestea doar pentru a vă oferi o idee despre cum ar arăta sfaturile instrumente atunci când sunt utilizate în situații reale. Așa că sperăm că acum ați văzut cum aceste sfaturi despre linkuri pot funcționa în practică, odată ce le utilizați pe propriul site sau proiect.
<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
sau
data-bs-title
în HTML. Când
title
este utilizat, Popper îl va înlocui automat cu
data-bs-title
atunci când elementul este randat.
Sfaturi personalizate
Adăugat în v5.2.0Puteți personaliza aspectul indicațiilor cu ajutorul variabilelor CSS . Am stabilit o clasă personalizată cu data-bs-custom-class="custom-tooltip"
pentru a ne defini aspectul personalizat și o folosim pentru a suprascrie o variabilă CSS locală.
.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>
Directii
Treceți cu mouse-ul peste butoanele de mai jos pentru a vedea cele patru indicații de indicații: sus, dreapta, jos și stânga. Indicațiile sunt reflectate atunci când utilizați Bootstrap în 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>
Și cu HTML personalizat adăugat:
<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>
Cu un SVG:
CSS
Variabile
Adăugat în v5.2.0Ca parte a abordării în evoluție a variabilelor CSS a Bootstrap, sfaturile instrumente folosesc acum variabile CSS locale activate .tooltip
pentru personalizare îmbunătățită în timp real. Valorile pentru variabilele CSS sunt setate prin Sass, astfel încât personalizarea Sass este încă acceptată.
--#{$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};
Variabile 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
Utilizare
Pluginul de indicații cu instrumente generează conținut și markup la cerere și, în mod implicit, plasează indicatorii de informații după elementul de declanșare.
Declanșați balonul cu ajutorul JavaScript:
const exampleEl = document.getElementById('example')
const tooltip = new bootstrap.Tooltip(exampleEl, options)
Debordare auto
șiscroll
Poziția balonului explicativ încearcă să se schimbe automat atunci când un container părinte are overflow: auto
sau îi overflow: scroll
place .table-responsive
, dar păstrează totuși poziționarea destinației inițiale. Pentru a rezolva acest lucru, setați boundary
opțiunea (pentru modificatorul flip folosind popperConfig
opțiunea) la orice HTMLElement pentru a înlocui valoarea implicită 'clippingParents'
, cum ar fi document.body
:
const tooltip = new bootstrap.Tooltip('#example', {
boundary: document.body // or document.querySelector('#boundary')
})
Markup
Markupul necesar pentru un balon explicativ este doar un data
atribut și title
pe elementul HTML doriți să aveți un balon explicativ. Markupul generat al unui tooltip este destul de simplu, deși necesită o poziție (în mod implicit, setată top
de plugin).
Faceți ca sfaturile instrumente să funcționeze pentru utilizatorii de tastatură și de tehnologie de asistență
Ar trebui să adăugați doar sfaturi pentru elementele HTML care sunt în mod tradițional focalizate pe tastatură și interactive (cum ar fi link-uri sau comenzi de formular). Deși elementele HTML arbitrare (cum ar fi <span>
s) pot fi făcute focalizabile prin adăugarea tabindex="0"
atributului, acest lucru va adăuga tabulaturi potențial enervante și confuze pe elementele neinteractive pentru utilizatorii de tastatură, iar majoritatea tehnologiilor de asistență nu anunță în prezent un sfat cu instrumente în această situație. În plus, nu vă bazați exclusiv hover
ca declanșator pentru indicația dvs. cu instrumente, deoarece acest lucru va face ca acestea să fie imposibil de declanșat pentru utilizatorii de tastatură.
<!-- 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>
Elemente dezactivate
Elementele cu disabled
atributul nu sunt interactive, ceea ce înseamnă că utilizatorii nu se pot concentra, trece cu mouse-ul sau face clic pe ele pentru a declanșa un balon explicativ (sau popover). Ca o soluție de soluție, veți dori să declanșați sfatul cu instrumente dintr-un wrapper <div>
sau <span>
, în mod ideal, focalizat la tastatură folosind 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>
Opțiuni
Deoarece opțiunile pot fi transmise prin atribute de date sau JavaScript, puteți adăuga un nume de opțiune la data-bs-
, ca în data-bs-animation="{value}"
. Asigurați-vă că schimbați tipul de caz al numelui opțiunii din „ camelCase ” în „ kebab-case ” atunci când treceți opțiunile prin atributele de date. De exemplu, utilizați data-bs-custom-class="beautifier"
în loc de data-bs-customClass="beautifier"
.
Începând cu Bootstrap 5.2.0, toate componentele acceptă un atribut de date rezervat experimentaldata-bs-config
care poate găzdui configurarea simplă a componentelor ca șir JSON. Când un element are data-bs-config='{"delay":0, "title":123}'
și data-bs-title="456"
atribute, valoarea finală title
va fi 456
și atributele de date separate vor înlocui valorile date pe data-bs-config
. În plus, atributele de date existente pot găzdui valori JSON precum data-bs-delay='{"show":0,"hide":150}'
.
sanitize
,
opțiunile sanitizeFn
, și
allowList
nu pot fi furnizate utilizând atribute de date.
Nume | Tip | Mod implicit | Descriere |
---|---|---|---|
allowList |
obiect | Valoare implicită | Obiect care conține atribute și etichete permise. |
animation |
boolean | true |
Aplicați o tranziție de estompare CSS la balonul explicativ. |
boundary |
sfoară, element | 'clippingParents' |
Limita constrângerii de depășire a balonului explicativ (se aplică numai modificatorului preventOverflow al lui Popper). În mod implicit, este 'clippingParents' și poate accepta o referință HTMLElement (numai prin JavaScript). Pentru mai multe informații, consultați documentele detectOverflow ale lui Popper . |
container |
șir, element, fals | false |
Adaugă indicația la un anumit element. Exemplu: container: 'body' . Această opțiune este deosebit de utilă prin faptul că vă permite să poziționați balonul în fluxul documentului în apropierea elementului de declanșare - ceea ce va împiedica balonul să plutească departe de elementul de declanșare în timpul unei redimensionări a ferestrei. |
customClass |
șir, funcție | '' |
Adăugați clase la sfatul instrument atunci când este afișat. Rețineți că aceste clase vor fi adăugate în plus față de orice clase specificate în șablon. Pentru a adăuga mai multe clase, separați-le cu spații: 'class-1 class-2' . De asemenea, puteți transmite o funcție care ar trebui să returneze un singur șir care să conțină nume de clasă suplimentare. |
delay |
număr, obiect | 0 |
Întârzieți afișarea și ascunderea balonului explicativ (ms) — nu se aplică tipului de declanșare manuală. Dacă este furnizat un număr, se aplică întârziere atât pentru ascunde/afișare. Structura obiectului este: delay: { "show": 500, "hide": 100 } . |
fallbackPlacements |
matrice | ['top', 'right', 'bottom', 'left'] |
Definiți destinații de plasare alternative prin furnizarea unei liste de destinații de plasare în matrice (în ordinea preferințelor). Pentru mai multe informații, consultați documentele de comportament ale lui Popper . |
html |
boolean | false |
Permiteți HTML în sfatul instrumentului. Dacă este adevărat, etichetele HTML din balonul explicativ title vor fi redate în balonul explicativ. Dacă este fals, innerText proprietatea va fi folosită pentru a insera conținut în DOM. Folosiți text dacă vă îngrijorează atacurile XSS. |
offset |
matrice, șir, funcție | [0, 0] |
Decalaj al indicației explicative în raport cu ținta acestuia. Puteți trece un șir în atributele de date cu valori separate prin virgulă, cum ar fi: data-bs-offset="10,20" . Când o funcție este utilizată pentru a determina offset-ul, este apelată cu un obiect care conține plasarea popperului, referința și rectele popper ca prim argument. Elementul de declanșare nodul DOM este transmis ca al doilea argument. Funcția trebuie să returneze o matrice cu două numere: skidding , distance . Pentru mai multe informații, consultați documentele despre offset ale lui Popper . |
placement |
șir, funcție | 'top' |
Cum să poziționați indicația: automat, sus, jos, stânga, dreapta. Când auto este specificat, acesta va reorienta în mod dinamic indicația. Când o funcție este utilizată pentru a determina plasarea, aceasta este apelată cu nodul DOM ca prim argument și elementul de declanșare nodul DOM ca al doilea. Contextul this este setat la instanța descrierii. |
popperConfig |
nul, obiect, funcție | null |
Pentru a schimba configurația Popper implicită a Bootstrap, consultați configurația lui Popper . Când o funcție este folosită pentru a crea configurația Popper, este apelată cu un obiect care conține configurația implicită Popper a Bootstrap. Vă ajută să utilizați și să îmbinați configurația implicită cu propria dvs. configurație. Funcția trebuie să returneze un obiect de configurare pentru Popper. |
sanitize |
boolean | true |
Activați sau dezactivați igienizarea. Dacă este activat 'template' , 'content' și 'title' opțiunile vor fi dezinfectate. |
sanitizeFn |
nulă, funcție | null |
Aici vă puteți furniza propria funcție de dezinfectare. Acest lucru poate fi util dacă preferați să utilizați o bibliotecă dedicată pentru a efectua igienizarea. |
selector |
șir, fals | false |
Dacă este furnizat un selector, obiectele de tip tooltip vor fi delegate țintelor specificate. În practică, aceasta este folosită și pentru a aplica sfaturi pentru elementele DOM adăugate dinamic ( jQuery.on suport). Vedeți această problemă și un exemplu informativ . |
template |
şir | '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' |
HTML de bază de utilizat la crearea descrierii explicative. Indicațiile title instrumente vor fi injectate în .tooltip-inner . .tooltip-arrow va deveni săgeata descrierii. Elementul de înveliș exterior ar trebui să aibă .tooltip clasa și role="tooltip" . |
title |
șir, element, funcție | '' |
Valoarea implicită a titlului dacă title atributul nu este prezent. Dacă este dată o funcție, aceasta va fi apelată cu this referința setată la elementul la care este atașat popover-ul. |
trigger |
şir | 'hover focus' |
Cum se declanșează balonul: clic, trece cu mouse-ul, focalizare, manual. Puteți trece mai multe declanșatoare; separați-le cu un spațiu. 'manual' indică faptul că indicația va fi declanșată programatic prin metodele și .tooltip('show') ; această valoare nu poate fi combinată cu niciun alt declanșator. pe cont propriu va avea ca rezultat sfaturi de instrumente care nu pot fi declanșate prin tastatură și ar trebui utilizate numai dacă sunt prezente metode alternative de transmitere a aceleiași informații pentru utilizatorii de tastatură..tooltip('hide') .tooltip('toggle') 'hover' |
Atribute de date pentru sfaturi instrumentale individuale
Opțiunile pentru sfaturi instrumente individuale pot fi specificate alternativ prin utilizarea atributelor de date, așa cum s-a explicat mai sus.
Folosind funcția cupopperConfig
const tooltip = new bootstrap.Tooltip(element, {
popperConfig(defaultBsPopperConfig) {
// const newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
Metode
Metode și tranziții asincrone
Toate metodele API sunt asincrone și încep o tranziție . Ei revin la apelant imediat ce tranziția este începută, dar înainte ca aceasta să se încheie . În plus, un apel de metodă pentru o componentă de tranziție va fi ignorat .
Consultați documentația noastră JavaScript pentru mai multe informații .
Metodă | Descriere |
---|---|
disable |
Elimină capacitatea de afișare a indicației unui element. Indicatorul va putea fi afișat numai dacă este reactivat. |
dispose |
Ascunde și distruge sfatul instrument al unui element (Elimină datele stocate pe elementul DOM). Sfaturile instrumente care folosesc delegarea (care sunt create folosind opțiunea selector ) nu pot fi distruse individual pe elementele de declanșare descendente. |
enable |
Oferă un sfat instrument al unui element posibilitatea de a fi afișat. Sfaturile instrumente sunt activate în mod implicit. |
getInstance |
Metodă statică care vă permite să obțineți o instanță tooltip asociată cu un element DOM sau să creați una nouă în cazul în care nu a fost inițializată. |
getOrCreateInstance |
Metodă statică care vă permite să obțineți o instanță tooltip asociată cu un element DOM sau să creați una nouă în cazul în care nu a fost inițializată. |
hide |
Ascunde explicația unui element. Se întoarce la apelant înainte ca indicația să fie ascunsă (adică înainte de apariția hidden.bs.tooltip evenimentului). Aceasta este considerată o declanșare „manuală” a descrierii explicative. |
setContent |
Oferă o modalitate de a schimba conținutul descrierii după inițializare. |
show |
Dezvăluie explicația unui element. Se întoarce la apelant înainte ca indicația să fie afișată efectiv (adică înainte de apariția shown.bs.tooltip evenimentului). Aceasta este considerată o declanșare „manuală” a descrierii explicative. Sfaturile instrumente cu titluri de lungime zero nu sunt niciodată afișate. |
toggle |
Comută în lista de informații despre un element. Revine la apelant înainte ca balonul să fie afișat sau ascuns (adică înainte ca evenimentul shown.bs.tooltip sau să hidden.bs.tooltip apară). Aceasta este considerată o declanșare „manuală” a descrierii explicative. |
toggleEnabled |
Comută posibilitatea ca indicația unui element să fie afișată sau ascunsă. |
update |
Actualizează poziția descrierii explicative a unui element. |
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance
// setContent example
tooltip.setContent({ '.tooltip-inner': 'another title' })
setContent
acceptă un
object
argument, în care fiecare cheie de proprietate este un
string
selector valid în șablonul popover, iar fiecare valoare de proprietate aferentă poate fi
string
|
element
|
function
|
null
Evenimente
Eveniment | Descriere |
---|---|
hide.bs.tooltip |
Acest eveniment este declanșat imediat când hide metoda instanței a fost apelată. |
hidden.bs.tooltip |
Acest eveniment este declanșat când popover-ul a terminat de a fi ascuns utilizatorului (va aștepta finalizarea tranzițiilor CSS). |
inserted.bs.tooltip |
Acest eveniment este declanșat după show.bs.tooltip eveniment, când șablonul de indicații explicative a fost adăugat la DOM. |
show.bs.tooltip |
Acest eveniment se declanșează imediat când show este apelată metoda instanței. |
shown.bs.tooltip |
Acest eveniment este declanșat atunci când popover-ul a fost făcut vizibil pentru utilizator (va aștepta finalizarea tranzițiilor CSS). |
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)
myTooltipEl.addEventListener('hidden.bs.tooltip', () => {
// do something...
})
tooltip.hide()