Ugrás a fő tartalomhoz Ugrás a dokumentumok navigációjához
Check
in English

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.jsamely 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.
  • .disabledAz elemekhez vagy elemekhez tartozó eszköztippeket a disabledburkoló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.

Alapértelmezés szerint ez a komponens a beépített tartalom-fertőtlenítőt használja, amely eltávolítja a kifejezetten nem engedélyezett HTML-elemeket. További részletekért lásd a fertőtlenítő részt JavaScript-dokumentációnkban .
Ennek az összetevőnek az animációs hatása a médialekérdezéstől függ 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-toggleAz 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))

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.

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>
Nyugodtan használhatja vagy titlea data-bs-titleHTML-ben. Amikor titlehasználatban van, a Popper automatikusan lecseréli a következőre, data-bs-titleamikor az elem renderelésre kerül.

Egyéni eszköztippek

Hozzáadva a v5.2.0-hoz

A 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);
}
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>

Ú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-hoz

A 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 .tooltipa 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: autovagy overflow: scrolltetszik .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 boundarybeá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 dataattribútum, és titleazon 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 topszerint 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 hoveraz 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 disabledattribú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".

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>

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-configamely 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}'.

Vegye figyelembe, hogy biztonsági okokból a sanitize, sanitizeFn, és allowListopció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 titlemegjelennek az elemleírásban. Ha hamis, a innerTexttulajdonsá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 automeg 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 thiskontextus 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.ontá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 titlerendszer befecskendezi a .tooltip-inner. .tooltip-arrowaz eszköztipp nyila lesz. A legkülső burkolóelem .tooltiposztályának és role="tooltip".
title karakterlánc, elem, függvény '' Az alapértelmezett címérték, ha titleaz attribútum nincs jelen. Ha adott egy függvény, akkor az úgy lesz meghívva, hogy a thishivatkozá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 selectorbeá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.tooltipesemé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.tooltipesemé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.tooltipvagy hidden.bs.tooltipesemé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' })
A setContentmetódus elfogad egy objectargumentumot, ahol minden tulajdonságkulcs egy érvényes stringszelektor 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 hidepé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.tooltipesemé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 showpé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()