Eszköztippek
Dokumentáció és példák egyéni Bootstrap eszköztippek hozzáadásához CSS-sel és JavaScripttel a CSS3 használatával animációkhoz és data-bs-attribútumokhoz a helyi címtároláshoz.
Áttekintés
Tudnivalók az eszköztipp-bővítmény használatakor:
- Az eszköztippek a harmadik fél Popper könyvtárára támaszkodnak a pozicionáláshoz. Meg kell adnia a popper.min.js fájlt az előtt
bootstrap.js
, vagy használjon olyat,bootstrap.bundle.min.js
amely tartalmazza a Poppert. - Az eszköztippeket teljesítmény okokból engedélyezik, ezért Önnek kell inicializálnia őket .
- A nulla hosszúságú címekkel rendelkező eszköztippek soha nem jelennek meg.
- Adja meg
container: 'body'
, hogy elkerülje a megjelenítési problémákat az összetettebb összetevőkben (például beviteli csoportjaink, gombcsoportjaink stb.). - Az eszköztippek aktiválása a rejtett elemeken nem fog működni.
.disabled
Az elemekhez vagy elemekhez tartozó eszköztippeket adisabled
burkolóelemen kell aktiválni.- Ha több sort átívelő hiperhivatkozások váltják ki, az eszköztippek középre kerülnek. Használja
white-space: nowrap;
a<a>
s-én, hogy elkerülje ezt a viselkedést. - Az eszköztippeket el kell rejteni, mielőtt a megfelelő elemeiket eltávolítanák a DOM-ból.
- Az eszköztippek az árnyék-DOM-on belüli elemnek köszönhetően aktiválhatók.
Megvan az egész? Remek, lássuk, hogyan működnek néhány példával.
prefers-reduced-motion
. Tekintse
meg akadálymentesítési dokumentációnk csökkentett mozgással foglalkozó részét .
Példák
Eszköztippek engedélyezése
Mint fentebb említettük, használat előtt inicializálnia kell az eszköztippeket. data-bs-toggle
Az oldalon lévő összes eszköztipp inicializálásának egyik módja az lenne, ha attribútumuk alapján választaná ki őket , például:
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
Eszköztippek a hivatkozásokhoz
Az eszköztippek megtekintéséhez vigye az egérmutatót az alábbi linkekre:
Helyőrző szöveg néhány soron belüli hivatkozás bemutatásához eszköztippekkel. Ez most csak töltelék, nem gyilkos. Az itt található tartalom csak a valódi szöveg jelenlétét utánozza . És mindezt csak azért, hogy képet kapjon arról, hogyan néznek ki az eszköztippek valós helyzetekben. Remélhetőleg most már láthatta, hogyan működhetnek a gyakorlatban ezek a linkekre vonatkozó eszköztippek , miután saját webhelyén vagy projektjeiben használja őket.
<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
a
data-bs-title
HTML-ben. Amikor
title
használatban van, a Popper automatikusan lecseréli a következőre,
data-bs-title
amikor az elem renderelésre kerül.
Egyéni eszköztippek
Hozzáadva a v5.2.0-hozA CSS-változók segítségével testreszabhatja az eszköztippek megjelenését . Beállítunk egy egyéni osztályt data-bs-custom-class="custom-tooltip"
az egyéni megjelenés hatóköréhez, és egy helyi CSS-változó felülbírálására használjuk.
.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>
Útvonalak
Vigye az egérmutatót az alábbi gombok fölé, hogy megtekinthesse a négy eszköztipp-irányt: felül, jobb, lent és bal. A Bootstrap RTL-ben történő használatakor az irányok tükröződnek.
<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>
És egyéni HTML hozzáadásával:
<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>
SVG-vel:
CSS
Változók
Hozzáadva a v5.2.0-hozA Bootstrap fejlődő CSS-változókra vonatkozó megközelítésének részeként az eszköztippek helyi CSS-változókat használnak .tooltip
a továbbfejlesztett valós idejű testreszabás érdekében. A CSS-változók értékeit a Sass segítségével állítjuk be, így a Sass testreszabása továbbra is támogatott.
--#{$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 változók
$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
Használat
Az eszköztipp-bővítmény igény szerint létrehozza a tartalmat és a jelöléseket, és alapértelmezés szerint az eszköztippeket a triggerelem után helyezi el.
Az elemleírás aktiválása JavaScripten keresztül:
const exampleEl = document.getElementById('example')
const tooltip = new bootstrap.Tooltip(exampleEl, options)
Túlcsordulás auto
ésscroll
Az eszköztipp pozíciója megkísérli automatikusan módosítani, ha egy szülőtároló rendelkezik a mi tárolónkkal, overflow: auto
vagy overflow: scroll
tetszik .table-responsive
, de továbbra is megtartja az eredeti elhelyezés pozícióját. A probléma megoldásához állítsa be a boundary
beállítást (az opciót használó flip módosítóhoz popperConfig
) bármely HTMLElement értékre, hogy felülírja az alapértelmezett értéket, 'clippingParents'
például document.body
:
const tooltip = new bootstrap.Tooltip('#example', {
boundary: document.body // or document.querySelector('#boundary')
})
Jelölés
Az eszköztipphez szükséges jelölés csak egy data
attribútum, és title
azon a HTML-elemen, amelyen elemleírást szeretne kapni. Az eszköztippek generált jelölése meglehetősen egyszerű, bár megköveteli a pozíciót (alapértelmezés top
szerint a bővítmény állítja be).
Az eszköztippek működőképessé tétele a billentyűzet és a kisegítő technológiák felhasználói számára
Csak olyan HTML-elemekhez adjon eszköztippeket, amelyek hagyományosan billentyűzetre fókuszálhatók és interaktívak (például hivatkozások vagy űrlapvezérlők). Bár tetszőleges HTML-elemek (például <span>
s) fókuszálhatóvá tehetők az tabindex="0"
attribútum hozzáadásával, ez potenciálisan bosszantó és zavaró tabulátorokat ad a nem interaktív elemekhez a billentyűzet-felhasználók számára, és a legtöbb kisegítő technológia jelenleg nem jeleníti meg az eszközleírást ebben a helyzetben. Ezenkívül ne hagyatkozzon kizárólag hover
az elemleírás indítójára, mivel ez lehetetlenné teszi az elemleírások aktiválását a billentyűzetet használók számára.
<!-- 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>
Letiltott elemek
Az disabled
attribútummal rendelkező elemek nem interaktívak, ami azt jelenti, hogy a felhasználók nem fókuszálhatnak rájuk, nem vihetik az egérmutatót rájuk, és nem kattinthatnak rájuk elemleírás (vagy előugró ablak) indításához. Megkerülő megoldásként az eszköztippet egy burkolóból <div>
vagy <span>
ideális esetben a billentyűzetre fókuszálhatóvá kell tenni a segítségével 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>
Lehetőségek
Mivel az opciók átadhatók adatattribútumokon vagy JavaScript-en keresztül, hozzáfűzhet egy beállításnevet a -hoz data-bs-
, mint például a data-bs-animation="{value}"
. Ügyeljen arra, hogy az opció nevének esettípusát „ camelCase ”-ról „ kebab-case ”-re változtassa, amikor a beállításokat adatattribútumokon keresztül adja át. Például használja data-bs-custom-class="beautifier"
a helyett data-bs-customClass="beautifier"
.
A Bootstrap 5.2.0-tól kezdve minden összetevő támogatja a kísérleti fenntartott adatattribútumot, data-bs-config
amely JSON-karakterláncként tartalmazhat egyszerű összetevőkonfigurációt. Ha egy elemnek data-bs-config='{"delay":0, "title":123}'
és data-bs-title="456"
attribútumai vannak, a végső title
érték a következő lesz, 456
és a különálló adatattribútumok felülírják a megadott értékeket data-bs-config
. Ezenkívül a meglévő adatattribútumok JSON-értékeket, például data-bs-delay='{"show":0,"hide":150}'
.
sanitize
,
sanitizeFn
, és
allowList
opciók nem adhatók meg adatattribútumokkal.
Név | típus | Alapértelmezett | Leírás |
---|---|---|---|
allowList |
tárgy | Alapértelmezett érték | Objektum, amely engedélyezett attribútumokat és címkéket tartalmaz. |
animation |
logikai érték | true |
Alkalmazzon CSS áttűnést az eszköztippre. |
boundary |
karakterlánc, elem | 'clippingParents' |
Az eszköztipp túlcsordulási kényszerhatára (csak a Popper-féle preventOverflow módosítóra vonatkozik). Alapértelmezés szerint 'clippingParents' elfogadja a HTMLElement hivatkozást (csak JavaScripten keresztül). További információkért tekintse meg a Popper detectOverflow dokumentumait . |
container |
karakterlánc, elem, false | false |
Hozzáfűzi az elemleírást egy adott elemhez. Példa: container: 'body' . Ez az opció különösen hasznos, mivel lehetővé teszi az eszköztipp elhelyezését a dokumentum folyamában az indítóelem közelében - ami megakadályozza, hogy az eszköztipp az ablak átméretezése során lebegjen az indítóelemtől. |
customClass |
karakterlánc, függvény | '' |
Adjon hozzá osztályokat az eszköztipphez, amikor megjelenik. Ne feledje, hogy ezek az osztályok a sablonban megadott bármely osztály mellé kerülnek hozzáadásra. Több osztály hozzáadásához szóközzel válassza el őket: 'class-1 class-2' . Olyan függvényt is átadhat, amelynek egyetlen karakterláncot kell visszaadnia, amely további osztályneveket tartalmaz. |
delay |
szám, tárgy | 0 |
Az eszköztipp megjelenítésének és elrejtésének késleltetése (ms) – nem vonatkozik a kézi aktiválási típusokra. Ha megad egy számot, akkor a késleltetés mindkét elrejtésre/megjelenítésre vonatkozik. Az objektum szerkezete: delay: { "show": 500, "hide": 100 } . |
fallbackPlacements |
sor | ['top', 'right', 'bottom', 'left'] |
Határozza meg a tartalék elhelyezéseket úgy, hogy megadja az elhelyezések listáját tömbben (előnyös sorrendben). További információkért tekintse meg a Popper viselkedési dokumentumait . |
html |
logikai érték | false |
HTML engedélyezése az elemleírásban. Ha igaz, akkor az elemleírásban található HTML-címkék title megjelennek az elemleírásban. Ha hamis, a innerText tulajdonság a tartalom DOM-ba való beillesztésére szolgál. Használjon szöveget, ha aggódik az XSS-támadások miatt. |
offset |
tömb, karakterlánc, függvény | [0, 0] |
Az eszköztipp eltolása a célhoz képest. Az adatattribútumokban átadhat egy karakterláncot vesszővel elválasztott értékekkel, például: data-bs-offset="10,20" . Ha egy függvényt használunk az eltolás meghatározására, akkor egy olyan objektummal hívjuk meg, amely első argumentumaként tartalmazza a popper elhelyezést, a hivatkozást és a popper recteket. A kiváltó elem DOM csomópontja második argumentumként kerül átadásra. A függvénynek egy tömböt kell visszaadnia két számmal: csúszás , távolság . További információkért tekintse meg a Popper-féle eltolási dokumentumokat . |
placement |
karakterlánc, függvény | 'top' |
Az eszköztipp elhelyezése: automatikus, felül, lent, balra, jobbra. Ha auto meg van adva, akkor dinamikusan átirányítja az eszköztippet. Amikor egy függvényt használunk az elhelyezés meghatározására, akkor az eszköztipp DOM-csomópontja az első argumentum, és a kiváltó elem DOM-csomópontja a második. A this kontextus az eszköztipp példányra van beállítva. |
popperConfig |
null, objektum, függvény | null |
A Bootstrap alapértelmezett Popper-konfigurációjának módosításához lásd a Popper konfigurációját . Ha egy függvényt használunk a Popper-konfiguráció létrehozására, akkor azt egy olyan objektummal hívjuk meg, amely tartalmazza a Bootstrap alapértelmezett Popper-konfigurációját. Segítségével használhatja és egyesítheti az alapértelmezett beállításokat saját konfigurációjával. A függvénynek egy konfigurációs objektumot kell visszaadnia a Popper számára. |
sanitize |
logikai érték | true |
Engedélyezze vagy tiltsa le a fertőtlenítést. Ha aktiválva van 'template' , 'content' és 'title' az opciók fertőtlenítésre kerülnek. |
sanitizeFn |
null, függvény | null |
Itt megadhatja saját fertőtlenítő funkcióját. Ez akkor lehet hasznos, ha inkább egy dedikált könyvtárat szeretne használni a fertőtlenítéshez. |
selector |
húr, hamis | false |
Ha rendelkezésre áll választó, akkor az eszköztipp objektumok delegálásra kerülnek a megadott célokra. A gyakorlatban ezt az eszköztippek alkalmazására használják a dinamikusan hozzáadott DOM-elemekre ( jQuery.on támogatás). Lásd ezt a számot és egy tájékoztató példát . |
template |
húr | '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' |
Az elemleírás létrehozásakor használandó alap HTML. Az eszköztippeket a title rendszer befecskendezi a .tooltip-inner . .tooltip-arrow az eszköztipp nyila lesz. A legkülső burkolóelem .tooltip osztályának és role="tooltip" . |
title |
karakterlánc, elem, függvény | '' |
Az alapértelmezett címérték, ha title az attribútum nincs jelen. Ha adott egy függvény, akkor az úgy lesz meghívva, hogy a this hivatkozása arra az elemre van beállítva, amelyhez a popover kapcsolódik. |
trigger |
húr | 'hover focus' |
Az eszköztipp aktiválása: kattintás, egérmutató, fókusz, manuális. Több triggert is átadhat; szóközzel válassza el őket. 'manual' azt jelzi, hogy az eszköztipp programozottan aktiválódik a .tooltip('show') , .tooltip('hide') és .tooltip('toggle') metódusokkal; ez az érték nem kombinálható más triggerrel. 'hover' önmagában olyan eszköztippeket eredményez, amelyek nem indíthatók el a billentyűzeten keresztül, és csak akkor használhatók, ha vannak alternatív módszerek ugyanazon információk továbbítására a billentyűzetet használók számára. |
Adatattribútumok az egyes elemleírásokhoz
Az egyes eszköztippek beállításai adatattribútumok használatával is megadhatók, a fentebb leírtak szerint.
A funkció használata apopperConfig
const tooltip = new bootstrap.Tooltip(element, {
popperConfig(defaultBsPopperConfig) {
// const newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
Mód
Aszinkron módszerek és átmenetek
Minden API metódus aszinkron , és átmenetet indít . Visszatérnek a hívóhoz, amint az átmenet elkezdődik, de még azelőtt, hogy az véget érne . Ezenkívül a rendszer figyelmen kívül hagyja az átmeneti komponens metódushívásait .
További információért tekintse meg JavaScript dokumentációnkat .
Módszer | Leírás |
---|---|
disable |
Eltávolítja az elem elemleírásának megjelenítési lehetőségét. Az eszköztipp csak akkor jelenik meg, ha újra engedélyezve van. |
dispose |
Elrejti és megsemmisíti az elem elemleírását (Eltávolítja a DOM elemen tárolt adatokat). A delegálást használó eszköztippek (amelyek a selector beállítással jönnek létre ) nem semmisíthetők meg egyenként a leszármazott triggerelemeken. |
enable |
Lehetőséget ad egy elem elemleírásának megjelenítésére. Az eszköztippek alapértelmezés szerint engedélyezve vannak. |
getInstance |
Statikus módszer, amely lehetővé teszi az eszköztipp-példány lekérését egy DOM-elemhez, vagy új létrehozását, ha nem inicializálták. |
getOrCreateInstance |
Statikus módszer, amely lehetővé teszi az eszköztipp-példány lekérését egy DOM-elemhez, vagy új létrehozását, ha nem inicializálták. |
hide |
Elrejti egy elem elemleírását. Visszatér a hívóhoz, mielőtt az eszköztipp ténylegesen el lett volna rejtve (azaz az hidden.bs.tooltip esemény bekövetkezte előtt). Ez az eszköztipp „kézi” aktiválásának tekinthető. |
setContent |
Lehetővé teszi az eszköztipp tartalmának megváltoztatását az inicializálás után. |
show |
Megjeleníti egy elem elemleírását. Visszatér a hívóhoz, mielőtt az eszköztipp ténylegesen megjelenne (azaz az shown.bs.tooltip esemény bekövetkezte előtt). Ez az eszköztipp „kézi” aktiválásának tekinthető. A nulla hosszúságú címekkel rendelkező eszköztippek soha nem jelennek meg. |
toggle |
Bekapcsolja az elem elemleírását. Visszatér a hívóhoz, mielőtt az eszköztipp ténylegesen megjelent vagy elrejtett volna (azaz a shown.bs.tooltip vagy hidden.bs.tooltip esemény bekövetkezte előtt). Ez az eszköztipp „kézi” aktiválásának tekinthető. |
toggleEnabled |
Bekapcsolja az elem elemleírásának megjelenítését vagy elrejtését. |
update |
Frissíti egy elem elemleírásának pozícióját. |
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance
// setContent example
tooltip.setContent({ '.tooltip-inner': 'another title' })
setContent
metódus elfogad egy
object
argumentumot, ahol minden tulajdonságkulcs egy érvényes
string
szelektor a popover sablonon belül, és minden kapcsolódó property-érték lehet
string
|
element
|
function
|
null
Események
Esemény | Leírás |
---|---|
hide.bs.tooltip |
Ez az esemény azonnal elindul, amikor a hide példánymetódus meghívásra került. |
hidden.bs.tooltip |
Ez az esemény akkor indul el, amikor a popover elrejtése befejeződött a felhasználó elől (megvárja, amíg a CSS-átmenetek befejeződnek). |
inserted.bs.tooltip |
Ez az esemény az show.bs.tooltip esemény után indul el, amikor az eszköztipp-sablont hozzáadták a DOM-hoz. |
show.bs.tooltip |
Ez az esemény azonnal aktiválódik a show példánymetódus meghívásakor. |
shown.bs.tooltip |
Ez az esemény akkor indul el, amikor a popover láthatóvá vált a felhasználó számára (megvárja, amíg a CSS-átmenetek befejeződnek). |
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)
myTooltipEl.addEventListener('hidden.bs.tooltip', () => {
// do something...
})
tooltip.hide()