Namigi orodij
Dokumentacija in primeri za dodajanje namigov orodij Bootstrap po meri s CSS in JavaScript z uporabo CSS3 za animacije in data-bs-atribute za lokalno shranjevanje naslovov.
Pregled
Stvari, ki jih morate vedeti pri uporabi vtičnika orodnih namigov:
- Namigi orodij se za pozicioniranje zanašajo na knjižnico tretje osebe Popper . Vključiti morate popper.min.js pred
bootstrap.js
ali uporabiti tisto,bootstrap.bundle.min.js
ki vsebuje Popper. - Namigi orodij so zaradi učinkovitosti izbirni, zato jih morate inicializirati sami .
- Namigi z naslovi ničelne dolžine niso nikoli prikazani.
- Določite
container: 'body'
, da se izognete težavam z upodabljanjem v kompleksnejših komponentah (kot so naše vnosne skupine, skupine gumbov itd.). - Sprožitev namigov orodij na skritih elementih ne bo delovala.
- Nasveti za
.disabled
alidisabled
elemente se morajo sprožiti na ovojnem elementu. - Ko se sprožijo iz hiperpovezav, ki zajemajo več vrstic, bodo namigi orodij na sredini. Uporabite
white-space: nowrap;
na svojem<a>
s, da se izognete temu vedenju. - Namigi orodij morajo biti skriti, preden so njihovi ustrezni elementi odstranjeni iz DOM-a.
- Namigi orodij se lahko sprožijo zaradi elementa znotraj senčnega DOM-a.
Vse to razumeš? Super, poglejmo, kako delujejo z nekaj primeri.
prefers-reduced-motion
medijske poizvedbe. Oglejte si razdelek o
zmanjšanem gibanju v naši dokumentaciji o dostopnosti .
Primeri
Omogoči opise orodij
Kot je navedeno zgoraj, morate inicializirati namige orodij, preden jih lahko uporabite. Eden od načinov inicializacije vseh namigov orodij na strani bi bil, da jih izberete po njihovem data-bs-toggle
atributu, takole:
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
Namigi na povezavah
Premaknite miškin kazalec nad spodnje povezave, da si ogledate opise orodij:
Besedilo nadomestnega mesta za predstavitev nekaterih povezav v vrstici z opisi orodij. To je zdaj samo polnilo, ne morilec. Vsebina, ki je tukaj postavljena samo zato, da posnema prisotnost pravega besedila . In vse to samo zato, da bi vam dali predstavo o tem, kako bi bili videti namigi orodij, če bi jih uporabljali v resničnih situacijah. Upajmo, da ste zdaj videli, kako lahko ti opisi orodij na povezavah delujejo v praksi, ko jih enkrat uporabite na svojem spletnem mestu ali projektu.
<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
ali
. data-bs-title
Ko
title
je uporabljen, ga bo Popper samodejno zamenjal z,
data-bs-title
ko bo element upodobljen.
Namigi orodij po meri
Dodano v v5.2.0Videz namigov lahko prilagodite s spremenljivkami CSS . Nastavimo razred po meri data-bs-custom-class="custom-tooltip"
za obseg našega videza po meri in ga uporabimo za preglasitev lokalne spremenljivke 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>
Navodila
Premaknite miškin kazalec nad spodnje gumbe, da vidite štiri smeri orodnih namigov: zgoraj, desno, spodaj in levo. Pri uporabi Bootstrap v RTL so navodila zrcaljena.
<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>
In z dodanim HTML-jem po meri:
<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>
Z SVG:
CSS
Spremenljivke
Dodano v v5.2.0Kot del Bootstrapovega razvijajočega se pristopa spremenljivk CSS zdaj opisi orodij uporabljajo lokalne spremenljivke CSS .tooltip
za izboljšano prilagajanje v realnem času. Vrednosti za spremenljivke CSS so nastavljene prek Sass, tako da je še vedno podprto tudi prilagajanje 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 spremenljivke
$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
Uporaba
Vtičnik orodnih namigov ustvari vsebino in oznake na zahtevo ter privzeto postavi namige orodij za njihov sprožilni element.
Sproži opis orodja prek JavaScripta:
const exampleEl = document.getElementById('example')
const tooltip = new bootstrap.Tooltip(exampleEl, options)
Preliv auto
inscroll
Položaj namiga orodja se poskuša samodejno spremeniti, ko ima nadrejeni vsebnikoverflow: auto
ali overflow: scroll
kot naš .table-responsive
, vendar še vedno ohranja položaj prvotne umestitve. Če želite odpraviti to težavo, nastavite boundary
možnost (za modifikator obračanja, ki uporablja popperConfig
možnost) na kateri koli HTMLElement, da preglasite privzeto vrednost, 'clippingParents'
na primer document.body
:
const tooltip = new bootstrap.Tooltip('#example', {
boundary: document.body // or document.querySelector('#boundary')
})
Markup
Zahtevana oznaka za opis orodja je le data
atribut in title
na elementu HTML, za katerega želite, da je opis orodja. Ustvarjena oznaka orodnega opisa je precej preprosta, čeprav zahteva položaj (privzeto nastavljen top
s strani vtičnika).
Omogočanje uporabe namigov orodij za uporabnike tipkovnic in podporne tehnologije
Dodate le namige orodij elementom HTML, ki so tradicionalno osredotočeni s tipkovnico in so interaktivni (kot so povezave ali kontrolniki obrazcev). Čeprav lahko poljubne elemente HTML (kot <span>
je s) omogočite fokusiranje z dodajanjem tabindex="0"
atributa, bo to dodalo potencialno nadležne in zmedene tabulatorske postanke na neinteraktivnih elementih za uporabnike tipkovnice, večina podpornih tehnologij pa trenutno ne objavi namiga orodja v tej situaciji. Poleg tega se ne zanašajte samo na hover
sprožilec za svoj opis orodja, saj bo tako uporabnikom tipkovnice nemogoče sprožiti vaše nasvete.
<!-- 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>
Onemogočeni elementi
Elementi z disabled
atributom niso interaktivni, kar pomeni, da jih uporabniki ne morejo izostriti, premakniti z miško ali klikniti, da bi sprožili opis orodja (ali pojavni pojav). Kot nadomestno rešitev boste želeli sprožiti namig orodja iz ovoja <div>
ali <span>
, v idealnem primeru narejenega za fokusiranje s tipkovnico z uporabo 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>
Opcije
Ker je možnosti mogoče posredovati prek podatkovnih atributov ali JavaScripta, lahko dodate ime možnosti v data-bs-
, kot v data-bs-animation="{value}"
. Prepričajte se, da ste spremenili vrsto malega črke imena možnosti iz " camelCase " v " kebab-case ", ko posredujete možnosti prek podatkovnih atributov. Na primer, uporabite data-bs-custom-class="beautifier"
namesto data-bs-customClass="beautifier"
.
Od Bootstrap 5.2.0 vse komponente podpirajo poskusni atribut rezerviranih podatkov, data-bs-config
ki lahko hrani preprosto konfiguracijo komponente kot niz JSON. Ko ima element atribute data-bs-config='{"delay":0, "title":123}'
in data-bs-title="456"
, bo končna title
vrednost 456
in ločeni atributi podatkov bodo preglasili vrednosti, podane na data-bs-config
. Poleg tega lahko obstoječi atributi podatkov hranijo vrednosti JSON, kot je data-bs-delay='{"show":0,"hide":150}'
.
sanitize
,
sanitizeFn
, in
allowList
ni mogoče zagotoviti z uporabo podatkovnih atributov.
Ime | Vrsta | Privzeto | Opis |
---|---|---|---|
allowList |
predmet | Privzeta vrednost | Objekt, ki vsebuje dovoljene atribute in oznake. |
animation |
logično | true |
Na opisu orodja uporabite bledeči prehod CSS. |
boundary |
niz, element | 'clippingParents' |
Meja omejitve prelivanja namiga orodja (velja samo za Popperjev modifikator preventOverflow). Privzeto je 'clippingParents' in lahko sprejme referenco HTMLElement (samo prek JavaScripta). Za več informacij se obrnite na dokumente Popper's detectOverflow . |
container |
niz, element, false | false |
Doda namig orodja določenemu elementu. Primer: container: 'body' . Ta možnost je še posebej uporabna, ker vam omogoča, da namig orodja postavite v tok dokumenta blizu sprožilnega elementa – kar bo preprečilo, da bi namig orodja med spreminjanjem velikosti okna lebdel stran od sprožilnega elementa. |
customClass |
niz, funkcija | '' |
Dodajte razrede v opis orodja, ko je prikazan. Upoštevajte, da bodo ti razredi dodani poleg vseh razredov, navedenih v predlogi. Če želite dodati več razredov, jih ločite s presledki: 'class-1 class-2' . Posredujete lahko tudi funkcijo, ki naj vrne en sam niz, ki vsebuje dodatna imena razredov. |
delay |
število, predmet | 0 |
Zakasnitev prikaza in skrivanja opisa orodja (ms)—ne velja za tip ročnega sprožilca. Če je navedena številka, se zakasnitev uporabi za skrij/prikaži. Struktura objekta je: delay: { "show": 500, "hide": 100 } . |
fallbackPlacements |
niz | ['top', 'right', 'bottom', 'left'] |
Določite nadomestne umestitve tako, da zagotovite seznam umestitev v nizu (po prednostnem vrstnem redu). Za več informacij glejte Popperjeve dokumente o vedenju . |
html |
logično | false |
Dovoli HTML v opisu orodja. Če je res, bodo oznake HTML v opisu orodja title upodobljene v opisu orodja. Če je nastavljeno na false, innerText bo lastnost uporabljena za vstavljanje vsebine v DOM. Če vas skrbijo napadi XSS, uporabite besedilo. |
offset |
polje, niz, funkcija | [0, 0] |
Odmik namiga orodja glede na cilj. V podatkovnih atributih lahko posredujete niz z vrednostmi, ločenimi z vejico, kot je: data-bs-offset="10,20" . Ko se funkcija uporablja za določanje odmika, se pokliče z objektom, ki kot prvi argument vsebuje poperjevo postavitev, referenco in poperjev rekt. Vozlišče sprožilnega elementa DOM je posredovano kot drugi argument. Funkcija mora vrniti matriko z dvema številoma: drsenje , razdalja . Za več informacij glejte Popperjevo dokumentacijo o offsetu . |
placement |
niz, funkcija | 'top' |
Kako postaviti opis orodja: samodejno, zgoraj, spodaj, levo, desno. Ko auto je naveden, bo dinamično preusmeril opis orodja. Ko se funkcija uporabi za določitev umestitve, se pokliče z vozliščem DOM z opisom orodja kot prvim argumentom in vozliščem prožilnega elementa DOM kot drugim. Kontekst this je nastavljen na primer orodnega opisa. |
popperConfig |
null, predmet, funkcija | null |
Če želite spremeniti privzeto konfiguracijo Popperja za Bootstrap, glejte Popperjeva konfiguracija . Ko se funkcija uporabi za ustvarjanje Popperjeve konfiguracije, se pokliče z objektom, ki vsebuje privzeto Popperjevo konfiguracijo Bootstrapa. Pomaga vam pri uporabi in združitvi privzetih nastavitev z vašo lastno konfiguracijo. Funkcija mora vrniti konfiguracijski objekt za Popper. |
sanitize |
logično | true |
Omogočite ali onemogočite čiščenje. Če je aktivirano 'template' , bodo možnosti 'content' in 'title' možnosti razčiščene. |
sanitizeFn |
null, funkcija | null |
Tukaj lahko zagotovite lastno funkcijo razkuževanja. To je lahko uporabno, če za izvajanje sanacije raje uporabljate namensko knjižnico. |
selector |
string, false | false |
Če je na voljo izbirnik, bodo predmeti namigov orodja dodeljeni navedenim ciljem. V praksi se to uporablja tudi za uporabo namigov orodij za dinamično dodane elemente DOM ( jQuery.on podpora). Oglejte si to številko in informativen primer . |
template |
vrvica | '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' |
Osnovni HTML za uporabo pri ustvarjanju opisa orodja. Namigi orodij title bodo vstavljeni v .tooltip-inner . .tooltip-arrow bo postala puščica opisa orodja. Zunanji ovojni element mora imeti .tooltip razred in role="tooltip" . |
title |
niz, element, funkcija | '' |
Privzeta vrednost naslova, če title atribut ni prisoten. Če je podana funkcija, bo klicana s this sklicem, nastavljenim na element, na katerega je pritrjen popover. |
trigger |
vrvica | 'hover focus' |
Kako se sproži opis orodja: klik, lebdenje, fokus, ročno. Lahko prenesete več sprožilcev; ločite jih s presledkom. 'manual' označuje, da se bo opis orodja sprožil programsko prek metod in .tooltip('show') ; te vrednosti ni mogoče kombinirati z nobenim drugim sprožilcem. samo po sebi bo povzročilo namige orodij, ki jih ni mogoče sprožiti prek tipkovnice, in jih je treba uporabiti le, če so prisotne alternativne metode za posredovanje istih informacij uporabnikom tipkovnice..tooltip('hide') .tooltip('toggle') 'hover' |
Atributi podatkov za posamezne namige orodij
Možnosti za posamezne namige orodij je mogoče določiti tudi z uporabo atributov podatkov, kot je razloženo zgoraj.
Uporaba funkcije zpopperConfig
const tooltip = new bootstrap.Tooltip(element, {
popperConfig(defaultBsPopperConfig) {
// const newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
Metode
Asinhrone metode in prehodi
Vse metode API so asinhrone in začnejo prehod . K klicatelju se vrnejo takoj, ko se prehod začne, vendar preden se konča . Poleg tega bo prezrt klic metode prehodne komponente .
Za več informacij si oglejte našo dokumentacijo JavaScript .
Metoda | Opis |
---|---|
disable |
Odstrani možnost prikaza namiga elementa. Namig orodja bo lahko prikazan samo, če bo znova omogočen. |
dispose |
Skrije in uniči opis orodja elementa (odstrani shranjene podatke o elementu DOM). Namigov orodij, ki uporabljajo delegiranje (ki so ustvarjeni z možnostjo selector ) , ni mogoče posamično uničiti na podrejenih sprožilnih elementih. |
enable |
Omogoča prikaz orodnega namig elementa. Namigi orodij so privzeto omogočeni. |
getInstance |
Statična metoda, ki vam omogoča pridobitev primerka opisa orodja, povezanega z elementom DOM, ali ustvarjanje novega, če ni bil inicializiran. |
getOrCreateInstance |
Statična metoda, ki vam omogoča pridobitev primerka opisa orodja, povezanega z elementom DOM, ali ustvarjanje novega, če ni bil inicializiran. |
hide |
Skrije namig elementa. Vrne se klicatelju, preden je bil opis orodja dejansko skrit (tj. preden se hidden.bs.tooltip zgodi dogodek). To velja za »ročno« proženje namiga orodja. |
setContent |
Omogoča spreminjanje vsebine opisa orodja po njegovi inicializaciji. |
show |
Razkrije namig elementa. Vrne se k klicatelju, preden je bil opis orodja dejansko prikazan (tj. preden se shown.bs.tooltip zgodi dogodek). To velja za »ročno« proženje namiga orodja. Namigi z naslovi ničelne dolžine niso nikoli prikazani. |
toggle |
Preklopi opis orodja elementa. Vrne se klicatelju, preden je bil opis orodja dejansko prikazan ali skrit (tj. preden se zgodi dogodek shown.bs.tooltip ali ). hidden.bs.tooltip To velja za »ročno« proženje namiga orodja. |
toggleEnabled |
Preklopi zmožnost prikaza ali skritja opisa orodja elementa. |
update |
Posodobi položaj opisa orodja elementa. |
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance
// setContent example
tooltip.setContent({ '.tooltip-inner': 'another title' })
setContent
sprejme
object
argument, pri čemer je vsak ključ lastnosti veljaven
string
izbirnik znotraj predloge pojavnega okna, vsaka povezana vrednost lastnosti pa je lahko
string
|
element
|
function
|
null
Dogodki
Dogodek | Opis |
---|---|
hide.bs.tooltip |
Ta dogodek se sproži takoj, ko hide je bila poklicana metoda primerka. |
hidden.bs.tooltip |
Ta dogodek se sproži, ko se pojavni pomik neha skriti pred uporabnikom (počakal bo, da se zaključijo prehodi CSS). |
inserted.bs.tooltip |
Ta dogodek se sproži po show.bs.tooltip dogodku, ko je predloga orodnega opisa dodana v DOM. |
show.bs.tooltip |
Ta dogodek se sproži takoj, ko show se pokliče metoda primerka. |
shown.bs.tooltip |
Ta dogodek se sproži, ko postane pojavni element viden uporabniku (počakal bo, da se zaključijo prehodi CSS). |
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)
myTooltipEl.addEventListener('hidden.bs.tooltip', () => {
// do something...
})
tooltip.hide()