Naar de inhoud
Gratis naslagwerk over HTML
HTML leren en naslaan
Bootstrap 5.2 / Componenten

Tooltips

Documentatie en voorbeelden voor het toevoegen van eigen Bootstrap-tooltips met CSS en JavaScript, met CSS3 voor animaties en data-bs-attributen voor lokale opslag van de titel.

Overzicht

Dingen om te weten bij het gebruik van de tooltip-plugin:

  • Tooltips leunen voor de positionering op de externe bibliotheek Popper. Je moet popper.min.js vóór bootstrap.js opnemen, of één bootstrap.bundle.min.js gebruiken waarin Popper zit.
  • Tooltips zijn om prestatieredenen opt-in, dus je moet ze zelf initialiseren.
  • Tooltips met een titel van lengte nul worden nooit weergegeven.
  • Geef container: 'body' op om weergaveproblemen in complexere componenten (zoals onze input groups, button groups enz.) te voorkomen.
  • Tooltips activeren op verborgen elementen werkt niet.
  • Tooltips voor .disabled- of disabled-elementen moeten via een omhullend element worden geactiveerd.
  • Wanneer ze vanuit hyperlinks over meerdere regels worden geactiveerd, worden tooltips gecentreerd. Gebruik white-space: nowrap; op je <a>s om dat gedrag te voorkomen.
  • Tooltips moeten verborgen zijn voordat de bijbehorende elementen uit de DOM worden verwijderd.
  • Tooltips kunnen worden geactiveerd door een element binnen een shadow DOM.

Alles duidelijk? Mooi, laten we met een paar voorbeelden kijken hoe ze werken.

Let op

Bootstraps JavaScript reinigt HTML die via opties binnenkomt (bijvoorbeeld de inhoud van een tooltip of popover) met een ingebouwde sanitizer, om het risico op XSS te beperken.

Let op

Animaties en overgangen houden rekening met de instelling prefers-reduced-motion. Heeft een bezoeker in het besturingssysteem om minder beweging gevraagd, dan vallen overgangen weg.

Voorbeelden

Tooltips inschakelen

Zoals hierboven vermeld moet je tooltips initialiseren voordat je ze kunt gebruiken. Eén manier om alle tooltips op een pagina te initialiseren is ze via hun data-bs-toggle-attribuut te selecteren, zoals hier:

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

Hover over de links hieronder om tooltips te zien:

HTML
<p class="muted">Opvultekst om een paar <a href="#" data-bs-toggle="tooltip" data-bs-title="Standaard tooltip">inline links</a> met tooltips te demonstreren. Dit is nu gewoon vulling, niets bijzonders. Content die hier alleen staat om de aanwezigheid van <a href="#" data-bs-toggle="tooltip" data-bs-title="Nog een tooltip">echte tekst</a> na te bootsen. En dat allemaal om je een idee te geven van hoe tooltips eruitzien in praktijksituaties. Hopelijk heb je nu gezien hoe <a href="#" data-bs-toggle="tooltip" data-bs-title="Hier ook nog eentje">deze tooltips op links</a> in de praktijk kunnen werken, zodra je ze op <a href="#" data-bs-toggle="tooltip" data-bs-title="De laatste tip!">je eigen</a> site of project gebruikt.
</p>
Let op

Gebruik voor dit component altijd data-bs-title in plaats van het gewone title-attribuut: sommige HTML-elementen tonen anders zowel de eigen native tooltip als die van Bootstrap.

Eigen tooltips

Nieuw in v5.2.0

Je kunt het uiterlijk van tooltips aanpassen met CSS-variabelen. We stellen een eigen klasse in met data-bs-custom-class="custom-tooltip" om ons aangepaste uiterlijk af te bakenen, en gebruiken die om een lokale CSS-variabele te overschrijven.

Standaardwaarden: zie site/assets/scss/_component-examples.scss in de Bootstrap-broncode.

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="Deze tooltip bovenaan is via CSS-variabelen van een thema voorzien.">
  Eigen tooltip
</button>

Richtingen

Hover over de knoppen hieronder om de vier tooltip-richtingen te zien: boven, rechts, onder en links. De richtingen worden gespiegeld wanneer je Bootstrap in RTL gebruikt.

HTML
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" data-bs-title="Tooltip bovenaan">
  Tooltip bovenaan
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="right" data-bs-title="Tooltip rechts">
  Tooltip rechts
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-title="Tooltip onderaan">
  Tooltip onderaan
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="left" data-bs-title="Tooltip links">
  Tooltip links
</button>

En met eigen HTML toegevoegd:

HTML
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-html="true" data-bs-title="<em>Tooltip</em> <u>met</u> <b>HTML</b>">
  Tooltip met HTML
</button>

Met een SVG:

CSS

Variabelen

Nieuw in v5.2.0

Als onderdeel van Bootstraps groeiende aanpak met CSS-variabelen gebruiken tooltips nu lokale CSS-variabelen op .tooltip, voor betere aanpassingen in realtime. De waarden voor de CSS-variabelen worden via Sass ingesteld, dus aanpassen via Sass wordt nog steeds ondersteund.

Standaardwaarden: zie scss/_tooltip.scss in de Bootstrap-broncode.

Sass-variabelen

Standaardwaarden: zie scss/_variables.scss in de Bootstrap-broncode.

Gebruik

De tooltip-plugin genereert content en markup op aanvraag, en plaatst tooltips standaard achter hun trigger-element.

Activeer de tooltip via JavaScript:

JS
const exampleEl = document.getElementById('example')
const tooltip = new bootstrap.Tooltip(exampleEl, options)
Let op
Overflow auto en scroll

De tooltip-positie probeert automatisch te veranderen wanneer een bovenliggende container overflow: auto of overflow: scroll heeft, zoals onze .table-responsive, maar behoudt daarbij wel de oorspronkelijke plaatsing. Om dit op te lossen stel je de boundary-optie in (voor de flip-modifier via de optie popperConfig) op een willekeurig HTMLElement om de standaardwaarde 'clippingParents' te overschrijven, bijvoorbeeld document.body:

Markup

De vereiste markup voor een tooltip is alleen een data-attribuut en een title op het HTML-element dat je een tooltip wilt geven. De gegenereerde markup van een tooltip is vrij eenvoudig, al vereist hij wel een positie (standaard door de plugin op top gezet).

Let op
Tooltips laten werken voor gebruikers van toetsenbord en hulptechnologie

Voeg tooltips alleen toe aan HTML-elementen die van oudsher met het toetsenbord te focussen en interactief zijn (zoals links of formulierbesturingselementen). Hoewel willekeurige HTML-elementen (zoals <span>s) focusbaar gemaakt kunnen worden door het attribuut tabindex="0" toe te voegen, levert dat mogelijk irritante en verwarrende tabstops op niet-interactieve elementen op voor toetsenbordgebruikers, en de meeste hulptechnologieën kondigen de tooltip in die situatie momenteel niet aan. Vertrouw daarnaast niet uitsluitend op hover als trigger voor je tooltip, want daarmee wordt je tooltip onbereikbaar voor toetsenbordgebruikers.

HTML
<!-- HTML to write -->
<a href="#" data-bs-toggle="tooltip" data-bs-title="Wat tooltip-tekst!">Hover over mij</a>

<!-- Generated markup by the plugin -->
<div class="tooltip bs-tooltip-top" role="tooltip">
  <div class="tooltip-arrow"></div>
  <div class="tooltip-inner">
    Wat tooltip-tekst!
  </div>
</div>

Uitgeschakelde elementen

Elementen met het disabled-attribuut zijn niet interactief, wat betekent dat gebruikers ze niet kunnen focussen, erover kunnen hoveren of erop kunnen klikken om een tooltip (of popover) te activeren. Als tijdelijke oplossing activeer je de tooltip vanuit een omhullende <div> of <span>, idealiter met tabindex="0" focusbaar gemaakt met het toetsenbord.

HTML
<span class="d-inline-block" tabindex="0" data-bs-toggle="tooltip" data-bs-title="Uitgeschakelde tooltip">
  <button class="btn btn-primary" type="button" disabled>Uitgeschakelde knop</button>
</span>

Opties

De meeste plugins kun je aanzetten zonder JavaScript te schrijven, puur met een data-bs-*-attribuut als trigger. Al deze data-attributen zijn genamespaced met bs-, zodat ze niet botsen met andere scripts.

Let op

Let op: om veiligheidsredenen kunnen de opties sanitize, sanitizeFn en allowList niet via data-attributen worden meegegeven.

Naam Type Standaard Omschrijving
allowList object Standaardwaarde Object met toegestane attributen en tags.
animation boolean true Past een CSS-fade-transitie op de tooltip toe.
boundary string, element 'clippingParents' Overflow-begrenzing van de tooltip (geldt alleen voor Poppers preventOverflow-modifier). Standaard is dat 'clippingParents'; het kan een verwijzing naar een HTMLElement accepteren (alleen via JavaScript). Zie voor meer informatie Poppers detectOverflow-documentatie.
container string, element, false false Voegt de tooltip aan een specifiek element toe. Voorbeeld: container: 'body'. Deze optie is vooral handig omdat je de tooltip daarmee in de flow van het document dicht bij het trigger-element kunt positioneren — wat voorkomt dat de tooltip bij het vergroten of verkleinen van het venster van het trigger-element wegdrijft.
customClass string, function '' Voegt klassen aan de tooltip toe wanneer die getoond wordt. Let op: die klassen komen bovenop eventuele klassen in de template. Wil je meerdere klassen toevoegen, scheid ze dan met spaties: 'class-1 class-2'. Je kunt ook een functie meegeven die één string met extra klassenamen teruggeeft.
delay number, object 0 Vertraagt het tonen en verbergen van de tooltip (ms) — geldt niet voor het handmatige triggertype. Bij een getal wordt de vertraging op zowel verbergen als tonen toegepast. De objectstructuur is: delay: { "show": 500, "hide": 100 }.
fallbackPlacements array ['top', 'right', 'bottom', 'left'] Definieer terugvalplaatsingen door een lijst met plaatsingen in een array op te geven (in volgorde van voorkeur). Zie voor meer informatie Poppers gedragsdocumentatie.
html boolean false Staat HTML in de tooltip toe. Bij true worden HTML-tags in de title van de tooltip in de tooltip weergegeven. Bij false wordt de eigenschap innerText gebruikt om content in de DOM te zetten. Gebruik tekst als je je zorgen maakt over XSS-aanvallen.
offset array, string, function [0, 0] Offset van de tooltip ten opzichte van zijn doel. Je kunt in data-attributen een string met door komma's gescheiden waarden meegeven, zoals data-bs-offset="10,20". Wanneer een functie de offset bepaalt, wordt die aangeroepen met als eerste argument een object met de popper-plaatsing, de referentie en de popper-rects. De DOM-node van het trigger-element wordt als tweede argument meegegeven. De functie moet een array met twee getallen teruggeven: skidding, distance. Zie voor meer informatie Poppers offset-documentatie.
placement string, function 'top' Hoe de tooltip gepositioneerd wordt: auto, top, bottom, left, right. Bij auto wordt de tooltip dynamisch geheroriënteerd. Wanneer een functie de plaatsing bepaalt, wordt die aangeroepen met de DOM-node van de tooltip als eerste argument en de DOM-node van het trigger-element als tweede. De this-context wordt op de tooltip-instantie gezet.
popperConfig null, object, function null Zie Poppers configuratie om de standaard Popper-configuratie van Bootstrap te wijzigen. Wanneer een functie de Popper-configuratie maakt, wordt die aangeroepen met een object dat de standaard Popper-configuratie van Bootstrap bevat. Zo kun je die gebruiken en met je eigen configuratie samenvoegen. De functie moet een configuratieobject voor Popper teruggeven.
sanitize boolean true Schakelt de sanitatie in of uit. Als die actief is, worden de opties 'template', 'content' en 'title' gesaneerd.
sanitizeFn null, function null Hier kun je je eigen sanitize-functie meegeven. Dat kan handig zijn als je liever een speciale bibliotheek voor sanitatie gebruikt.
selector string, false false Wanneer er een selector is opgegeven, worden tooltip-objecten aan de opgegeven doelen gedelegeerd. In de praktijk gebruik je dit om tooltips ook op dynamisch toegevoegde DOM-elementen toe te passen (jQuery.on-ondersteuning). Zie dit issue en een verhelderend voorbeeld. Let op: het title-attribuut mag niet als selector gebruikt worden.
template string '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' Basis-HTML die gebruikt wordt bij het maken van de tooltip. De title van de tooltip wordt in de .tooltip-inner geïnjecteerd. .tooltip-arrow wordt het pijltje van de tooltip. Het buitenste omhullende element hoort de klasse .tooltip en role="tooltip" te hebben.
title string, element, function '' Standaard titelwaarde als het title-attribuut ontbreekt. Bij een functie wordt die aangeroepen met de this-referentie gezet op het element waaraan de popover is gekoppeld.
trigger string 'hover focus' Hoe de tooltip wordt geactiveerd: click, hover, focus, manual. Je kunt meerdere triggers meegeven; scheid ze met een spatie. 'manual' geeft aan dat de tooltip programmatisch wordt geactiveerd via de methodes .tooltip('show'), .tooltip('hide') en .tooltip('toggle'); deze waarde kan niet met een andere trigger worden gecombineerd. 'hover' op zichzelf levert tooltips op die niet met het toetsenbord te activeren zijn, en zou alleen gebruikt moeten worden als er alternatieve manieren zijn om dezelfde informatie aan toetsenbordgebruikers over te brengen.
Let op

Data-attributen voor afzonderlijke tooltips

Opties voor afzonderlijke tooltips kun je, zoals hierboven uitgelegd, ook via data-attributen opgeven.

Een functie gebruiken met popperConfig

JS
const tooltip = new bootstrap.Tooltip(element, {
  popperConfig(defaultBsPopperConfig) {
    // const newPopperConfig = {...}
    // gebruik defaultBsPopperConfig indien nodig...
    // return newPopperConfig
  }
})

Methodes

Gevaar

Deze methode start een overgang. Roep hem niet opnieuw aan zolang de vorige nog bezig is: dat levert onverwacht gedrag op. Wacht op het bijbehorende gebeurtenis voordat je opnieuw aanroept.

Methode Omschrijving
disable Zorgt dat de tooltip van een element niet meer getoond kan worden. De tooltip kan pas weer getoond worden als hij opnieuw wordt ingeschakeld.
dispose Verbergt en vernietigt de tooltip van een element (verwijdert opgeslagen gegevens van het DOM-element). Tooltips die delegatie gebruiken (aangemaakt met de optie selector) kunnen niet afzonderlijk op onderliggende trigger-elementen vernietigd worden.
enable Zorgt dat de tooltip van een element getoond kan worden. Tooltips zijn standaard ingeschakeld.
getInstance Statische methode waarmee je de tooltip-instantie kunt ophalen die bij een DOM-element hoort, of een nieuwe kunt aanmaken als die nog niet was geïnitialiseerd.
getOrCreateInstance Statische methode waarmee je de tooltip-instantie kunt ophalen die bij een DOM-element hoort, of een nieuwe kunt aanmaken als die nog niet was geïnitialiseerd.
hide Verbergt de tooltip van een element. Keert terug naar de aanroeper voordat de tooltip daadwerkelijk verborgen is (dus vóór de gebeurtenis hidden.bs.tooltip). Dit geldt als "handmatig" activeren van de tooltip.
setContent Biedt een manier om de content van de tooltip na initialisatie te wijzigen.
show Toont de tooltip van een element. Keert terug naar de aanroeper voordat de tooltip daadwerkelijk getoond is (dus vóór de gebeurtenis shown.bs.tooltip). Dit geldt als "handmatig" activeren van de tooltip. Tooltips met een titel van lengte nul worden nooit weergegeven.
toggle Schakelt de tooltip van een element. Keert terug naar de aanroeper voordat de tooltip daadwerkelijk getoond of verborgen is (dus vóór de gebeurtenis shown.bs.tooltip of hidden.bs.tooltip). Dit geldt als "handmatig" activeren van de tooltip.
toggleEnabled Schakelt of de tooltip van een element getoond of verborgen kan worden.
update Werkt de positie van de tooltip van een element bij.
JS
const tooltip = bootstrap.Tooltip.getInstance('#example') // Geeft een Bootstrap-tooltip-instantie terug

// setContent-voorbeeld
tooltip.setContent({ '.tooltip-inner': 'een andere titel' })
Let op

De methode setContent accepteert een object-argument, waarbij elke property-sleutel een geldige string-selector binnen de popover-template is, en elke bijbehorende property-waarde string | element | function | null kan zijn.

Gebeurtenissen

Gebeurtenis Omschrijving
hide.bs.tooltip Deze gebeurtenis wordt direct afgevuurd wanneer de instantiemethode hide is aangeroepen.
hidden.bs.tooltip Deze gebeurtenis wordt afgevuurd wanneer de popover volledig voor de gebruiker verborgen is (wacht tot de CSS-transities voltooid zijn).
inserted.bs.tooltip Deze gebeurtenis wordt na de gebeurtenis show.bs.tooltip afgevuurd, wanneer de tooltip-template aan de DOM is toegevoegd.
show.bs.tooltip Deze gebeurtenis wordt direct afgevuurd wanneer de instantiemethode show wordt aangeroepen.
shown.bs.tooltip Deze gebeurtenis wordt afgevuurd wanneer de popover zichtbaar is gemaakt voor de gebruiker (wacht tot de CSS-transities voltooid zijn).
JS
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)

myTooltipEl.addEventListener('hidden.bs.tooltip', () => {
  // doe iets...
})

tooltip.hide()