Spring til hovedindhold Spring til dokumentnavigation
Check
in English

Værktøjstip

Dokumentation og eksempler på tilføjelse af brugerdefinerede Bootstrap-værktøjstip med CSS og JavaScript ved hjælp af CSS3 til animationer og data-bs-attributter til lokal titellagring.

Oversigt

Ting at vide, når du bruger værktøjstip-plugin:

  • Værktøjstip er afhængige af tredjepartsbiblioteket Popper til positionering. Du skal inkludere popper.min.js før bootstrap.js, eller bruge en bootstrap.bundle.min.js, der indeholder Popper.
  • Værktøjstip er opt-in af ydeevnemæssige årsager, så du skal selv initialisere dem .
  • Værktøjstip med titler på nul længde vises aldrig.
  • Angiv container: 'body'for at undgå gengivelse af problemer i mere komplekse komponenter (såsom vores inputgrupper, knapgrupper osv.).
  • At udløse værktøjstip på skjulte elementer vil ikke fungere.
  • Værktøjstip til .disabledeller disabledelementer skal udløses på et indpakningselement.
  • Når de udløses fra hyperlinks, der spænder over flere linjer, vil værktøjstip blive centreret. Brug white-space: nowrap;på dine <a>s for at undgå denne adfærd.
  • Værktøjstip skal skjules, før deres tilsvarende elementer er blevet fjernet fra DOM.
  • Værktøjstip kan udløses takket være et element inde i en skygge-DOM.

Har du alt det? Godt, lad os se, hvordan de fungerer med nogle eksempler.

Som standard bruger denne komponent den indbyggede indholdsrenser, som fjerner alle HTML-elementer, der ikke udtrykkeligt er tilladt. Se afsnittet om desinfektion i vores JavaScript-dokumentation for flere detaljer.
Animationseffekten af ​​denne komponent afhænger af prefers-reduced-motionmedieforespørgslen. Se afsnittet om reduceret bevægelse i vores tilgængelighedsdokumentation .

Eksempler

Aktiver værktøjstip

Som nævnt ovenfor skal du initialisere værktøjstip, før de kan bruges. En måde at initialisere alle værktøjstip på en side på ville være at vælge dem efter deres data-bs-toggleegenskab, som sådan:

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

Hold markøren over nedenstående links for at se værktøjstip:

Pladsholdertekst for at demonstrere nogle inline-links med værktøjstip. Dette er nu bare fyldstof, ingen dræber. Indhold placeret her blot for at efterligne tilstedeværelsen af ​​ægte tekst . Og alt det bare for at give dig en idé om, hvordan værktøjstip ville se ud, når de bruges i virkelige situationer. Så forhåbentlig har du nu set, hvordan disse værktøjstip om links kan fungere i praksis, når du først har brugt dem på dit eget websted eller dit eget projekt.

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>
Du er velkommen til at bruge enten titleeller data-bs-titlei din HTML. Når titledet bruges, vil Popper automatisk erstatte det med data-bs-title, når elementet gengives.

Brugerdefinerede værktøjstip

Tilføjet i v5.2.0

Du kan tilpasse udseendet af værktøjstip ved hjælp af CSS-variabler . Vi indstiller en brugerdefineret klasse med data-bs-custom-class="custom-tooltip"til at omfatte vores brugerdefinerede udseende og bruger den til at tilsidesætte en lokal CSS-variabel.

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

Vejbeskrivelse

Hold markøren over knapperne nedenfor for at se de fire værktøjstip-retninger: top, højre, bund og venstre. Retninger spejles, når du bruger Bootstrap i 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>

Og med tilpasset HTML tilføjet:

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

Med en SVG:

CSS

Variabler

Tilføjet i v5.2.0

Som en del af Bootstraps udviklende CSS-variabletilgang bruger værktøjstip nu lokale CSS-variabler .tooltiptil forbedret realtidstilpasning. Værdier for CSS-variablerne indstilles via Sass, så Sass-tilpasning understøttes også stadig.

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

$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

Brug

Værktøjstip-pluginnet genererer indhold og opmærkning efter behov og placerer som standard værktøjstip efter deres udløserelement.

Udløs værktøjstippet via JavaScript:

const exampleEl = document.getElementById('example')
const tooltip = new bootstrap.Tooltip(exampleEl, options)
Overløb autoogscroll

Værktøjstip-position forsøger automatisk at ændre sig, når en overordnet container har overflow: autoeller overflow: scrollkan lide vores .table-responsive, men beholder stadig den oprindelige placerings placering. For at løse dette skal du indstille boundaryindstillingen (for vendemodifikatoren, der bruger popperConfigindstillingen) til ethvert HTMLElement for at tilsidesætte standardværdien, 'clippingParents', såsom document.body:

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

Markup

Den nødvendige markering for et værktøjstip er kun en dataattribut, og titlepå HTML-elementet ønsker du at have et værktøjstip. Den genererede markering af et værktøjstip er ret enkel, selvom den kræver en position (som standard indstillet til topaf plugin).

Få værktøjstip til at fungere for brugere af tastatur og hjælpemidler

Du bør kun tilføje værktøjstip til HTML-elementer, der traditionelt er tastaturfokuserbare og interaktive (såsom links eller formularkontrolelementer). Selvom vilkårlige HTML-elementer (såsom <span>s) kan gøres fokusbare ved at tilføje tabindex="0"attributten, vil dette tilføje potentielt irriterende og forvirrende tabulatorstop på ikke-interaktive elementer for tastaturbrugere, og de fleste hjælpeteknologier annoncerer i øjeblikket ikke værktøjstip i denne situation. Derudover skal du ikke stole udelukkende på hoversom udløser for dit værktøjstip, da dette vil gøre dine værktøjstip umulige at udløse for tastaturbrugere.

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

Deaktiverede elementer

Elementer med disabledattributten er ikke interaktive, hvilket betyder, at brugere ikke kan fokusere, svæve eller klikke på dem for at udløse et værktøjstip (eller popover). Som en løsning vil du gerne udløse værktøjstippet fra en indpakning <div>eller <span>, ideelt lavet tastaturfokuserbart ved hjælp af 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>

Muligheder

Da muligheder kan videregives via dataattributter eller JavaScript, kan du tilføje et indstillingsnavn til data-bs-, som i data-bs-animation="{value}". Sørg for at ændre sagstypen for indstillingsnavnet fra " camelCase " til " kebab-case ", når du videregiver mulighederne via dataattributter. Brug for eksempel i data-bs-custom-class="beautifier"stedet for data-bs-customClass="beautifier".

Fra Bootstrap 5.2.0 understøtter alle komponenter en eksperimentel reserveret dataattribut data-bs-config, der kan rumme simpel komponentkonfiguration som en JSON-streng. Når et element har data-bs-config='{"delay":0, "title":123}'og data-bs-title="456"attributter, vil den endelige titleværdi være, 456og de separate dataattributter vil tilsidesætte værdier givet på data-bs-config. Derudover er eksisterende dataattributter i stand til at rumme JSON-værdier som data-bs-delay='{"show":0,"hide":150}'.

sanitizeBemærk, at valgmulighederne , sanitizeFn, og af sikkerhedsmæssige årsager allowListikke kan leveres ved hjælp af dataattributter.
Navn Type Standard Beskrivelse
allowList objekt Standard værdi Objekt som indeholder tilladte attributter og tags.
animation boolesk true Anvend en CSS-fade-overgang til værktøjstip.
boundary streng, element 'clippingParents' Overløbsbegrænsningsgrænse for værktøjstip (gælder kun for Poppers preventOverflow-modifikator). Som standard er 'clippingParents'og kan det acceptere en HTMLElement-reference (kun via JavaScript). For mere information henvises til Poppers detectOverflow-dokumenter .
container streng, element, falsk false Føjer værktøjstip til et bestemt element. Eksempel: container: 'body'. Denne mulighed er især nyttig, fordi den giver dig mulighed for at placere værktøjstip i dokumentflowet nær det udløsende element - hvilket vil forhindre værktøjstip i at flyde væk fra det udløsende element under en vinduesstørrelsesændring.
customClass streng, funktion '' Tilføj klasser til værktøjstippet, når det vises. Bemærk, at disse klasser vil blive tilføjet ud over de klasser, der er angivet i skabelonen. For at tilføje flere klasser skal du adskille dem med mellemrum: 'class-1 class-2'. Du kan også sende en funktion, der skal returnere en enkelt streng, der indeholder yderligere klassenavne.
delay nummer, genstand 0 Forsinket visning og skjulning af værktøjstip (ms) – gælder ikke for manuel triggertype. Hvis et nummer er angivet, anvendes forsinkelse på både skjul/show. Objektstrukturen er: delay: { "show": 500, "hide": 100 }.
fallbackPlacements array ['top', 'right', 'bottom', 'left'] Definer reserveplaceringer ved at angive en liste over placeringer i matrix (i præferencerækkefølge). For mere information henvises til Poppers adfærdsdokumenter .
html boolesk false Tillad HTML i værktøjstippet. Hvis det er sandt, vil HTML-tags i værktøjstippet titleblive gengivet i værktøjstip. Hvis falsk, innerTextvil egenskaben blive brugt til at indsætte indhold i DOM. Brug tekst, hvis du er bekymret for XSS-angreb.
offset array, streng, funktion [0, 0] Forskydning af værktøjstip i forhold til dets mål. Du kan sende en streng i dataattributter med kommaseparerede værdier som: data-bs-offset="10,20". Når en funktion bruges til at bestemme forskydningen, kaldes den med et objekt, der indeholder popperplaceringen, referencen og popper rects som dets første argument. Det udløsende element DOM-node sendes som det andet argument. Funktionen skal returnere en matrix med to tal: udskridning , afstand . For mere information henvises til Poppers offset-dokumenter .
placement streng, funktion 'top' Sådan placeres værktøjstip: auto, top, bund, venstre, højre. Når autodet er angivet, vil det dynamisk omorientere værktøjstip. Når en funktion bruges til at bestemme placeringen, kaldes den med værktøjstip DOM-knudepunktet som dets første argument og det udløsende element DOM-noden som dets andet. Konteksten thisindstilles til værktøjstip-forekomsten.
popperConfig null, objekt, funktion null For at ændre Bootstraps standard Popper -konfiguration, se Poppers konfiguration . Når en funktion bruges til at oprette Popper-konfigurationen, kaldes den med et objekt, der indeholder Bootstraps standard Popper-konfiguration. Det hjælper dig med at bruge og flette standarden med din egen konfiguration. Funktionen skal returnere et konfigurationsobjekt for Popper.
sanitize boolesk true Aktiver eller deaktiver desinficering. Hvis aktiveret 'template', 'content'og 'title'muligheder vil blive renset.
sanitizeFn null, funktion null Her kan du levere din egen desinficeringsfunktion. Dette kan være nyttigt, hvis du foretrækker at bruge et dedikeret bibliotek til at udføre desinficering.
selector streng, falsk false Hvis der er angivet en vælger, vil værktøjstip-objekter blive uddelegeret til de angivne mål. I praksis bruges dette til også at anvende værktøjstip til dynamisk tilføjede DOM-elementer ( jQuery.onunderstøttelse). Se dette nummer og et informativt eksempel .
template snor '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' Base HTML til brug, når du opretter værktøjstip. Værktøjstip titlevil blive injiceret i .tooltip-inner. .tooltip-arrowbliver pilen til værktøjstip. Det yderste indpakningselement skal have .tooltipklassen og role="tooltip".
title streng, element, funktion '' Standard titelværdi, hvis titleattribut ikke er til stede. Hvis en funktion er givet, vil den blive kaldt med dens thisreference sat til det element, som popoveren er knyttet til.
trigger snor 'hover focus' Hvordan værktøjstip udløses: klik, svæv, fokus, manuel. Du kan passere flere triggere; adskille dem med et mellemrum. 'manual'angiver, at værktøjstip vil blive udløst programmatisk via .tooltip('show'), .tooltip('hide')og .tooltip('toggle')metoderne; denne værdi kan ikke kombineres med nogen anden trigger. 'hover'i sig selv vil resultere i værktøjstip, der ikke kan udløses via tastaturet, og bør kun bruges, hvis alternative metoder til at formidle den samme information til tastaturbrugere er til stede.

Dataattributter for individuelle værktøjstip

Valgmuligheder for individuelle værktøjstip kan alternativt specificeres ved brug af dataattributter, som forklaret ovenfor.

Bruger funktion medpopperConfig

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

Metoder

Asynkrone metoder og overgange

Alle API - metoder er asynkrone og starter en overgang . De vender tilbage til den, der ringer, så snart overgangen er startet, men før den slutter . Derudover vil et metodekald på en overgangskomponent blive ignoreret .

Se vores JavaScript-dokumentation for mere information .

Metode Beskrivelse
disable Fjerner muligheden for, at et elements værktøjstip vises. Værktøjstippet vil kun kunne vises, hvis det er genaktiveret.
dispose Skjuler og ødelægger et elements værktøjstip (fjerner lagrede data på DOM-elementet). Værktøjstip, der bruger delegering (som oprettes ved hjælp af selectormuligheden ), kan ikke individuelt destrueres på efterkommer-triggerelementer.
enable Giver et elements værktøjstip mulighed for at blive vist. Værktøjstip er aktiveret som standard.
getInstance Statisk metode, som giver dig mulighed for at få værktøjstip-instansen tilknyttet et DOM-element, eller oprette en ny, hvis den ikke blev initialiseret.
getOrCreateInstance Statisk metode, som giver dig mulighed for at få værktøjstip-instansen tilknyttet et DOM-element, eller oprette en ny, hvis den ikke blev initialiseret.
hide Skjuler et elements værktøjstip. Vender tilbage til den, der ringer, før værktøjstip rent faktisk er blevet skjult (dvs. før hidden.bs.tooltiphændelsen indtræffer). Dette betragtes som en "manuel" udløsning af værktøjstip.
setContent Giver en måde at ændre værktøjstips indhold efter initialisering.
show Viser et elements værktøjstip. Vender tilbage til den, der ringer, før værktøjstip faktisk er blevet vist (dvs. før shown.bs.tooltiphændelsen indtræffer). Dette betragtes som en "manuel" udløsning af værktøjstip. Værktøjstip med titler på nul længde vises aldrig.
toggle Skifter et elements værktøjstip. Vender tilbage til den, der ringer, før værktøjstip faktisk er blevet vist eller skjult (dvs. før hændelsen shown.bs.tooltipeller hidden.bs.tooltipindtræffer). Dette betragtes som en "manuel" udløsning af værktøjstip.
toggleEnabled Skifter muligheden for, at et elements værktøjstip vises eller skjules.
update Opdaterer placeringen af ​​et elements værktøjstip.
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance

// setContent example
tooltip.setContent({ '.tooltip-inner': 'another title' })
Metoden setContentaccepterer et objectargument, hvor hver egenskabsnøgle er en gyldig stringvælger i popover-skabelonen, og hver relateret egenskabsværdi kan være string| element| function| null

Begivenheder

Begivenhed Beskrivelse
hide.bs.tooltip Denne hændelse udløses straks, når hideinstansmetoden er blevet kaldt.
hidden.bs.tooltip Denne hændelse udløses, når popoveren er færdig med at blive skjult for brugeren (vil vente på, at CSS-overgange er fuldført).
inserted.bs.tooltip Denne hændelse udløses efter show.bs.tooltiphændelsen, når værktøjstip-skabelonen er blevet tilføjet til DOM.
show.bs.tooltip Denne hændelse udløses med det samme, når showinstansmetoden kaldes.
shown.bs.tooltip Denne hændelse udløses, når popoveren er gjort synlig for brugeren (vil vente på, at CSS-overgange er fuldført).
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)

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

tooltip.hide()