Popisky
Dokumentace a příklady pro přidávání vlastních popisů nástrojů Bootstrap s CSS a JavaScript pomocí CSS3 pro animace a data-bs-atributy pro místní ukládání titulků.
Přehled
Co byste měli vědět při používání pluginu tooltip:
- Popisky se při určování polohy spoléhají na knihovnu Popper třetí strany . Popper.min.js musíte zahrnout před
bootstrap.js
, nebo použít tenbootstrap.bundle.min.js
, který obsahuje Popper. - Popisky jsou z důvodu výkonu volitelné, takže je musíte inicializovat sami .
- Popisky s názvy nulové délky se nikdy nezobrazují.
- Určete
container: 'body'
, abyste se vyhnuli problémům s vykreslováním ve složitějších komponentách (jako jsou naše vstupní skupiny, skupiny tlačítek atd.). - Spouštění popisků u skrytých prvků nebude fungovat.
- Popisky pro prvky
.disabled
nebodisabled
musí být spuštěny na prvku obálky. - Při spuštění z hypertextových odkazů, které zahrnují více řádků, budou popisky nástrojů vycentrovány. Chcete-li se tomuto chování vyhnout, použijte
white-space: nowrap;
na svém s.<a>
- Před odstraněním příslušných prvků z modelu DOM musí být popisy nástrojů skryty.
- Popisky lze spouštět díky prvku uvnitř stínového DOM.
Máš to všechno? Skvělé, podívejme se, jak fungují s některými příklady.
prefers-reduced-motion
dotazu na média. Podívejte se na
část s omezeným pohybem v naší dokumentaci přístupnosti .
Příklady
Povolit popisky
Jak bylo uvedeno výše, musíte inicializovat popisky, než je budete moci použít. Jedním ze způsobů, jak inicializovat všechny popisky na stránce, je vybrat je podle jejich data-bs-toggle
atributu, například:
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
Popisky k odkazům
Umístěním kurzoru na níže uvedené odkazy zobrazíte popisky:
Zástupný text pro demonstraci některých vkládaných odkazů s popisky. Tohle je teď jen výplň, žádný zabiják. Obsah zde umístěný jen proto, aby napodobil přítomnost skutečného textu . A to vše jen proto, abyste měli představu, jak by popisky vypadaly při použití v reálných situacích. Doufejme, že jste nyní viděli, jak mohou tyto tipy pro odkazy fungovat v praxi, jakmile je použijete na svém vlastním webu nebo 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
nebo
data-bs-title
ve svém HTML. Když
title
je použit, Popper jej automaticky nahradí
data-bs-title
při vykreslení prvku.
Vlastní popisky
Přidáno ve verzi 5.2.0Vzhled popisků můžete přizpůsobit pomocí proměnných CSS . Nastavíme vlastní třídu s data-bs-custom-class="custom-tooltip"
pro rozsah našeho vlastního vzhledu a použijeme ji k přepsání místní proměnné 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>
Pokyny
Umístěním ukazatele myši na níže uvedená tlačítka zobrazíte čtyři směry popisků: nahoře, vpravo, dole a vlevo. Pokyny jsou zrcadleny při použití Bootstrap 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 přidaný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
Proměnné
Přidáno ve verzi 5.2.0Jako součást vyvíjejícího se přístupu Bootstrap proměnných CSS nyní popisky využívají místní proměnné CSS .tooltip
pro vylepšené přizpůsobení v reálném čase. Hodnoty pro proměnné CSS se nastavují prostřednictvím Sass, takže přizpůsobení Sass je stále podporováno.
--#{$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 proměnné
$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žívání
Plugin tooltip generuje obsah a označení na vyžádání a ve výchozím nastavení umísťuje popisky za jejich spouštěcí prvek.
Spusťte popis pomocí JavaScriptu:
const exampleEl = document.getElementById('example')
const tooltip = new bootstrap.Tooltip(exampleEl, options)
Přetečení auto
ascroll
Umístění popisku se pokusí automaticky změnit, když má nadřazený kontejneroverflow: auto
nebo se mu overflow: scroll
líbí naše .table-responsive
, ale stále zachovává původní umístění umístění. Chcete-li to vyřešit, nastavte boundary
volbu (pro modifikátor flip používající tuto popperConfig
volbu) na libovolný HTMLElement, abyste přepsali výchozí hodnotu, 'clippingParents'
například document.body
:
const tooltip = new bootstrap.Tooltip('#example', {
boundary: document.body // or document.querySelector('#boundary')
})
Označení
Požadované označení pro popis je pouze data
atribut a title
na prvku HTML chcete mít popis. Vygenerované označení popisku je poměrně jednoduché, i když vyžaduje pozici (ve výchozím nastavení top
je pluginem nastavena na hodnotu).
Jak zajistit, aby popisky fungovaly pro uživatele klávesnice a asistenčních technologií
Popisky byste měli přidávat pouze k prvkům HTML, které jsou tradičně zaměřeny na klávesnici a jsou interaktivní (jako jsou odkazy nebo ovládací prvky formuláře). Ačkoli lze libovolné prvky HTML (například <span>
s) upravit tak, aby bylo možné zaostřit přidáním tabindex="0"
atributu, přidá to uživatelům klávesnice potenciálně otravné a matoucí zarážky tabulátoru na neinteraktivních prvcích a většina asistenčních technologií v současné době v této situaci neoznamuje nápovědu. Kromě toho se nespoléhejte pouze na hover
to, že spouštěcí nápověda bude spouštět, protože to znemožní spuštění vašich bublin pro uživatele 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 disabled
atributem nejsou interaktivní, což znamená, že uživatelé se na ně nemohou zaměřit, umístit na ně ukazatel myši nebo na ně kliknout, aby vyvolali nápovědu (nebo vyskakovací okno). Jako řešení budete chtít spouštět nápovědu z obálky <div>
nebo <span>
, ideálně tak, aby bylo možné zaostřit na klávesnici pomocí 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>
Možnosti
Protože volby lze předávat prostřednictvím datových atributů nebo JavaScriptu, můžete přidat název volby k data-bs-
, jako v data-bs-animation="{value}"
. Při předávání možností prostřednictvím datových atributů se ujistěte, že jste změnili typ případu názvu možnosti z „ camelCase “ na „ kebab-case “. Použijte například data-bs-custom-class="beautifier"
místo data-bs-customClass="beautifier"
.
Od Bootstrapu 5.2.0 všechny komponenty podporují experimentální atribut vyhrazených dat data-bs-config
, který může obsahovat jednoduchou konfiguraci komponenty jako řetězec JSON. Když má prvek atributy data-bs-config='{"delay":0, "title":123}'
a data-bs-title="456"
, konečná title
hodnota bude 456
a samostatné datové atributy přepíší hodnoty uvedené na data-bs-config
. Kromě toho mohou existující datové atributy obsahovat hodnoty JSON, jako je data-bs-delay='{"show":0,"hide":150}'
.
sanitize
,
sanitizeFn
, a
allowList
zadat pomocí datových atributů.
název | Typ | Výchozí | Popis |
---|---|---|---|
allowList |
objekt | Výchozí hodnota | Objekt, který obsahuje povolené atributy a značky. |
animation |
booleovský | true |
Použijte přechod zeslabování CSS na popisek. |
boundary |
řetězec, prvek | 'clippingParents' |
Hranice omezení přetečení popisku (platí pouze pro Popperův modifikátor preventOverflow). Ve výchozím nastavení je 'clippingParents' a může přijímat odkaz HTMLElement (pouze prostřednictvím JavaScriptu). Další informace naleznete v dokumentech DetectOverflow společnosti Popper . |
container |
řetězec, prvek, nepravda | false |
Připojí popisek ke konkrétnímu prvku. Příklad: container: 'body' . Tato možnost je užitečná zejména v tom, že vám umožňuje umístit bublinovou nápovědu do toku dokumentu poblíž spouštěcího prvku – což zabrání tomu, aby se nápověda při změně velikosti okna vzdálila od spouštěcího prvku. |
customClass |
řetězec, funkce | '' |
Přidejte třídy do popisku, když se zobrazí. Všimněte si, že tyto třídy budou přidány k jakýmkoli třídám uvedeným v šabloně. Chcete-li přidat více tříd, oddělte je mezerami: 'class-1 class-2' . Můžete také předat funkci, která by měla vrátit jeden řetězec obsahující další názvy tříd. |
delay |
číslo, objekt | 0 |
Zpoždění zobrazení a skrytí popisku (ms) – nevztahuje se na typ ručního spouštění. Pokud je zadáno číslo, použije se prodleva pro skrytí/zobrazení. Struktura objektu je: delay: { "show": 500, "hide": 100 } . |
fallbackPlacements |
pole | ['top', 'right', 'bottom', 'left'] |
Definujte záložní umístění poskytnutím seznamu umístění v poli (v preferovaném pořadí). Další informace naleznete v dokumentech Popper's behavior . |
html |
booleovský | false |
Povolit HTML v popisku. Pokud je true, značky HTML v popisku title se vykreslí v popisku. Pokud je false, innerText vlastnost se použije k vložení obsahu do DOM. Pokud se obáváte útoků XSS, použijte text. |
offset |
pole, řetězec, funkce | [0, 0] |
Odsazení popisku vzhledem k jeho cíli. V atributech dat můžete předat řetězec s hodnotami oddělenými čárkami, jako jsou: data-bs-offset="10,20" . Když je funkce použita k určení offsetu, je volána s objektem obsahujícím umístění popper, odkaz a popper rects jako svůj první argument. Uzel DOM spouštěcího prvku je předán jako druhý argument. Funkce musí vrátit pole se dvěma čísly: skidding , distance . Další informace naleznete v Popperově ofsetové dokumentaci . |
placement |
řetězec, funkce | 'top' |
Jak umístit popisek: automaticky, nahoře, dole, vlevo, vpravo. Když auto je zadáno, dynamicky změní orientaci popisku. Když je k určení umístění použita funkce, je volána s nápovědou uzel DOM jako prvním argumentem a spouštěcím prvkem uzlem DOM jako druhým. Kontext this je nastaven na instanci popisku. |
popperConfig |
null, objekt, funkce | null |
Chcete-li změnit výchozí konfiguraci Popperu Bootstrapu, viz Konfigurace Popperu . Když je funkce použita k vytvoření konfigurace Popper, je volána s objektem, který obsahuje výchozí konfiguraci Popperu Bootstrapu. Pomůže vám použít a sloučit výchozí nastavení s vaší vlastní konfigurací. Funkce musí vrátit konfigurační objekt pro Popper. |
sanitize |
booleovský | true |
Povolit nebo zakázat dezinfekci. Pokud je aktivováno 'template' , 'content' a 'title' možnosti budou dezinfikovány. |
sanitizeFn |
null, funkce | null |
Zde si můžete dodat vlastní funkci dezinfekce. To může být užitečné, pokud dáváte přednost použití vyhrazené knihovny k provádění sanitace. |
selector |
řetězec, nepravda | false |
Pokud je k dispozici selektor, objekty popisků budou delegovány na zadané cíle. V praxi se to používá také k aplikaci popisků na dynamicky přidávané prvky DOM ( jQuery.on podpora). Viz toto vydání a informativní příklad . |
template |
tětiva | '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' |
Základní HTML pro použití při vytváření popisku. Popisek title bude vložen do souboru .tooltip-inner . .tooltip-arrow se stane šipkou popisku. Nejvzdálenější prvek obalu by měl mít .tooltip třídy a role="tooltip" . |
title |
řetězec, prvek, funkce | '' |
Výchozí hodnota názvu, pokud title atribut není přítomen. Je-li zadána funkce, bude volána se svou this referenční sadou na prvek, ke kterému je popover připojen. |
trigger |
tětiva | 'hover focus' |
Jak se spouští nápověda: klikněte, umístěte kurzor, zaostřete, ručně. Můžete předat více spouštěčů; oddělte je mezerou. 'manual' označuje, že popis bude spuštěn programově pomocí metod .tooltip('show') , .tooltip('hide') a ; .tooltip('toggle') tuto hodnotu nelze kombinovat s žádným jiným spouštěčem. 'hover' sám o sobě povede k nápovědám, které nelze spouštět pomocí klávesnice, a měly by být používány pouze v případě, že existují alternativní metody pro předávání stejných informací uživatelům klávesnice. |
Atributy dat pro jednotlivé popisky
Volby pro jednotlivé popisky lze alternativně specifikovat pomocí atributů dat, jak je vysvětleno výše.
Použití funkce spopperConfig
const tooltip = new bootstrap.Tooltip(element, {
popperConfig(defaultBsPopperConfig) {
// const newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
Metody
Asynchronní metody a přechody
Všechny metody API jsou asynchronní a zahajují přechod . Vrátí se k volajícímu, jakmile je přechod zahájen, ale před jeho ukončením . Kromě toho bude ignorováno volání metody na přechodové komponentě .
Další informace naleznete v naší dokumentaci k JavaScriptu .
Metoda | Popis |
---|---|
disable |
Odebere možnost zobrazení popisku prvku. Popisek bude možné zobrazit pouze v případě, že bude znovu povolen. |
dispose |
Skryje a zničí popisek prvku (Odstraní uložená data na prvku DOM). Popisky, které používají delegování (které jsou vytvořeny pomocí volby ) selector , nelze jednotlivě zničit na podřízených spouštěcích prvcích. |
enable |
Umožňuje zobrazení popisku prvku. Popisky jsou ve výchozím nastavení povoleny. |
getInstance |
Statická metoda, která vám umožňuje získat instanci popisku přidruženou k prvku DOM nebo vytvořit novou v případě, že nebyla inicializována. |
getOrCreateInstance |
Statická metoda, která vám umožňuje získat instanci popisku přidruženou k prvku DOM nebo vytvořit novou v případě, že nebyla inicializována. |
hide |
Skryje popisek prvku. Vrátí se k volajícímu dříve, než byl popis nástroje skutečně skryt (tj. než dojde k hidden.bs.tooltip události). Toto je považováno za „ruční“ spuštění popisku. |
setContent |
Poskytuje způsob, jak změnit obsah popisku po jeho inicializaci. |
show |
Zobrazí popisek prvku. Vrátí se k volajícímu dříve, než se nápověda skutečně zobrazila (tj. než dojde k shown.bs.tooltip události). Toto je považováno za „ruční“ spuštění popisku. Popisky s názvy nulové délky se nikdy nezobrazují. |
toggle |
Přepíná popisek prvku. Vrátí se k volajícímu dříve, než byl popis nástroje skutečně zobrazen nebo skryt (tj. než dojde k události shown.bs.tooltip nebo ). hidden.bs.tooltip Toto je považováno za „ruční“ spuštění popisku. |
toggleEnabled |
Přepíná možnost zobrazení nebo skrytí 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' })
setContent
přijímá
object
argument, kde každý klíč vlastnosti je platným
string
selektorem v šabloně vyskakovacího okna a každá související hodnota vlastnosti může být
string
|
element
|
function
|
null
Události
událost | Popis |
---|---|
hide.bs.tooltip |
Tato událost se spustí okamžitě po hide zavolání metody instance. |
hidden.bs.tooltip |
Tato událost se spustí, když je vyskakovací okno skryto před uživatelem (bude čekat na dokončení přechodů CSS). |
inserted.bs.tooltip |
Tato událost se spustí po show.bs.tooltip události, kdy byla šablona popisku přidána do modelu DOM. |
show.bs.tooltip |
Tato událost se spustí okamžitě při show volání metody instance. |
shown.bs.tooltip |
Tato událost se spustí, když se vyskakovací okno zviditelní uživateli (bude čekat na dokončení přechodů CSS). |
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)
myTooltipEl.addEventListener('hidden.bs.tooltip', () => {
// do something...
})
tooltip.hide()