Preskočiť na hlavný obsah Preskočiť na navigáciu v dokumentoch
Check
in English

Popisy

Dokumentácia a príklady na pridávanie vlastných tipov pre bootstrap s CSS a JavaScript pomocou CSS3 pre animácie a data-bs-atribútov pre lokálne ukladanie titulkov.

Prehľad

Čo by ste mali vedieť pri používaní doplnku tooltip:

  • Popisy sa pri určovaní polohy spoliehajú na knižnicu Popper tretej strany . Popper.min.js musíte zahrnúť pred bootstrap.js, alebo použiť ten bootstrap.bundle.min.js, ktorý obsahuje Popper.
  • Popisy sú aktivované z dôvodov výkonu, takže ich musíte inicializovať sami .
  • Popisy s názvami s nulovou dĺžkou sa nikdy nezobrazujú.
  • Špecifikujte container: 'body', aby ste sa vyhli problémom s vykresľovaním v zložitejších komponentoch (ako sú naše vstupné skupiny, skupiny tlačidiel atď.).
  • Spúšťanie popisov na skrytých prvkoch nebude fungovať.
  • Popisy prvkov .disabledalebo disabledprvkov musia byť spustené na prvku obalu.
  • Pri spustení z hypertextových odkazov, ktoré presahujú viacero riadkov, budú popisy nástrojov vycentrované. Použite white-space: nowrap;na <a>s, aby ste sa vyhli tomuto správaniu.
  • Popisy nástrojov musia byť skryté pred odstránením príslušných prvkov z modelu DOM.
  • Popisy nástrojov možno spustiť vďaka prvku vo vnútri tieňového modelu DOM.

Máš to všetko? Skvelé, pozrime sa, ako fungujú s niekoľkými príkladmi.

Tento komponent štandardne používa vstavaný dezinfekčný prostriedok na obsah, ktorý odstraňuje všetky prvky HTML, ktoré nie sú výslovne povolené. Ďalšie podrobnosti nájdete v sekcii dezinfekcie v našej dokumentácii JavaScript .
Animačný efekt tohto komponentu závisí od prefers-reduced-motionmediálneho dopytu. Pozrite si časť so zníženým pohybom v našej dokumentácii o prístupnosti .

Príklady

Povoliť popisy

Ako už bolo spomenuté vyššie, pred použitím musíte inicializovať popisy nástrojov. Jedným zo spôsobov, ako inicializovať všetky popisy na stránke, by bolo vybrať ich podľa ich data-bs-toggleatribútu, napríklad:

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

Umiestnením kurzora myši na odkazy nižšie zobrazíte popisy:

Zástupný text na demonštráciu niektorých vložených odkazov s popismi. Toto je teraz len výplň, žiadny zabijak. Obsah, ktorý je tu umiestnený, aby napodobnil prítomnosť skutočného textu . A to všetko len preto, aby ste mali predstavu o tom, ako by popisky vyzerali pri použití v reálnych situáciách. Dúfame, že ste teraz videli, ako môžu tieto tipy pre odkazy fungovať v praxi, keď ich použijete na svojej vlastnej stránke alebo projekte.

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>
Vo svojom HTML môžete použiť buď titlealebo . data-bs-titleKeď titlesa použije, Popper ho automaticky nahradí data-bs-titlepri vykreslení prvku.

Vlastné popisy

Pridané vo verzii 5.2.0

Vzhľad popisov môžete prispôsobiť pomocou premenných CSS . Nastavili sme vlastnú triedu s data-bs-custom-class="custom-tooltip"na rozsah nášho vlastného vzhľadu a použili sme ju na prepísanie lokálnej premennej CSS.

.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>

Smery

Umiestnením kurzora myši na tlačidlá nižšie zobrazíte štyri smery popisov: hore, vpravo, dole a vľavo. Pokyny sa zrkadlia pri použití Bootstrapu v 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>

A s pridaným vlastným 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>

S SVG:

CSS

Premenné

Pridané vo verzii 5.2.0

Ako súčasť vyvíjajúceho sa prístupu premenných CSS od Bootstrapu, popisy teraz používajú lokálne premenné CSS na .tooltipvylepšené prispôsobenie v reálnom čase. Hodnoty pre premenné CSS sa nastavujú cez Sass, takže prispôsobenie Sass je stále podporované.

  --#{$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 premenné

$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

Použitie

Doplnok tooltip generuje obsah a značky na požiadanie a v predvolenom nastavení umiestňuje popisky za ich spúšťací prvok.

Spustite popis pomocou JavaScriptu:

const exampleEl = document.getElementById('example')
const tooltip = new bootstrap.Tooltip(exampleEl, options)
Pretečenie autoascroll

Pozícia popisku sa pokúsi automaticky zmeniť, keď nadradený kontajneroverflow: autoalebo sa overflow: scrollpáči nášmu .table-responsive, ale stále si zachováva pôvodné umiestnenie. Ak to chcete vyriešiť, nastavte boundaryvoľbu (pre modifikátor prevrátenia pomocou popperConfigvoľby) na ľubovoľný HTMLElement, čím prepíšete predvolenú hodnotu, 'clippingParents'ako napríklad document.body:

const tooltip = new bootstrap.Tooltip('#example', {
  boundary: document.body // or document.querySelector('#boundary')
})

Označenie

Požadované označenie pre popis je iba dataatribút a titlena elemente HTML chcete mať popis. Vygenerované označenie popisku je pomerne jednoduché, aj keď vyžaduje pozíciu (v predvolenom nastavení topju doplnok nastaví na hodnotu).

Zabezpečte, aby popisy fungovali pre používateľov klávesnice a asistenčných technológií

Popisy nástrojov by ste mali pridávať len k prvkom HTML, ktoré sú tradične zamerané na klávesnicu a sú interaktívne (napríklad odkazy alebo ovládacie prvky formulárov). Hoci ľubovoľné prvky HTML (napríklad <span>s) je možné upraviť tak, aby bolo možné zamerať ich pridaním tabindex="0"atribútu, pre používateľov klávesnice to pridajú potenciálne nepríjemné a mätúce zarážky tabulátora na neinteraktívnych prvkoch a väčšina asistenčných technológií v súčasnosti v tejto situácii neoznamuje popis. Okrem toho sa nespoliehajte iba na hoverspúšťač pre váš popis, pretože to znemožní spustenie vašich popisov pre používateľov klávesnice.

<!-- 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>

Zakázané prvky

Prvky s disabledatribútom nie sú interaktívne, čo znamená, že používatelia na ne nemôžu zaostriť, umiestniť kurzor myši alebo na ne kliknúť, aby vyvolali popis (alebo kontextové okno). Ako riešenie budete chcieť spustiť popis z obalu <div>alebo <span>, ideálne tak, aby bolo možné zamerať sa na klávesnicu pomocou 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>

možnosti

Keďže možnosti možno odovzdať prostredníctvom atribútov údajov alebo jazyka JavaScript, môžete pridať názov možnosti k data-bs-, ako v data-bs-animation="{value}". Pri odovzdávaní možností cez atribúty údajov nezabudnite zmeniť typ prípadu názvu možnosti z „ camelCase “ na „ kebab-case “. Napríklad použite data-bs-custom-class="beautifier"namiesto data-bs-customClass="beautifier".

Od Bootstrapu 5.2.0 všetky komponenty podporujú experimentálny atribút rezervovaných údajov data-bs-config, ktorý môže obsahovať jednoduchú konfiguráciu komponentu ako reťazec JSON. Ak má prvok atribúty data-bs-config='{"delay":0, "title":123}'a data-bs-title="456", konečná titlehodnota bude 456a samostatné atribúty údajov prepíšu hodnoty uvedené na data-bs-config. Existujúce dátové atribúty môžu navyše obsahovať hodnoty JSON ako data-bs-delay='{"show":0,"hide":150}'.

Upozorňujeme, že z bezpečnostných dôvodov nie je možné zadať voľby sanitize, sanitizeFn, a allowListpomocou atribútov údajov.
názov Typ Predvolené Popis
allowList objekt Predvolená hodnota Objekt, ktorý obsahuje povolené atribúty a značky.
animation boolovská hodnota true Použite prechod zoslabovania CSS na popis.
boundary reťazec, prvok 'clippingParents' Hranica obmedzenia pretečenia popisku (platí len pre Popperov modifikátor preventOverflow). V predvolenom nastavení je 'clippingParents'a môže akceptovať referenciu HTMLElement (iba cez JavaScript). Ďalšie informácie nájdete v dokumentoch Popper's detectOverflow .
container reťazec, prvok, nepravda false Pridá popis ku konkrétnemu prvku. Príklad: container: 'body'. Táto možnosť je užitočná najmä v tom, že vám umožňuje umiestniť popis v toku dokumentu v blízkosti spúšťacieho prvku – čo zabráni tomu, aby sa popisok vznášal preč od spúšťacieho prvku počas zmeny veľkosti okna.
customClass reťazec, funkcia '' Pridajte triedy do popisku, keď sa zobrazí. Všimnite si, že tieto triedy budú pridané k všetkým triedam špecifikovaným v šablóne. Ak chcete pridať viacero tried, oddeľte ich medzerami: 'class-1 class-2'. Môžete tiež odovzdať funkciu, ktorá by mala vrátiť jeden reťazec obsahujúci ďalšie názvy tried.
delay číslo, objekt 0 Oneskorenie zobrazenia a skrytia popisku (ms) – netýka sa manuálneho typu spúšťania. Ak je zadané číslo, oneskorenie sa použije na skrytie/zobrazenie. Štruktúra objektu je: delay: { "show": 500, "hide": 100 }.
fallbackPlacements pole ['top', 'right', 'bottom', 'left'] Definujte záložné umiestnenia poskytnutím zoznamu umiestnení v poli (v poradí podľa preferencie). Ďalšie informácie nájdete v dokumentoch o správaní Poppera .
html boolovská hodnota false Povoliť HTML v popise. Ak je pravda, značky HTML v popise titlesa vykreslia v popise. Ak je hodnota false, innerTextvlastnosť sa použije na vloženie obsahu do DOM. Ak sa obávate útokov XSS, použite text.
offset pole, reťazec, funkcia [0, 0] Odsadenie popisku vzhľadom na jeho cieľ. V atribútoch údajov môžete zadať reťazec s hodnotami oddelenými čiarkou, ako napríklad: data-bs-offset="10,20". Keď sa funkcia používa na určenie posunu, volá sa s objektom obsahujúcim umiestnenie popper, referenciu a popper rects ako svoj prvý argument. Uzol DOM spúšťacieho prvku sa odovzdá ako druhý argument. Funkcia musí vrátiť pole s dvoma číslami: skiding , distance . Ďalšie informácie nájdete v dokumentoch Popper's ofset .
placement reťazec, funkcia 'top' Ako umiestniť popis: automaticky, hore, dole, doľava, doprava. Keď autoje zadaný, dynamicky zmení orientáciu popisku. Keď sa na určenie umiestnenia použije funkcia, volá sa s popisom uzla DOM ako jej prvým argumentom a spúšťacím prvkom uzlom DOM ako jej druhým. Kontext thisje nastavený na inštanciu popisu.
popperConfig null, objekt, funkcia null Ak chcete zmeniť predvolenú konfiguráciu Popper pre Bootstrap, pozrite si konfiguráciu Poppera . Keď sa funkcia používa na vytvorenie konfigurácie Popper, volá sa s objektom, ktorý obsahuje predvolenú konfiguráciu Popper Bootstrapu. Pomôže vám použiť a zlúčiť predvolené nastavenie s vašou vlastnou konfiguráciou. Funkcia musí vrátiť konfiguračný objekt pre Popper.
sanitize boolovská hodnota true Povoliť alebo zakázať dezinfekciu. Ak je aktivovaný 'template', 'content'a 'title'možnosti budú dezinfikované.
sanitizeFn null, funkcia null Tu si môžete dodať vlastnú funkciu dezinfekcie. To môže byť užitočné, ak uprednostňujete použitie špeciálnej knižnice na vykonanie dezinfekcie.
selector reťazec, nepravda false Ak je k dispozícii selektor, objekty popisov budú delegované na zadané ciele. V praxi sa to používa aj na aplikáciu tooltipov na dynamicky pridávané prvky DOM ( jQuery.onpodpora). Pozrite si tento problém a informatívny príklad .
template reťazec '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' Základné HTML, ktoré sa má použiť pri vytváraní popisku. Popis titlebude vložený do súboru .tooltip-inner. .tooltip-arrowsa zmení na šípku popisu. Prvok vonkajšieho obalu by mal mať .tooltiptriedu a role="tooltip".
title reťazec, prvok, funkcia '' Predvolená hodnota názvu, ak titleatribút nie je prítomný. Ak je zadaná funkcia, bude volaná s thisnastavenou referenciou na prvok, ku ktorému je kontextové okno pripojené.
trigger reťazec 'hover focus' Ako sa spúšťa popis: kliknutie, kurzor myši, zaostrenie, manuálne. Môžete prejsť viacerými spúšťačmi; oddeľte ich medzerou. 'manual'označuje, že popis bude spustený programovo prostredníctvom metód .tooltip('show'), .tooltip('hide')a ; .tooltip('toggle')túto hodnotu nemožno kombinovať so žiadnym iným spúšťačom. 'hover'sám osebe bude mať za následok popisy nástrojov, ktoré sa nedajú spustiť pomocou klávesnice a mali by sa používať iba vtedy, ak existujú alternatívne spôsoby prenosu rovnakých informácií pre používateľov klávesnice.

Atribúty údajov pre jednotlivé popisy

Možnosti pre jednotlivé popisy nástrojov možno alternatívne špecifikovať pomocou atribútov údajov, ako je vysvetlené vyššie.

Použitie funkcie spopperConfig

const tooltip = new bootstrap.Tooltip(element, {
  popperConfig(defaultBsPopperConfig) {
    // const newPopperConfig = {...}
    // use defaultBsPopperConfig if needed...
    // return newPopperConfig
  }
})

Metódy

Asynchrónne metódy a prechody

Všetky metódy API sú asynchrónne a spúšťajú prechod . Vrátia sa k volajúcemu hneď po spustení prechodu, ale skôr, ako sa skončí . Okrem toho bude volanie metódy na prechodovom komponente ignorované .

Viac informácií nájdete v našej dokumentácii JavaScript .

Metóda Popis
disable Odstráni možnosť zobrazenia popisu prvku. Popis bude možné zobraziť iba vtedy, ak bude znova povolený.
dispose Skryje a zničí popis prvku (odstráni uložené údaje v prvku DOM). Popisy, ktoré používajú delegovanie (ktoré sú vytvorené pomocou voľby ) selector, nemožno jednotlivo zničiť na podradených spúšťacích prvkoch.
enable Umožňuje zobraziť popis prvku. Popisy sú predvolene povolené.
getInstance Statická metóda, ktorá vám umožňuje získať inštanciu popisku priradenú k prvku DOM alebo vytvoriť novú v prípade, že nebola inicializovaná.
getOrCreateInstance Statická metóda, ktorá vám umožňuje získať inštanciu popisku priradenú k prvku DOM alebo vytvoriť novú v prípade, že nebola inicializovaná.
hide Skryje popis prvku. Vráti sa k volajúcemu skôr, ako bol popis skutočne skrytý (tj pred výskytom hidden.bs.tooltipudalosti). Toto sa považuje za „manuálne“ spustenie popisku.
setContent Poskytuje spôsob, ako zmeniť obsah popisu po jeho inicializácii.
show Zobrazí popis prvku. Vráti sa k volajúcemu skôr, ako sa skutočne zobrazil popis (tj pred výskytom shown.bs.tooltipudalosti). Toto sa považuje za „manuálne“ spustenie popisku. Popisy s názvami s nulovou dĺžkou sa nikdy nezobrazujú.
toggle Prepína popis prvku. Vráti sa k volajúcemu skôr, než sa popis skutočne zobrazí alebo skryje (tj predtým, ako nastane udalosť shown.bs.tooltipalebo ). hidden.bs.tooltipToto sa považuje za „manuálne“ spustenie popisku.
toggleEnabled Prepína možnosť zobrazenia alebo skrytia popisku prvku.
update Aktualizuje polohu popisku prvku.
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance

// setContent example
tooltip.setContent({ '.tooltip-inner': 'another title' })
Metóda setContentakceptuje objectargument, kde každý kľúč vlastnosti je platným stringselektorom v šablóne kontextového okna a každá súvisiaca hodnota vlastnosti môže byť string| element| function| null

Diania

Udalosť Popis
hide.bs.tooltip Táto udalosť sa spustí okamžite po hidezavolaní metódy inštancie.
hidden.bs.tooltip Táto udalosť sa spustí, keď sa ukončí skrytie kontextového okna pred používateľom (bude čakať na dokončenie prechodov CSS).
inserted.bs.tooltip Táto udalosť sa spustí po show.bs.tooltipudalosti, keď bola šablóna popisu pridaná do modelu DOM.
show.bs.tooltip Táto udalosť sa spustí okamžite pri showvolaní metódy inštancie.
shown.bs.tooltip Táto udalosť sa spustí, keď sa kontextové okno zobrazí používateľovi (bude čakať na dokončenie prechodov CSS).
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)

myTooltipEl.addEventListener('hidden.bs.tooltip', () => {
  // do something...
})

tooltip.hide()