Verktøytips
Dokumentasjon og eksempler for å legge til egendefinerte Bootstrap-verktøytips med CSS og JavaScript ved å bruke CSS3 for animasjoner og data-bs-attributter for lokal tittellagring.
Oversikt
Ting å vite når du bruker verktøytips-pluginen:
- Verktøytips er avhengige av tredjepartsbiblioteket Popper for posisjonering. Du må inkludere popper.min.js før
bootstrap.js
, eller bruke enbootstrap.bundle.min.js
som inneholder Popper. - Verktøytips er opt-in av ytelsesårsaker, så du må initialisere dem selv .
- Verktøytips med null-lengde titler vises aldri.
- Spesifiser
container: 'body'
for å unngå å gjengi problemer i mer komplekse komponenter (som våre inndatagrupper, knappegrupper osv.). - Å utløse verktøytips på skjulte elementer vil ikke fungere.
- Verktøytips for
.disabled
ellerdisabled
elementer må utløses på et innpakningselement. - Når de utløses fra hyperkoblinger som spenner over flere linjer, vil verktøytips bli sentrert. Bruk
white-space: nowrap;
på din<a>
s for å unngå denne oppførselen. - Verktøytips må skjules før de tilhørende elementene er fjernet fra DOM.
- Verktøytips kan utløses takket være et element inne i en skygge-DOM.
Har du alt det? Flott, la oss se hvordan de fungerer med noen eksempler.
prefers-reduced-motion
mediesøket. Se delen
for redusert bevegelse i tilgjengelighetsdokumentasjonen vår .
Eksempler
Aktiver verktøytips
Som nevnt ovenfor, må du initialisere verktøytips før de kan brukes. En måte å initialisere alle verktøytips på en side på er å velge dem etter data-bs-toggle
attributtet deres, slik:
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
Verktøytips om lenker
Hold markøren over koblingene nedenfor for å se verktøytips:
Plassholdertekst for å demonstrere noen innebygde lenker med verktøytips. Dette er nå bare filler, ingen morder. Innhold plassert her bare for å etterligne tilstedeværelsen av ekte tekst . Og alt det bare for å gi deg en idé om hvordan verktøytips vil se ut når de brukes i virkelige situasjoner. Så forhåpentligvis har du nå sett hvordan disse verktøytipsene om lenker kan fungere i praksis, når du først bruker dem på ditt eget nettsted eller prosjekt.
<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
eller
data-bs-title
i HTML-en din. Når
title
det brukes, vil Popper erstatte det automatisk med
data-bs-title
når elementet er gjengitt.
Egendefinerte verktøytips
Lagt til i v5.2.0Du kan tilpasse utseendet til verktøytips ved å bruke CSS-variabler . Vi setter en egendefinert klasse med data-bs-custom-class="custom-tooltip"
for å omfatte vårt tilpassede utseende og bruker den til å overstyre en lokal CSS-variabel.
.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>
Veibeskrivelse
Hold markøren over knappene nedenfor for å se de fire verktøytipsretningene: topp, høyre, bunn og venstre. Retningene speiles når du bruker 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 lagt til:
<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
Lagt til i v5.2.0Som en del av Bootstraps utviklende tilnærming til CSS-variabler, bruker verktøytips nå lokale CSS-variabler .tooltip
for forbedret sanntidstilpasning. Verdier for CSS-variablene settes via Sass, så Sass-tilpasning støttes fortsatt også.
--#{$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 variabler
$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
Bruk
Verktøytips-pluginen genererer innhold og markering på forespørsel, og plasserer som standard verktøytips etter utløserelementet.
Utløs verktøytipset via JavaScript:
const exampleEl = document.getElementById('example')
const tooltip = new bootstrap.Tooltip(exampleEl, options)
Overløp auto
ogscroll
Verktøytipsposisjon prøver å endres automatisk når en overordnet beholder har overflow: auto
eller overflow: scroll
liker vår .table-responsive
, men beholder fortsatt den opprinnelige plasseringens posisjon. For å løse dette, sett boundary
alternativet (for flip-modifikatoren som bruker popperConfig
alternativet) til et hvilket som helst HTMLElement for å overstyre standardverdien, 'clippingParents'
, for eksempel document.body
:
const tooltip = new bootstrap.Tooltip('#example', {
boundary: document.body // or document.querySelector('#boundary')
})
Markup
Den nødvendige markeringen for et verktøytips er kun et data
attributt og title
på HTML-elementet ønsker du å ha et verktøytips. Den genererte markeringen av et verktøytips er ganske enkel, selv om den krever en posisjon (som standard satt til top
av plugin).
Få verktøytips til å fungere for brukere av tastatur og hjelpemidler
Du bør bare legge til verktøytips til HTML-elementer som tradisjonelt er tastaturfokuserbare og interaktive (som lenker eller skjemakontroller). Selv om vilkårlige HTML-elementer (som <span>
s) kan gjøres fokuserbare ved å legge til tabindex="0"
attributtet, vil dette legge til potensielt irriterende og forvirrende tabulatorstopp på ikke-interaktive elementer for tastaturbrukere, og de fleste hjelpeteknologier annonserer for øyeblikket ikke verktøytipset i denne situasjonen. I tillegg, ikke stol bare på hover
som utløser for verktøytipset ditt, da dette vil gjøre verktøytipsene umulige å utløse for tastaturbrukere.
<!-- 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>
Deaktiverte elementer
Elementer med disabled
attributtet er ikke interaktive, noe som betyr at brukere ikke kan fokusere, holde musepekeren eller klikke på dem for å utløse et verktøytips (eller popover). Som en løsning vil du trigge verktøytipset fra en wrapper <div>
eller <span>
, ideelt gjort tastaturfokuserbar ved hjelp av 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>
Alternativer
Siden alternativer kan sendes via dataattributter eller JavaScript, kan du legge til et alternativnavn til data-bs-
, som i data-bs-animation="{value}"
. Sørg for å endre sakstypen for alternativnavnet fra " camelCase " til " kebab-case " når du sender alternativene via dataattributter. Bruk for eksempel i data-bs-custom-class="beautifier"
stedet for data-bs-customClass="beautifier"
.
Fra Bootstrap 5.2.0 støtter alle komponenter et eksperimentelt reservert dataattributt data-bs-config
som kan inneholde enkel komponentkonfigurasjon 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 title
verdien være 456
og de separate dataattributtene vil overstyre verdier gitt på data-bs-config
. I tillegg kan eksisterende dataattributter inneholde JSON-verdier som data-bs-delay='{"show":0,"hide":150}'
.
sanitize
Merk at alternativene ,
sanitizeFn
, og
av sikkerhetsgrunner
allowList
ikke kan leveres med dataattributter.
Navn | Type | Misligholde | Beskrivelse |
---|---|---|---|
allowList |
gjenstand | Standardverdi | Objekt som inneholder tillatte attributter og tagger. |
animation |
boolsk | true |
Bruk en CSS-fade-overgang på verktøytipset. |
boundary |
streng, element | 'clippingParents' |
Overløpsbegrensningsgrense for verktøytipset (gjelder bare Poppers preventOverflow-modifikator). Som standard er 'clippingParents' og kan det godta en HTMLElement-referanse (kun via JavaScript). For mer informasjon se Poppers detectOverflow-dokumenter . |
container |
streng, element, falsk | false |
Legger til verktøytipset til et spesifikt element. Eksempel: container: 'body' . Dette alternativet er spesielt nyttig ved at det lar deg plassere verktøytipset i dokumentflyten i nærheten av det utløsende elementet - noe som vil forhindre at verktøytipset flyter bort fra det utløsende elementet under en vindusstørrelse. |
customClass |
streng, funksjon | '' |
Legg til klasser i verktøytipset når det vises. Merk at disse klassene vil bli lagt til i tillegg til eventuelle klasser spesifisert i malen. For å legge til flere klasser, skille dem med mellomrom: 'class-1 class-2' . Du kan også sende en funksjon som skal returnere en enkelt streng som inneholder flere klassenavn. |
delay |
nummer, objekt | 0 |
Forsinket visning og skjuling av verktøytipset (ms) – gjelder ikke for manuell utløsertype. Hvis et nummer er oppgitt, brukes forsinkelse på både skjul/show. Objektstrukturen er: delay: { "show": 500, "hide": 100 } . |
fallbackPlacements |
array | ['top', 'right', 'bottom', 'left'] |
Definer reserveplasseringer ved å gi en liste over plasseringer i matrise (i preferanserekkefølge). For mer informasjon, se Poppers atferdsdokumenter . |
html |
boolsk | false |
Tillat HTML i verktøytipset. Hvis sant, vil HTML-tagger i verktøytipset title bli gjengitt i verktøytipset. Hvis falsk, innerText vil egenskapen bli brukt til å sette inn innhold i DOM. Bruk tekst hvis du er bekymret for XSS-angrep. |
offset |
array, streng, funksjon | [0, 0] |
Forskyvning av verktøytipset i forhold til målet. Du kan sende en streng i dataattributter med kommadelte verdier som: data-bs-offset="10,20" . Når en funksjon brukes til å bestemme forskyvningen, kalles den opp med et objekt som inneholder popperplasseringen, referansen og popperrektene som det første argumentet. Det utløsende elementet DOM-noden sendes som det andre argumentet. Funksjonen må returnere en matrise med to tall: skrenning , avstand . For mer informasjon se Poppers offset-dokumenter . |
placement |
streng, funksjon | 'top' |
Slik plasserer du verktøytipset: auto, topp, bunn, venstre, høyre. Når auto det er spesifisert, vil det dynamisk reorientere verktøytipset. Når en funksjon brukes til å bestemme plasseringen, kalles den med verktøytipset DOM-noden som første argument og utløsende element DOM-noden som den andre. Konteksten this er satt til verktøytipsforekomsten. |
popperConfig |
null, objekt, funksjon | null |
For å endre Bootstraps standard Popper -konfigurasjon, se Poppers konfigurasjon . Når en funksjon brukes til å lage Popper-konfigurasjonen, kalles den med et objekt som inneholder Bootstraps standard Popper-konfigurasjon. Det hjelper deg å bruke og slå sammen standarden med din egen konfigurasjon. Funksjonen må returnere et konfigurasjonsobjekt for Popper. |
sanitize |
boolsk | true |
Aktiver eller deaktiver desinfisering. Hvis aktivert 'template' , 'content' og 'title' alternativer vil bli renset. |
sanitizeFn |
null, funksjon | null |
Her kan du levere din egen desinfiseringsfunksjon. Dette kan være nyttig hvis du foretrekker å bruke et dedikert bibliotek for å utføre desinfisering. |
selector |
streng, falsk | false |
Hvis en velger er angitt, vil verktøytipsobjekter bli delegert til de angitte målene. I praksis brukes dette til også å bruke verktøytips til dynamisk lagt til DOM-elementer ( jQuery.on støtte). Se denne utgaven og et informativt eksempel . |
template |
streng | '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' |
Baser HTML for å bruke når du lager verktøytipset. Verktøytipset title vil bli injisert i .tooltip-inner . .tooltip-arrow vil bli verktøytipsets pil. Det ytterste innpakningselementet skal ha .tooltip klassen og role="tooltip" . |
title |
streng, element, funksjon | '' |
Standard tittelverdi hvis title attributtet ikke er til stede. Hvis en funksjon er gitt, vil den bli kalt med this referansen satt til elementet som popoveren er knyttet til. |
trigger |
streng | 'hover focus' |
Hvordan verktøytips utløses: klikk, hover, fokus, manuell. Du kan passere flere utløsere; skille dem med et mellomrom. 'manual' indikerer at verktøytipset vil bli utløst programmatisk via metodene .tooltip('show') , .tooltip('hide') og ; .tooltip('toggle') denne verdien kan ikke kombineres med noen annen utløser. 'hover' i seg selv vil resultere i verktøytips som ikke kan utløses via tastaturet, og bør kun brukes dersom alternative metoder for å formidle samme informasjon til tastaturbrukere er tilstede. |
Dataattributter for individuelle verktøytips
Alternativer for individuelle verktøytips kan alternativt spesifiseres ved bruk av dataattributter, som forklart ovenfor.
Bruker funksjon medpopperConfig
const tooltip = new bootstrap.Tooltip(element, {
popperConfig(defaultBsPopperConfig) {
// const newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
Metoder
Asynkrone metoder og overganger
Alle API-metoder er asynkrone og starter en overgang . De går tilbake til den som ringer så snart overgangen er startet, men før den avsluttes . I tillegg vil et metodekall på en overgangskomponent bli ignorert .
Metode | Beskrivelse |
---|---|
disable |
Fjerner muligheten for å vise et elements verktøytips. Verktøytipset vil kun kunne vises hvis det er aktivert på nytt. |
dispose |
Skjuler og ødelegger et elements verktøytips (fjerner lagrede data på DOM-elementet). Verktøytips som bruker delegering (som opprettes ved å bruke selector alternativet ) kan ikke ødelegges individuelt på etterkommere triggerelementer. |
enable |
Gir et elements verktøytips muligheten til å bli vist. Verktøytips er aktivert som standard. |
getInstance |
Statisk metode som lar deg få verktøytipsforekomsten knyttet til et DOM-element, eller opprette en ny i tilfelle den ikke ble initialisert. |
getOrCreateInstance |
Statisk metode som lar deg få verktøytipsforekomsten knyttet til et DOM-element, eller opprette en ny i tilfelle den ikke ble initialisert. |
hide |
Skjuler et elements verktøytips. Går tilbake til den som ringer før verktøytipset faktisk har blitt skjult (dvs. før hidden.bs.tooltip hendelsen inntreffer). Dette regnes som en "manuell" utløsning av verktøytipset. |
setContent |
Gir en måte å endre verktøytipsets innhold etter initialiseringen. |
show |
Avslører et elements verktøytips. Går tilbake til den som ringer før verktøytipset faktisk har blitt vist (dvs. før shown.bs.tooltip hendelsen inntreffer). Dette regnes som en "manuell" utløsning av verktøytipset. Verktøytips med null-lengde titler vises aldri. |
toggle |
Veksler på verktøytipset til et element. Går tilbake til den som ringer før verktøytipset faktisk har blitt vist eller skjult (dvs. før hendelsen shown.bs.tooltip eller hidden.bs.tooltip inntreffer). Dette regnes som en "manuell" utløsning av verktøytipset. |
toggleEnabled |
Veksler på muligheten for at et elements verktøytips skal vises eller skjules. |
update |
Oppdaterer posisjonen til et elements verktøytips. |
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance
// setContent example
tooltip.setContent({ '.tooltip-inner': 'another title' })
setContent
godtar et
object
argument, der hver egenskapsnøkkel er en gyldig
string
velger i popover-malen, og hver relaterte egenskapsverdi kan være
string
|
element
|
function
|
null
arrangementer
Begivenhet | Beskrivelse |
---|---|
hide.bs.tooltip |
Denne hendelsen utløses umiddelbart når hide instansmetoden er kalt. |
hidden.bs.tooltip |
Denne hendelsen utløses når popover-en er ferdig skjult for brukeren (vil vente på at CSS-overganger er fullført). |
inserted.bs.tooltip |
Denne hendelsen utløses etter show.bs.tooltip hendelsen når verktøytipsmalen er lagt til DOM. |
show.bs.tooltip |
Denne hendelsen utløses umiddelbart når show instansmetoden kalles. |
shown.bs.tooltip |
Denne hendelsen utløses når popoveren er gjort synlig for brukeren (vil vente på at CSS-overgangene er fullført). |
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)
myTooltipEl.addEventListener('hidden.bs.tooltip', () => {
// do something...
})
tooltip.hide()