Prijeđi na glavni sadržaj Prijeđi na navigaciju dokumentima
Check
in English

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.jsili koristiti onaj bootstrap.bundle.min.jskoji 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 .disabledili disabledmoraju 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.

Prema zadanim postavkama, ova komponenta koristi ugrađeni alat za čišćenje sadržaja koji uklanja sve HTML elemente koji nisu izričito dopušteni. Za više pojedinosti pogledajte odjeljak sanitizera u našoj JavaScript dokumentaciji .
Učinak animacije ove komponente ovisi o prefers-reduced-motionmedijskom 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-toggleatributima, ovako:

const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))

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.

html
<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>
Slobodno koristite ili titleili data-bs-titleu svom HTML-u. Kada titlese koristi, Popper će ga automatski zamijeniti data-bs-titlekada se element renderira.

Prilagođeni opisi alata

Dodano u v5.2.0

Izgled 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);
}
html
<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.0

Kao dio Bootstrapovog pristupa CSS varijablama koji se razvija, opisi sada koriste lokalne CSS varijable .tooltipza 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 autoiscroll

Položaj opisa alata pokušava se automatski promijeniti kada nadređeni spremnik ima overflow: autoili overflow: scrollpoput našeg .table-responsive, ali i dalje zadržava izvorni položaj položaja. Da biste to riješili, postavite boundaryopciju (za modifikator okretanja koji koristi popperConfigopciju) 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 dataatribut, a titlena HTML elementu želite imati opis alata. Generirano označavanje opisa alata je prilično jednostavno, iako zahtijeva poziciju (prema zadanim postavkama, postavljena topod 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 hovernjega 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 disabledatributom 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".

html
<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-configkoji 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 titlevrijednost ć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}'.

Imajte na umu da se iz sigurnosnih razloga opcije sanitize, sanitizeFn, i allowListne 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 titlebit će prikazane u opisu alata. Ako je netočno, innerTextsvojstvo ć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 autoje 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 thisje 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.onpodrš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 titlebit će umetnut u .tooltip-inner. .tooltip-arrowpostat će strelica opisa alata. Najudaljeniji element omotača trebao bi imati .tooltipklasu i role="tooltip".
title niz, element, funkcija '' Zadana vrijednost naslova ako titleatribut nije prisutan. Ako je dana funkcija, bit će pozvana s thisreferencom 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.tooltipdogađ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.tooltipdogađ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.tooltipili ). hidden.bs.tooltipOvo 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' })
Metoda setContentprihvaća objectargument, gdje je svaki ključ svojstva važeći stringselektor 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 hidepozivanja 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.tooltipdogađaja kada je predložak opisa alata dodan u DOM.
show.bs.tooltip Ovaj događaj aktivira se odmah kada showse 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()