Opisi alata
Dokumentacija i primjeri za dodavanje prilagođenih Bootstrap alatnih opisa s CSS-om i JavaScriptom koristeći CSS3 za animacije i data-bs-atribute za lokalnu pohranu naslova.
Pregled
Stvari koje treba znati kada koristite dodatak s opisom alata:
- Opisi se za pozicioniranje oslanjaju na biblioteku treće strane Popper . Morate uključiti popper.min.js prije
bootstrap.js
ili koristiti onajbootstrap.bundle.min.js
koji sadrži Popper. - Opisi alata su opt-in zbog performansi, tako da ih morate sami pokrenuti .
- Opisi s naslovima nulte duljine nikad se ne prikazuju.
- Navedite
container: 'body'
kako biste izbjegli probleme s generiranjem u složenijim komponentama (poput naših ulaznih grupa, grupa gumba itd.). - Pokretanje opisa alata na skrivenim elementima neće raditi.
- Opisi za elemente
.disabled
ilidisabled
moraju se pokrenuti na elementu omotača. - Kada se pokreću iz hiperveza koje se protežu kroz više redaka, opisi alata bit će centrirani. Koristite
white-space: nowrap;
na svom<a>
s kako biste izbjegli ovakvo ponašanje. - Opisi alata moraju biti skriveni prije nego što se njihovi odgovarajući elementi uklone iz DOM-a.
- Opisi alata mogu se pokrenuti zahvaljujući elementu unutar DOM-a u sjeni.
Jeste li sve to shvatili? Sjajno, pogledajmo kako rade na nekim primjerima.
prefers-reduced-motion
medijskom upitu. Pogledajte odjeljak
smanjenog kretanja u našoj dokumentaciji o pristupačnosti .
Primjeri
Omogući opise alata
Kao što je gore spomenuto, morate pokrenuti opise alata prije nego što se mogu koristiti. Jedan od načina da se inicijaliziraju svi opisi alata na stranici bio bi da se odaberu prema njihovim data-bs-toggle
atributima, ovako:
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
Opisi na poveznicama
Zadržite pokazivač iznad donjih veza da biste vidjeli savjete:
Tekst rezerviranog mjesta za prikaz nekih umetnutih veza s opisima alata. Ovo je sada samo punilo, a ne ubojica. Sadržaj postavljen ovdje samo da oponaša prisutnost pravog teksta . I sve to samo da biste dobili ideju o tome kako bi opisi alata izgledali kada bi se koristili u stvarnim situacijama. Nadamo se da ste sada vidjeli kako ovi opisi alata na vezama mogu funkcionirati u praksi, nakon što ih upotrijebite na vlastitom web- mjestu ili 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
ili
data-bs-title
u svom HTML-u. Kada
title
se koristi, Popper će ga automatski zamijeniti
data-bs-title
kada se element renderira.
Prilagođeni opisi alata
Dodano u v5.2.0Izgled opisa alata možete prilagoditi pomoću CSS varijabli . Postavljamo prilagođenu klasu data-bs-custom-class="custom-tooltip"
za opseg našeg prilagođenog izgleda i koristimo je za nadjačavanje lokalne CSS varijable.
.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>
Upute
Zadržite pokazivač miša iznad gumba u nastavku da biste vidjeli četiri smjera opisa alata: gore, desno, dolje i lijevo. Upute se preslikavaju kada koristite Bootstrap u RTL-u.
<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 s dodanim prilagođenim HTML-om:
<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>
Uz SVG:
CSS
Varijable
Dodano u v5.2.0Kao dio Bootstrapovog pristupa CSS varijablama koji se razvija, opisi sada koriste lokalne CSS varijable .tooltip
za poboljšanu prilagodbu u stvarnom vremenu. Vrijednosti za CSS varijable postavljaju se putem Sass-a, tako da je i dalje podržana prilagodba Sass-a.
--#{$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 varijable
$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
Korištenje
Dodatak za opis alata generira sadržaj i oznake na zahtjev, a prema zadanim postavkama postavlja opise alata nakon elementa pokretača.
Pokreni opis alata putem JavaScripta:
const exampleEl = document.getElementById('example')
const tooltip = new bootstrap.Tooltip(exampleEl, options)
Preljev auto
iscroll
Položaj opisa alata pokušava se automatski promijeniti kada nadređeni spremnik ima overflow: auto
ili overflow: scroll
poput našeg .table-responsive
, ali i dalje zadržava izvorni položaj položaja. Da biste to riješili, postavite boundary
opciju (za modifikator okretanja koji koristi popperConfig
opciju) na bilo koji HTMLElement da nadjačate zadanu vrijednost, 'clippingParents'
kao što je document.body
:
const tooltip = new bootstrap.Tooltip('#example', {
boundary: document.body // or document.querySelector('#boundary')
})
Markup
Potrebna oznaka za opis alata samo je data
atribut, a title
na HTML elementu želite imati opis alata. Generirano označavanje opisa alata je prilično jednostavno, iako zahtijeva poziciju (prema zadanim postavkama, postavljena top
od strane dodatka).
Učinite da opisi alata rade za korisnike tipkovnice i pomoćne tehnologije
Trebali biste samo dodavati opise alata HTML elementima koji se tradicionalno mogu fokusirati tipkovnicom i koji su interaktivni (kao što su veze ili kontrole obrazaca). Iako proizvoljni HTML elementi (kao što <span>
je s) mogu biti fokusirani dodavanjem tabindex="0"
atributa, to će dodati potencijalno dosadne i zbunjujuće tabulatore na neinteraktivnim elementima za korisnike tipkovnice, a većina pomoćnih tehnologija trenutno ne najavljuje alatni opis u ovoj situaciji. Osim toga, nemojte se oslanjati samo na hover
njega kao na okidač za svoj opis alata, jer će to učiniti vaše opise alata nemogućim za pokretanje za korisnike tipkovnice.
<!-- 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>
Onemogućeni elementi
Elementi s disabled
atributom nisu interaktivni, što znači da ih korisnici ne mogu fokusirati, lebdjeti pokazivačem ili kliknuti kako bi pokrenuli opis alata (ili skočni prozor). Kao zaobilazno rješenje, htjet ćete pokrenuti opis alata iz omotača <div>
ili <span>
, idealno napravljenog za fokusiranje na tipkovnici, pomoću 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>
Mogućnosti
Kako se opcije mogu proslijediti putem atributa podataka ili JavaScripta, možete dodati naziv opcije u data-bs-
, kao u data-bs-animation="{value}"
. Obavezno promijenite vrstu velikih i malih slova naziva opcije iz “ camelCase ” u “ kebab-case ” kada prosljeđujete opcije putem atributa podataka. Na primjer, koristite data-bs-custom-class="beautifier"
umjesto data-bs-customClass="beautifier"
.
Od Bootstrapa 5.2.0, sve komponente podržavaju eksperimentalni atribut rezerviranih podataka data-bs-config
koji može sadržavati jednostavnu konfiguraciju komponente kao JSON niz. Kada element ima atribute data-bs-config='{"delay":0, "title":123}'
i data-bs-title="456"
, konačna title
vrijednost će biti 456
, a zasebni atributi podataka nadjačat će vrijednosti dane na data-bs-config
. Osim toga, postojeći atributi podataka mogu sadržavati JSON vrijednosti poput data-bs-delay='{"show":0,"hide":150}'
.
sanitize
,
sanitizeFn
, i
allowList
ne mogu isporučiti pomoću atributa podataka.
Ime | Tip | Zadano | Opis |
---|---|---|---|
allowList |
objekt | Zadana vrijednost | Objekt koji sadrži dopuštene atribute i oznake. |
animation |
Booleov | true |
Primijenite CSS fade prijelaz na tooltip. |
boundary |
niz, element | 'clippingParents' |
Granica ograničenja prelijevanja opisa alata (odnosi se samo na Popperov modifikator za sprečavanje preljeva). Prema zadanim postavkama 'clippingParents' prihvaća i može prihvatiti referencu HTMLElement (samo putem JavaScripta). Za više informacija pogledajte Popper's detectOverflow dokumente . |
container |
string, element, false | false |
Dodaje opis alata određenom elementu. Primjer: container: 'body' . Ova je opcija posebno korisna jer vam omogućuje da pozicionirate opis alata u toku dokumenta u blizini elementa pokretača - što će spriječiti da opis alata lebdi od elementa pokretača tijekom promjene veličine prozora. |
customClass |
niz, funkcija | '' |
Dodajte klase u opis alata kada se prikaže. Imajte na umu da će ove klase biti dodane uz sve klase navedene u predlošku. Za dodavanje više klasa, odvojite ih razmacima: 'class-1 class-2' . Također možete proslijediti funkciju koja bi trebala vratiti jedan niz koji sadrži dodatna imena klasa. |
delay |
broj, predmet | 0 |
Odgoda prikazivanja i skrivanja opisa alata (ms)—ne odnosi se na vrstu ručnog okidača. Ako je naveden broj, odgoda se primjenjuje na skrivanje/prikazivanje. Struktura objekta je: delay: { "show": 500, "hide": 100 } . |
fallbackPlacements |
niz | ['top', 'right', 'bottom', 'left'] |
Definirajte zamjenske položaje pružanjem popisa položaja u nizu (redoslijedom preferencija). Za više informacija pogledajte Popperovu dokumentaciju o ponašanju . |
html |
Booleov | false |
Dopusti HTML u opisu alata. Ako je istina, HTML oznake u opisu alata title bit će prikazane u opisu alata. Ako je netočno, innerText svojstvo će se koristiti za umetanje sadržaja u DOM. Upotrijebite tekst ako ste zabrinuti zbog XSS napada. |
offset |
niz, niz, funkcija | [0, 0] |
Pomak opisa alata u odnosu na cilj. Možete proslijediti niz u atributima podataka s vrijednostima odvojenim zarezima kao što su: data-bs-offset="10,20" . Kada se funkcija koristi za određivanje pomaka, ona se poziva s objektom koji sadrži popper položaj, referencu i popper rects kao prvi argument. DOM čvor pokretačkog elementa prosljeđuje se kao drugi argument. Funkcija mora vratiti niz s dva broja: proklizavanje , udaljenost . Za više informacija pogledajte Popperovu offset dokumentaciju . |
placement |
niz, funkcija | 'top' |
Kako postaviti opis alata: automatski, gore, dolje, lijevo, desno. Kada auto je navedeno, dinamički će preusmjeriti opis alata. Kada se funkcija koristi za određivanje položaja, poziva se s DOM čvorom alata kao prvim argumentom i DOM čvorom pokretačkog elementa kao drugim. Kontekst this je postavljen na instancu opisa alata. |
popperConfig |
null, objekt, funkcija | null |
Za promjenu Bootstrapove zadane Popper konfiguracije, pogledajte Popperovu konfiguraciju . Kada se funkcija koristi za stvaranje Popper konfiguracije, poziva se s objektom koji sadrži Bootstrapovu zadanu Popper konfiguraciju. Pomaže vam koristiti i spojiti zadane postavke s vlastitom konfiguracijom. Funkcija mora vratiti konfiguracijski objekt za Popper. |
sanitize |
Booleov | true |
Omogućite ili onemogućite dezinfekciju. Ako je aktivirano 'template' , 'content' i 'title' opcije će biti očišćene. |
sanitizeFn |
nula, funkcija | null |
Ovdje možete ponuditi vlastitu funkciju dezinfekcije. Ovo može biti korisno ako radije koristite namjensku knjižnicu za izvođenje dezinfekcije. |
selector |
niz, lažan | false |
Ako je selektor naveden, objekti opisa alata bit će delegirani navedenim ciljevima. U praksi se ovo također koristi za primjenu opisa alata na dinamički dodane DOM elemente ( jQuery.on podrška). Pogledajte ovo izdanje i informativni primjer . |
template |
niz | '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' |
Osnovni HTML za korištenje pri izradi opisa alata. Opis alata title bit će umetnut u .tooltip-inner . .tooltip-arrow postat će strelica opisa alata. Najudaljeniji element omotača trebao bi imati .tooltip klasu i role="tooltip" . |
title |
niz, element, funkcija | '' |
Zadana vrijednost naslova ako title atribut nije prisutan. Ako je dana funkcija, bit će pozvana s this referencom postavljenom na element na koji je popover priložen. |
trigger |
niz | 'hover focus' |
Kako se aktivira opis alata: klik, lebdenje, fokus, ručno. Možete proći više okidača; odvojite ih razmakom. 'manual' označava da će se opis alata pokrenuti programski putem metoda i .tooltip('show') ; ova se vrijednost ne može kombinirati ni s jednim drugim okidačem. sama po sebi rezultirat će opisima alata koji se ne mogu pokrenuti putem tipkovnice i trebali bi se koristiti samo ako su prisutne alternativne metode za prenošenje istih informacija korisnicima tipkovnice..tooltip('hide') .tooltip('toggle') 'hover' |
Atributi podataka za pojedinačne opise alata
Opcije za pojedinačne opise alata mogu se alternativno odrediti korištenjem atributa podataka, kao što je gore objašnjeno.
Korištenje funkcije sapopperConfig
const tooltip = new bootstrap.Tooltip(element, {
popperConfig(defaultBsPopperConfig) {
// const newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
Metode
Asinkrone metode i prijelazi
Sve API metode su asinkrone i pokreću prijelaz . Vraćaju se pozivatelju čim prijelaz započne, ali prije nego što završi . Osim toga, poziv metode na prijelaznoj komponenti bit će zanemaren .
Pogledajte našu JavaScript dokumentaciju za više informacija .
metoda | Opis |
---|---|
disable |
Uklanja mogućnost prikazivanja opisa elementa. Opis alata moći će se prikazati samo ako je ponovno omogućen. |
dispose |
Skriva i uništava opis elementa (uklanja pohranjene podatke na DOM elementu). Opisi alata koji koriste delegiranje (koji se stvaraju pomoću opcije selector ) ne mogu se pojedinačno uništiti na elementima okidača potomaka. |
enable |
Daje mogućnost prikazivanja opisa elementa. Opisi su prema zadanim postavkama omogućeni. |
getInstance |
Statička metoda koja vam omogućuje dobivanje instance opisa alata povezane s DOM elementom ili stvaranje novog u slučaju da nije inicijaliziran. |
getOrCreateInstance |
Statička metoda koja vam omogućuje dobivanje instance opisa alata povezane s DOM elementom ili stvaranje novog u slučaju da nije inicijaliziran. |
hide |
Skriva opis elementa. Vraća se pozivatelju prije nego što je opis alata zapravo skriven (tj. prije nego što se hidden.bs.tooltip događaj dogodi). Ovo se smatra "ručnim" pokretanjem opisa alata. |
setContent |
Omogućuje promjenu sadržaja opisa alata nakon njegove inicijalizacije. |
show |
Otkriva opis elementa. Vraća se pozivatelju prije nego što se alatni opis stvarno prikaže (tj. prije nego što se shown.bs.tooltip događaj dogodi). Ovo se smatra "ručnim" pokretanjem opisa alata. Opisi s naslovima nulte duljine nikad se ne prikazuju. |
toggle |
Prebacuje opis elementa. Vraća se pozivatelju prije nego što se alatni opis stvarno prikaže ili sakrije (tj. prije nego što se dogodi događaj shown.bs.tooltip ili ). hidden.bs.tooltip Ovo se smatra "ručnim" pokretanjem opisa alata. |
toggleEnabled |
Isključuje mogućnost prikazivanja ili skrivanja opisa elementa. |
update |
Ažurira položaj opisa elementa. |
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance
// setContent example
tooltip.setContent({ '.tooltip-inner': 'another title' })
setContent
prihvaća
object
argument, gdje je svaki ključ svojstva važeći
string
selektor unutar popover predloška, a svaka povezana vrijednost svojstva može biti
string
|
element
|
function
|
null
Događaji
Događaj | Opis |
---|---|
hide.bs.tooltip |
Ovaj se događaj aktivira odmah nakon hide pozivanja metode instance. |
hidden.bs.tooltip |
Ovaj se događaj pokreće kada popover više nije skriven od korisnika (pričekat će se da se dovrše CSS prijelazi). |
inserted.bs.tooltip |
Ovaj se događaj pokreće nakon show.bs.tooltip događaja kada je predložak opisa alata dodan u DOM. |
show.bs.tooltip |
Ovaj događaj aktivira se odmah kada show se pozove metoda instance. |
shown.bs.tooltip |
Ovaj se događaj pokreće kada je popover vidljiv korisniku (pričekat će se da se CSS prijelazi završe). |
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)
myTooltipEl.addEventListener('hidden.bs.tooltip', () => {
// do something...
})
tooltip.hide()