Kurzinfos
Dokumentation und Beispiele zum Hinzufügen von benutzerdefinierten Bootstrap-QuickInfos mit CSS und JavaScript unter Verwendung von CSS3 für Animationen und Daten-BS-Attribute für die lokale Titelspeicherung.
Überblick
Wissenswertes zur Verwendung des Tooltip-Plugins:
- Tooltips stützen sich zur Positionierung auf die Drittanbieter-Bibliothek Popper . Sie müssen popper.min.js vor einfügen
bootstrap.js
oder eine verwenden,bootstrap.bundle.min.js
die Popper enthält. - QuickInfos sind aus Leistungsgründen optional, Sie müssen sie also selbst initialisieren .
- Tooltips mit leeren Titeln werden nie angezeigt.
- Geben Sie
container: 'body'
an, um Renderprobleme in komplexeren Komponenten (wie unseren Eingabegruppen, Schaltflächengruppen usw.) zu vermeiden. - Das Auslösen von QuickInfos auf ausgeblendeten Elementen funktioniert nicht.
- QuickInfos für
.disabled
oderdisabled
-Elemente müssen auf einem Wrapper-Element ausgelöst werden. - Wenn sie von Hyperlinks ausgelöst werden, die sich über mehrere Zeilen erstrecken, werden QuickInfos zentriert. Verwenden Sie
white-space: nowrap;
auf Ihren<a>
s, um dieses Verhalten zu vermeiden. - QuickInfos müssen ausgeblendet werden, bevor die entsprechenden Elemente aus dem DOM entfernt wurden.
- Tooltips können dank eines Elements in einem Shadow-DOM ausgelöst werden.
Hast du das alles? Großartig, mal sehen, wie sie mit einigen Beispielen funktionieren.
prefers-reduced-motion
Medienanfrage. Weitere Informationen finden Sie im Abschnitt zur
reduzierten Bewegung in unserer Dokumentation zur Barrierefreiheit .
Beispiele
Tooltips aktivieren
Wie oben erwähnt, müssen Sie QuickInfos initialisieren, bevor sie verwendet werden können. Eine Möglichkeit, alle QuickInfos auf einer Seite zu initialisieren, besteht darin, sie anhand ihres data-bs-toggle
Attributs auszuwählen, etwa so:
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
Tooltips zu Links
Bewegen Sie den Mauszeiger über die folgenden Links, um QuickInfos anzuzeigen:
Platzhaltertext, um einige Inline-Links mit QuickInfos zu demonstrieren . Das ist jetzt nur Filler, kein Killer. Hier platzierter Inhalt dient lediglich dazu, das Vorhandensein von echtem Text nachzuahmen . Und das alles nur, um Ihnen eine Vorstellung davon zu geben, wie Tooltips in realen Situationen aussehen würden. Hoffentlich haben Sie nun gesehen, wie diese QuickInfos zu Links in der Praxis funktionieren können, wenn Sie sie einmal auf Ihrer eigenen Website oder in Ihrem eigenen Projekt verwenden.
<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
oder
data-bs-title
in Ihrem HTML zu verwenden. Wenn
title
verwendet wird, ersetzt Popper es automatisch durch
data-bs-title
wenn das Element gerendert wird.
Benutzerdefinierte QuickInfos
Hinzugefügt in v5.2.0Sie können das Erscheinungsbild von QuickInfos mithilfe von CSS-Variablen anpassen . Wir legen eine benutzerdefinierte Klasse mit fest data-bs-custom-class="custom-tooltip"
, um unser benutzerdefiniertes Erscheinungsbild zu erweitern, und verwenden sie, um eine lokale CSS-Variable zu überschreiben.
.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>
Richtungen
Bewegen Sie den Mauszeiger über die Schaltflächen unten, um die vier QuickInfo-Richtungen anzuzeigen: oben, rechts, unten und links. Wegbeschreibungen werden bei Verwendung von Bootstrap in RTL gespiegelt.
<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>
Und mit benutzerdefiniertem HTML hinzugefügt:
<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>
Mit einem SVG:
CSS
Variablen
Hinzugefügt in v5.2.0Als Teil des sich entwickelnden CSS-Variablen-Ansatzes von Bootstrap verwenden QuickInfos jetzt lokale CSS-Variablen .tooltip
für eine verbesserte Echtzeit-Anpassung. Die Werte für die CSS-Variablen werden über Sass festgelegt, sodass die Sass-Anpassung auch weiterhin unterstützt wird.
--#{$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-Variablen
$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
Verwendungszweck
Das Tooltip-Plug-in generiert Inhalte und Markups nach Bedarf und platziert QuickInfos standardmäßig nach ihrem Auslöserelement.
Lösen Sie den Tooltip über JavaScript aus:
const exampleEl = document.getElementById('example')
const tooltip = new bootstrap.Tooltip(exampleEl, options)
Überlauf auto
uscroll
Die Tooltip-Position versucht, sich automatisch zu ändern, wenn ein übergeordneter Container unsere hat overflow: auto
oder mag , behält aber dennoch die Positionierung der ursprünglichen Platzierung bei. Um dies zu beheben, legen Sie die Option (für den Flip-Modifikator mit der Option) auf ein beliebiges HTMLElement fest, um den Standardwert zu überschreiben , z. B. :overflow: scroll
.table-responsive
boundary
popperConfig
'clippingParents'
document.body
const tooltip = new bootstrap.Tooltip('#example', {
boundary: document.body // or document.querySelector('#boundary')
})
Markierung
Das erforderliche Markup für einen Tooltip ist nur ein data
Attribut und title
auf dem HTML-Element, das Sie haben möchten, ein Tooltip. Das generierte Markup eines Tooltips ist ziemlich einfach, erfordert jedoch eine Position (standardmäßig top
vom Plugin festgelegt).
QuickInfos für Benutzer von Tastaturen und Hilfstechnologien verwenden
Sie sollten QuickInfos nur zu HTML-Elementen hinzufügen, die traditionell über die Tastatur fokussierbar und interaktiv sind (z. B. Links oder Formularsteuerelemente). Obwohl beliebige HTML-Elemente (z. B. <span>
s) durch Hinzufügen des tabindex="0"
Attributs fokussierbar gemacht werden können, fügt dies möglicherweise störende und verwirrende Tabstopps bei nicht interaktiven Elementen für Tastaturbenutzer hinzu, und die meisten Hilfstechnologien kündigen derzeit den Tooltip in dieser Situation nicht an. Verlassen Sie sich außerdem nicht ausschließlich auf hover
den Auslöser für Ihre QuickInfo, da dies Ihre QuickInfos für Tastaturbenutzer unmöglich machen wird.
<!-- 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>
Deaktivierte Elemente
Elemente mit dem disabled
Attribut sind nicht interaktiv, was bedeutet, dass Benutzer sie nicht fokussieren, mit der Maus bewegen oder darauf klicken können, um eine QuickInfo (oder ein Popover) auszulösen. Als Problemumgehung sollten Sie den Tooltip von einem Wrapper <div>
oder auslösen <span>
, idealerweise mit Tastatur-fokussierbar 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>
Optionen
Da Optionen über Datenattribute oder JavaScript übergeben werden können, können Sie einen Optionsnamen data-bs-
wie in anhängen data-bs-animation="{value}"
. Stellen Sie sicher, dass Sie den Falltyp des Optionsnamens von " camelCase " in " kebab -case " ändern, wenn Sie die Optionen über Datenattribute übergeben. Verwenden Sie beispielsweise data-bs-custom-class="beautifier"
anstelle von data-bs-customClass="beautifier"
.
Ab Bootstrap 5.2.0 unterstützen alle Komponenten ein experimentelles reserviertes Datenattribut, das eine data-bs-config
einfache Komponentenkonfiguration als JSON-String enthalten kann. Wenn ein Element über data-bs-config='{"delay":0, "title":123}'
und data-bs-title="456"
-Attribute verfügt, ist der endgültige title
Wert 456
und die separaten Datenattribute überschreiben die auf angegebenen Werte data-bs-config
. Darüber hinaus können vorhandene Datenattribute JSON-Werte wie data-bs-delay='{"show":0,"hide":150}'
.
sanitize
Beachten Sie, dass die Optionen ,
sanitizeFn
, und
aus Sicherheitsgründen
allowList
nicht mit Datenattributen angegeben werden können.
Name | Typ | Standard | Beschreibung |
---|---|---|---|
allowList |
Objekt | Standardwert | Objekt, das erlaubte Attribute und Tags enthält. |
animation |
boolesch | true |
Wenden Sie einen CSS-Fade-Übergang auf die QuickInfo an. |
boundary |
Zeichenkette, Element | 'clippingParents' |
Überlaufbeschränkungsgrenze der QuickInfo (gilt nur für Poppers Modifikator "preventOverflow"). Standardmäßig ist es 'clippingParents' und kann eine HTMLElement-Referenz akzeptieren (nur über JavaScript). Weitere Informationen finden Sie in der detectOverflow -Dokumentation von Popper . |
container |
Zeichenfolge, Element, falsch | false |
Hängt den Tooltip an ein bestimmtes Element an. Beispiel: container: 'body' . Diese Option ist besonders nützlich, da sie es Ihnen ermöglicht, den Tooltip im Fluss des Dokuments in der Nähe des auslösenden Elements zu positionieren – wodurch verhindert wird, dass der Tooltip während einer Fenstergrößenänderung vom auslösenden Element wegschwebt. |
customClass |
Zeichenfolge, Funktion | '' |
Fügen Sie dem Tooltip Klassen hinzu, wenn er angezeigt wird. Beachten Sie, dass diese Klassen zusätzlich zu allen in der Vorlage angegebenen Klassen hinzugefügt werden. Um mehrere Klassen hinzuzufügen, trennen Sie sie durch Leerzeichen: 'class-1 class-2' . Sie können auch eine Funktion übergeben, die einen einzelnen String mit zusätzlichen Klassennamen zurückgeben soll. |
delay |
Nummer, Objekt | 0 |
Verzögerung beim Anzeigen und Ausblenden des Tooltips (ms) – gilt nicht für den manuellen Triggertyp. Wenn eine Nummer angegeben wird, wird die Verzögerung sowohl auf das Ausblenden als auch auf das Anzeigen angewendet. Objektstruktur ist: delay: { "show": 500, "hide": 100 } . |
fallbackPlacements |
Reihe | ['top', 'right', 'bottom', 'left'] |
Definieren Sie Ersatzplatzierungen, indem Sie eine Liste von Platzierungen in einem Array bereitstellen (in bevorzugter Reihenfolge). Weitere Informationen finden Sie in der Verhaltensdokumentation von Popper . |
html |
boolesch | false |
HTML im Tooltip zulassen. Wenn wahr, werden HTML-Tags in den QuickInfos in der QuickInfo title gerendert. Wenn falsch, innerText wird die Eigenschaft verwendet, um Inhalte in das DOM einzufügen. Verwenden Sie Text, wenn Sie sich Sorgen über XSS-Angriffe machen. |
offset |
Array, Zeichenfolge, Funktion | [0, 0] |
Versatz des Tooltips relativ zu seinem Ziel. Sie können eine Zeichenfolge in Datenattributen mit kommagetrennten Werten übergeben, wie z. B.: data-bs-offset="10,20" . Wenn eine Funktion verwendet wird, um den Offset zu bestimmen, wird sie mit einem Objekt aufgerufen, das die Popper-Platzierung, die Referenz und die Popper-Rects als erstes Argument enthält. Als zweites Argument wird das auslösende Element DOM node übergeben. Die Funktion muss ein Array mit zwei Zahlen zurückgeben: skidding , distance . Weitere Informationen finden Sie in der Offset -Dokumentation von Popper . |
placement |
Zeichenfolge, Funktion | 'top' |
So positionieren Sie den Tooltip: automatisch, oben, unten, links, rechts. Wenn auto angegeben wird, wird der Tooltip dynamisch neu ausgerichtet. Wenn eine Funktion verwendet wird, um die Platzierung zu bestimmen, wird sie mit dem Tooltip-DOM-Knoten als erstem Argument und dem auslösenden Element-DOM-Knoten als zweitem Argument aufgerufen. Der this Kontext wird auf die Tooltip-Instanz gesetzt. |
popperConfig |
null, Objekt, Funktion | null |
Um die standardmäßige Popper-Konfiguration von Bootstrap zu ändern, siehe Poppers Konfiguration . Wenn eine Funktion zum Erstellen der Popper-Konfiguration verwendet wird, wird sie mit einem Objekt aufgerufen, das die Standard-Popper-Konfiguration von Bootstrap enthält. Es hilft Ihnen, die Standardeinstellung mit Ihrer eigenen Konfiguration zu verwenden und zusammenzuführen. Die Funktion muss ein Konfigurationsobjekt für Popper zurückgeben. |
sanitize |
boolesch | true |
Aktivieren oder deaktivieren Sie die Bereinigung. Wenn aktiviert 'template' , werden 'content' und 'title' Optionen bereinigt. |
sanitizeFn |
Null, Funktion | null |
Hier können Sie Ihre eigene Desinfektionsfunktion bereitstellen. Dies kann nützlich sein, wenn Sie es vorziehen, eine dedizierte Bibliothek zur Durchführung der Bereinigung zu verwenden. |
selector |
Zeichenfolge, falsch | false |
Wenn ein Selektor bereitgestellt wird, werden QuickInfo-Objekte an die angegebenen Ziele delegiert. In der Praxis wird dies verwendet, um Tooltips auch auf dynamisch hinzugefügte DOM-Elemente anzuwenden ( jQuery.on Unterstützung). Siehe diese Ausgabe und ein informatives Beispiel . |
template |
Schnur | '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' |
Basis-HTML, das beim Erstellen der QuickInfo verwendet werden soll. Die Tooltips title werden in die .tooltip-inner . .tooltip-arrow wird zum Pfeil des Tooltips. Das äußerste Wrapper-Element sollte die .tooltip Klasse und haben role="tooltip" . |
title |
Zeichenkette, Element, Funktion | '' |
Standardtitelwert, wenn title das Attribut nicht vorhanden ist. Wenn eine Funktion angegeben wird, wird sie aufgerufen, wobei ihre this Referenz auf das Element gesetzt wird, an das das Popover angehängt ist. |
trigger |
Schnur | 'hover focus' |
Wie der Tooltip ausgelöst wird: Klicken, Bewegen, Fokus, Manuell. Sie können mehrere Auslöser passieren; Trennen Sie sie mit einem Leerzeichen. 'manual' gibt an, dass der Tooltip programmgesteuert über die Methoden .tooltip('show') , .tooltip('hide') und ausgelöst wird; .tooltip('toggle') dieser Wert kann nicht mit anderen Triggern kombiniert werden. 'hover' allein führt zu Tooltips, die nicht über die Tastatur ausgelöst werden können, und sollten nur verwendet werden, wenn alternative Methoden zur Übermittlung derselben Informationen für Tastaturbenutzer vorhanden sind. |
Datenattribute für einzelne Tooltips
Optionen für einzelne Tooltips können alternativ, wie oben erläutert, durch die Verwendung von Datenattributen spezifiziert werden.
Verwenden der Funktion mitpopperConfig
const tooltip = new bootstrap.Tooltip(element, {
popperConfig(defaultBsPopperConfig) {
// const newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
Methoden
Asynchrone Methoden und Übergänge
Alle API-Methoden sind asynchron und starten einen Übergang . Sie kehren zum Aufrufer zurück, sobald der Übergang gestartet wird, aber bevor er endet . Außerdem wird ein Methodenaufruf einer Übergangskomponente ignoriert .
Weitere Informationen finden Sie in unserer JavaScript-Dokumentation .
Methode | Beschreibung |
---|---|
disable |
Entfernt die Möglichkeit, den Tooltip eines Elements anzuzeigen. Der Tooltip kann nur angezeigt werden, wenn er wieder aktiviert wird. |
dispose |
Verbirgt und zerstört den Tooltip eines Elements (entfernt gespeicherte Daten auf dem DOM-Element). QuickInfos, die Delegierung verwenden (die mit der selector Option erstellt werden ), können nicht einzeln für untergeordnete Auslöserelemente zerstört werden. |
enable |
Gibt dem Tooltip eines Elements die Möglichkeit, angezeigt zu werden. QuickInfos sind standardmäßig aktiviert. |
getInstance |
Statische Methode, mit der Sie die mit einem DOM-Element verknüpfte Tooltip-Instanz abrufen oder eine neue erstellen können, falls sie nicht initialisiert wurde. |
getOrCreateInstance |
Statische Methode, mit der Sie die mit einem DOM-Element verknüpfte Tooltip-Instanz abrufen oder eine neue erstellen können, falls sie nicht initialisiert wurde. |
hide |
Blendet den Tooltip eines Elements aus. Gibt den Aufrufer zurück, bevor der Tooltip tatsächlich ausgeblendet wurde (dh bevor das hidden.bs.tooltip Ereignis eintritt). Dies gilt als „manuelles“ Auslösen des Tooltips. |
setContent |
Bietet eine Möglichkeit, den Inhalt des Tooltips nach seiner Initialisierung zu ändern. |
show |
Zeigt den Tooltip eines Elements an. Kehrt zum Anrufer zurück, bevor der Tooltip tatsächlich angezeigt wurde (dh bevor das shown.bs.tooltip Ereignis eintritt). Dies gilt als „manuelles“ Auslösen des Tooltips. Tooltips mit leeren Titeln werden nie angezeigt. |
toggle |
Schaltet den Tooltip eines Elements um. Kehrt zum Aufrufer zurück, bevor der Tooltip tatsächlich angezeigt oder ausgeblendet wurde (dh bevor das shown.bs.tooltip oder hidden.bs.tooltip -Ereignis eintritt). Dies gilt als „manuelles“ Auslösen des Tooltips. |
toggleEnabled |
Schaltet die Möglichkeit um, den Tooltip eines Elements ein- oder auszublenden. |
update |
Aktualisiert die Position der QuickInfo eines Elements. |
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance
// setContent example
tooltip.setContent({ '.tooltip-inner': 'another title' })
setContent
Methode akzeptiert ein
object
Argument, wobei jeder Eigenschaftsschlüssel ein gültiger
string
Selektor innerhalb der Popover-Vorlage ist und jeder zugehörige Eigenschaftswert
string
|
sein kann element
|
function
|
null
Veranstaltungen
Vorfall | Beschreibung |
---|---|
hide.bs.tooltip |
Dieses Ereignis wird sofort ausgelöst, wenn die hide Instanzmethode aufgerufen wurde. |
hidden.bs.tooltip |
Dieses Ereignis wird ausgelöst, wenn das Popover vor dem Benutzer ausgeblendet wurde (wartet, bis die CSS-Übergänge abgeschlossen sind). |
inserted.bs.tooltip |
Dieses Ereignis wird nach dem show.bs.tooltip Ereignis ausgelöst, wenn die QuickInfo-Vorlage zum DOM hinzugefügt wurde. |
show.bs.tooltip |
Dieses Ereignis wird sofort ausgelöst, wenn die show Instanzmethode aufgerufen wird. |
shown.bs.tooltip |
Dieses Ereignis wird ausgelöst, wenn das Popover für den Benutzer sichtbar gemacht wurde (wartet auf den Abschluss der CSS-Übergänge). |
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)
myTooltipEl.addEventListener('hidden.bs.tooltip', () => {
// do something...
})
tooltip.hide()