Ga naar hoofdinhoud Ga naar navigatie in documenten
Check
in English

Knopinfo

Documentatie en voorbeelden voor het toevoegen van aangepaste Bootstrap-tooltips met CSS en JavaScript met CSS3 voor animaties en data-bs-attributen voor lokale titelopslag.

Overzicht

Wat u moet weten bij het gebruik van de tooltip-plug-in:

  • Tooltips vertrouwen op de externe bibliotheek Popper voor positionering. U moet popper.min.js vóór opnemen bootstrap.jsof er een gebruiken bootstrap.bundle.min.jsdie Popper bevat.
  • Tooltips zijn opt-in om prestatieredenen, dus u moet ze zelf initialiseren .
  • Knopinfo met titels met een lengte van nul worden nooit weergegeven.
  • Specificeer container: 'body'om weergaveproblemen in complexere componenten te voorkomen (zoals onze invoergroepen, knopgroepen, enz.).
  • Het activeren van tooltips op verborgen elementen werkt niet.
  • Tooltips voor .disabledof disabledelementen moeten worden geactiveerd op een wrapper-element.
  • Wanneer geactiveerd door hyperlinks die meerdere regels overspannen, worden tooltips gecentreerd. Gebruik white-space: nowrap;op uw <a>s om dit gedrag te voorkomen.
  • Knopinfo moet worden verborgen voordat de bijbehorende elementen uit het DOM zijn verwijderd.
  • Tooltips kunnen worden geactiveerd dankzij een element in een schaduw-DOM.

Heb je dat allemaal? Geweldig, laten we eens kijken hoe ze werken met enkele voorbeelden.

Standaard gebruikt dit onderdeel de ingebouwde inhoudsanitizer, die HTML-elementen verwijdert die niet expliciet zijn toegestaan. Zie het gedeelte over ontsmettingsmiddel in onze JavaScript-documentatie voor meer informatie.
Het animatie-effect van deze component is afhankelijk van de prefers-reduced-motionmediaquery. Zie het gedeelte over beperkte beweging van onze toegankelijkheidsdocumentatie .

Voorbeelden

Knopinfo inschakelen

Zoals hierboven vermeld, moet u tooltips initialiseren voordat ze kunnen worden gebruikt. Een manier om alle tooltips op een pagina te initialiseren, is door ze op hun data-bs-toggleattribuut te selecteren, zoals:

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

Plaats de muisaanwijzer op de onderstaande links om tooltips te zien:

Tijdelijke tekst om enkele inline-links met tooltips te demonstreren. Dit is nu gewoon opvulling, geen moordenaar. Inhoud die hier is geplaatst om de aanwezigheid van echte tekst na te bootsen . En dat allemaal om u een idee te geven van hoe tooltips eruit zouden zien als ze in echte situaties worden gebruikt. Dus hopelijk heb je nu gezien hoe deze tooltips over links in de praktijk kunnen werken, als je ze eenmaal op je eigen site of project gebruikt.

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>
Voel je vrij om een ​​van beide titleof data-bs-titlein je HTML te gebruiken. Wanneer titlewordt gebruikt, zal Popper het automatisch vervangen door data-bs-titlewanneer het element wordt weergegeven.

Aangepaste tooltips

Toegevoegd in v5.2.0

U kunt het uiterlijk van knopinfo aanpassen met behulp van CSS-variabelen . We stellen een aangepaste klasse in data-bs-custom-class="custom-tooltip"om ons aangepaste uiterlijk te bepalen en gebruiken deze om een ​​lokale CSS-variabele te overschrijven.

.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>

Routebeschrijving

Plaats de muisaanwijzer op de onderstaande knoppen om de vier tooltips-richtingen te zien: boven, rechts, onder en links. Routebeschrijvingen worden gespiegeld bij gebruik van Bootstrap in 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>

En met aangepaste HTML toegevoegd:

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

Met een SVG:

CSS

Variabelen

Toegevoegd in v5.2.0

Als onderdeel van Bootstrap's evoluerende benadering van CSS-variabelen, gebruiken tooltips nu lokale CSS .tooltip-variabelen voor verbeterde realtime aanpassingen. Waarden voor de CSS-variabelen worden ingesteld via Sass, dus Sass-aanpassing wordt ook nog steeds ondersteund.

  --#{$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-variabelen

$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

Gebruik

De tooltip-plug-in genereert on-demand inhoud en markeringen en plaatst standaard tooltips na hun trigger-element.

Activeer de knopinfo via JavaScript:

const exampleEl = document.getElementById('example')
const tooltip = new bootstrap.Tooltip(exampleEl, options)
Overloop autoenscroll

De positie van de knopinfo probeert automatisch te veranderen wanneer een bovenliggende container onze heeft overflow: autoof overflow: scrollleuk vindt .table-responsive, maar behoudt nog steeds de positionering van de oorspronkelijke plaatsing. Om dit op te lossen, stelt u de boundaryoptie (voor de flip-modifier die de popperConfigoptie gebruikt) in op een HTMLElement om de standaardwaarde te overschrijven 'clippingParents', zoals document.body:

const tooltip = new bootstrap.Tooltip('#example', {
  boundary: document.body // or document.querySelector('#boundary')
})

Markup

De vereiste opmaak voor een tooltip is slechts een dataattribuut en titleop het HTML-element wil je een tooltip hebben. De gegenereerde opmaak van een tooltip is vrij eenvoudig, maar vereist wel een positie (standaard ingesteld topdoor de plug-in).

Knopinfo laten werken voor gebruikers van toetsenborden en ondersteunende technologie

Voeg alleen tooltips toe aan HTML-elementen die traditioneel gericht zijn op het toetsenbord en interactief zijn (zoals koppelingen of formulierbesturingselementen). Hoewel willekeurige HTML-elementen (zoals <span>s) focusseerbaar kunnen worden gemaakt door het tabindex="0"attribuut toe te voegen, zal dit voor toetsenbordgebruikers mogelijk vervelende en verwarrende tabstops toevoegen op niet-interactieve elementen, en de meeste ondersteunende technologieën geven momenteel geen tooltip aan in deze situatie. Vertrouw er bovendien niet alleen op hoverals de trigger voor uw tooltip, omdat dit ervoor zorgt dat uw tooltips niet kunnen worden geactiveerd voor toetsenbordgebruikers.

<!-- 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>

Uitgeschakelde elementen

Elementen met het disabledattribuut zijn niet interactief, wat betekent dat gebruikers niet kunnen focussen, de muisaanwijzer erop kunnen plaatsen of erop kunnen klikken om knopinfo (of popover) te activeren. Als tijdelijke oplossing wilt u de knopinfo activeren vanuit een wrapper <div>of <span>, idealiter gemaakt voor toetsenbordfocus met behulp van 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>

Opties

Omdat opties kunnen worden doorgegeven via gegevensattributen of JavaScript, kunt u een optienaam toevoegen aan data-bs-, zoals in data-bs-animation="{value}". Zorg ervoor dat u het kasttype van de optienaam wijzigt van " camelCase " in " kebab-case " wanneer u de opties doorgeeft via gegevensattributen. Gebruik bijvoorbeeld in data-bs-custom-class="beautifier"plaats van data-bs-customClass="beautifier".

Vanaf Bootstrap 5.2.0 ondersteunen alle componenten een experimenteel gereserveerd gegevenskenmerk data-bs-configdat een eenvoudige componentconfiguratie als een JSON-tekenreeks kan bevatten. Wanneer een element attributen heeft data-bs-config='{"delay":0, "title":123}', zal data-bs-title="456"de uiteindelijke titlewaarde zijn 456en zullen de afzonderlijke gegevensattributen de waarden overschrijven die op data-bs-config. Bovendien kunnen bestaande gegevensattributen JSON-waarden zoals data-bs-delay='{"show":0,"hide":150}'.

Houd er rekening mee dat om veiligheidsredenen de opties sanitize, sanitizeFn, en allowListniet kunnen worden geleverd met gegevensattributen.
Naam Type Standaard Beschrijving
allowList object Standaardwaarde Object dat toegestane attributen en tags bevat.
animation booleaans true Pas een CSS-vervagingsovergang toe op de knopinfo.
boundary tekenreeks, element 'clippingParents' Overloopbeperkingsgrens van de tooltip (geldt alleen voor de preventOverflow-modifier van Popper). Standaard is 'clippingParents'en kan het een HTMLElement-referentie accepteren (alleen via JavaScript). Voor meer informatie raadpleegt u Popper's detectOverflow docs .
container string, element, false false Voegt de knopinfo toe aan een specifiek element. Voorbeeld: container: 'body'. Deze optie is met name handig omdat u de tooltip in de stroom van het document in de buurt van het activerende element kunt plaatsen - waardoor wordt voorkomen dat de tooltip van het triggerende element wegzweeft tijdens een venstergrootte.
customClass tekenreeks, functie '' Voeg klassen toe aan de knopinfo wanneer deze wordt weergegeven. Houd er rekening mee dat deze klassen worden toegevoegd naast de klassen die in de sjabloon zijn gespecificeerd. Om meerdere klassen toe te voegen, scheidt u ze met spaties: 'class-1 class-2'. U kunt ook een functie doorgeven die een enkele tekenreeks moet retourneren met extra klassenamen.
delay nummer, object 0 Vertraging bij het tonen en verbergen van de knopinfo (ms)—is niet van toepassing op het handmatige triggertype. Als een nummer wordt opgegeven, wordt vertraging toegepast op zowel verbergen/weergeven. Objectstructuur is: delay: { "show": 500, "hide": 100 }.
fallbackPlacements reeks ['top', 'right', 'bottom', 'left'] Definieer fallback-plaatsingen door een lijst met plaatsingen in een array op te geven (in volgorde van voorkeur). Raadpleeg voor meer informatie de gedragsdocumenten van Popper .
html booleaans false HTML toestaan ​​in de knopinfo. Indien waar, worden HTML-tags in de tooltip titleweergegeven in de tooltip. Indien onwaar, wordt innerTextde eigenschap gebruikt om inhoud in de DOM in te voegen. Gebruik sms als je je zorgen maakt over XSS-aanvallen.
offset array, string, functie [0, 0] Offset van de tooltip ten opzichte van het doel. U kunt een tekenreeks in gegevensattributen doorgeven met door komma's gescheiden waarden zoals: data-bs-offset="10,20". Wanneer een functie wordt gebruikt om de offset te bepalen, wordt deze aangeroepen met een object dat de popper-plaatsing, de referentie en popper-rects als eerste argument bevat. Het triggerelement DOM-knooppunt wordt doorgegeven als het tweede argument. De functie moet een array teruggeven met twee getallen: skidding , distance . Raadpleeg voor meer informatie de offsetdocumenten van Popper .
placement tekenreeks, functie 'top' Hoe de tooltip te positioneren: auto, boven, onder, links, rechts. Wanneer autois opgegeven, wordt de tooltip dynamisch heroriënteerd. Wanneer een functie wordt gebruikt om de plaatsing te bepalen, wordt deze aangeroepen met de tooltip DOM-node als eerste argument en het triggerende element DOM-node als tweede. De thiscontext is ingesteld op de tooltip-instantie.
popperConfig null, object, functie null Zie de configuratie van Popper om de standaard Popper-configuratie van Bootstrap te wijzigen . Wanneer een functie wordt gebruikt om de Popper-configuratie te maken, wordt deze aangeroepen met een object dat de standaard Popper-configuratie van Bootstrap bevat. Het helpt u de standaard te gebruiken en samen te voegen met uw eigen configuratie. De functie moet een configuratieobject voor Popper teruggeven.
sanitize booleaans true Schakel de desinfectie in of uit. Indien geactiveerd 'template', 'content'worden 'title'de opties gezuiverd.
sanitizeFn null, functie null Hier kunt u uw eigen ontsmettingsfunctie leveren. Dit kan handig zijn als u liever een speciale bibliotheek gebruikt om op te schonen.
selector string, false false Als er een selector is, worden knopinfo-objecten gedelegeerd aan de opgegeven doelen. In de praktijk wordt dit gebruikt om ook tooltips toe te passen op dynamisch toegevoegde DOM-elementen ( jQuery.onondersteuning). Zie dit nummer en een informatief voorbeeld .
template snaar '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' Basis-HTML om te gebruiken bij het maken van de knopinfo. De tooltip's titleworden in de .tooltip-inner. .tooltip-arrowwordt de pijl van de knopinfo. Het buitenste wrapper-element moet de .tooltipklasse en hebben role="tooltip".
title tekenreeks, element, functie '' Standaardtitelwaarde als titleattribuut niet aanwezig is. Als een functie is opgegeven, wordt deze aangeroepen met de thisreferentieset naar het element waaraan de popover is gekoppeld.
trigger snaar 'hover focus' Hoe tooltip wordt geactiveerd: klik, zweef, focus, handmatig. U kunt meerdere triggers doorgeven; scheid ze met een spatie. 'manual'geeft aan dat de tooltip programmatisch wordt geactiveerd via de .tooltip('show'), .tooltip('hide')en .tooltip('toggle')methoden; deze waarde kan niet worden gecombineerd met een andere trigger. 'hover'op zichzelf resulteert dit in tooltips die niet via het toetsenbord kunnen worden geactiveerd en mogen alleen worden gebruikt als er alternatieve methoden zijn om dezelfde informatie voor toetsenbordgebruikers over te brengen.

Gegevensattributen voor individuele knopinfo

Opties voor individuele tooltips kunnen ook worden gespecificeerd door het gebruik van data-attributen, zoals hierboven uitgelegd.

Functie gebruiken metpopperConfig

const tooltip = new bootstrap.Tooltip(element, {
  popperConfig(defaultBsPopperConfig) {
    // const newPopperConfig = {...}
    // use defaultBsPopperConfig if needed...
    // return newPopperConfig
  }
})

Methoden:

Asynchrone methoden en overgangen

Alle API-methoden zijn asynchroon en starten een transitie . Ze keren terug naar de beller zodra de overgang is gestart maar voordat deze eindigt . Bovendien wordt een methodeaanroep op een overgangscomponent genegeerd .

Zie onze JavaScript-documentatie voor meer informatie .

Methode Beschrijving
disable Verwijdert de mogelijkheid om de knopinfo van een element weer te geven. De knopinfo kan alleen worden weergegeven als deze opnieuw wordt ingeschakeld.
dispose Verbergt en vernietigt de tooltip van een element (verwijdert opgeslagen gegevens op het DOM-element). Tooltips die delegatie gebruiken (die zijn gemaakt met de selectoroptie ) kunnen niet afzonderlijk worden vernietigd op onderliggende triggerelementen.
enable Geeft de tooltip van een element de mogelijkheid om te worden weergegeven. Knopinfo is standaard ingeschakeld.
getInstance Statische methode waarmee u de tooltip-instantie kunt koppelen aan een DOM-element, of een nieuwe kunt maken voor het geval deze niet is geïnitialiseerd.
getOrCreateInstance Statische methode waarmee u de tooltip-instantie kunt koppelen aan een DOM-element, of een nieuwe kunt maken voor het geval deze niet is geïnitialiseerd.
hide Verbergt de knopinfo van een element. Keert terug naar de beller voordat de knopinfo daadwerkelijk is verborgen (dwz voordat de hidden.bs.tooltipgebeurtenis plaatsvindt). Dit wordt beschouwd als een "handmatige" activering van de tooltip.
setContent Geeft een manier om de inhoud van de knopinfo te wijzigen nadat deze is geïnitialiseerd.
show Onthult de tooltip van een element. Keert terug naar de beller voordat de tooltip daadwerkelijk is getoond (dwz voordat de shown.bs.tooltipgebeurtenis plaatsvindt). Dit wordt beschouwd als een "handmatige" activering van de tooltip. Knopinfo met titels van lengte nul worden nooit weergegeven.
toggle Schakelt de knopinfo van een element in. Keert terug naar de beller voordat de tooltip daadwerkelijk is getoond of verborgen (dwz voordat de shown.bs.tooltipof hidden.bs.tooltip-gebeurtenis plaatsvindt). Dit wordt beschouwd als een "handmatige" activering van de tooltip.
toggleEnabled Schakelt de mogelijkheid om de knopinfo van een element te tonen of te verbergen.
update Werkt de positie van de knopinfo van een element bij.
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance

// setContent example
tooltip.setContent({ '.tooltip-inner': 'another title' })
De setContentmethode accepteert een objectargument, waarbij elke eigenschapssleutel een geldige stringselector is binnen de popover-sjabloon, en elke gerelateerde eigenschapswaarde kan string| element| function| null

Evenementen

Evenement Beschrijving
hide.bs.tooltip Deze gebeurtenis wordt onmiddellijk geactiveerd wanneer de hideinstantiemethode is aangeroepen.
hidden.bs.tooltip Deze gebeurtenis wordt geactiveerd wanneer de popover is verborgen voor de gebruiker (wacht tot de CSS-overgangen zijn voltooid).
inserted.bs.tooltip Deze gebeurtenis wordt geactiveerd na de show.bs.tooltipgebeurtenis wanneer de tooltip-sjabloon is toegevoegd aan de DOM.
show.bs.tooltip Deze gebeurtenis wordt onmiddellijk geactiveerd wanneer de showinstantiemethode wordt aangeroepen.
shown.bs.tooltip Deze gebeurtenis wordt geactiveerd wanneer de popover zichtbaar is gemaakt voor de gebruiker (wacht tot de CSS-overgangen zijn voltooid).
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)

myTooltipEl.addEventListener('hidden.bs.tooltip', () => {
  // do something...
})

tooltip.hide()