Siirry pääsisältöön Siirry dokumenttien navigointiin
Check
in English

Työkaluvinkit

Dokumentaatio ja esimerkkejä mukautettujen Bootstrap-työkaluvihjeiden lisäämisestä CSS:n ja JavaScriptin kanssa käyttämällä CSS3:a animaatioita varten ja data-bs-attribuutteja paikallista otsikon tallennusta varten.

Yleiskatsaus

Asiat, jotka on hyvä tietää käytettäessä työkaluvihje-laajennusta:

  • Työkaluvihjeiden paikannus perustuu kolmannen osapuolen Popper -kirjastoon. Sinun on lisättävä popper.min.js ennen bootstrap.js, tai käytä sellaista, bootstrap.bundle.min.jsjoka sisältää Popperin.
  • Työkaluvihjeet ovat käytettävissä suorituskykysyistä, joten sinun on alustettava ne itse .
  • Työkaluvihjeitä, joiden otsikot ovat nollapituisia, ei koskaan näytetä.
  • Määritä container: 'body', jotta vältät hahmonnusongelmia monimutkaisemmissa osissa (kuten syöttöryhmämme, painikeryhmämme jne.).
  • Työkaluvihjeiden käynnistäminen piilotetuista elementeistä ei toimi.
  • Työkaluvihjeitä .disabledtai disabledelementtejä on käynnistettävä kääreelementissä.
  • Kun työkaluvihjeet käynnistetään hyperlinkeistä, jotka kattavat useita rivejä, työkaluvihjeet keskitetään. Vältä tämä käyttäytyminen käyttämällä sitä white-space: nowrap;.<a>
  • Työkaluvihjeet on piilotettava ennen kuin niitä vastaavat elementit on poistettu DOM:sta.
  • Työkaluvihjeitä voidaan laukaista varjo-DOM:n sisällä olevan elementin ansiosta.

Onko sinulla kaikki tämä? Hienoa, katsotaan kuinka ne toimivat joidenkin esimerkkien avulla.

Oletuksena tämä komponentti käyttää sisäänrakennettua sisällönpuhdistusohjelmaa, joka poistaa kaikki HTML-elementit, joita ei ole erikseen sallittu. Katso lisätietoja JavaScript-dokumentaation desinfiointiaineosiosta .
Tämän komponentin animaatiovaikutus riippuu prefers-reduced-motionmediakyselystä. Katso esteettömyysdokumentaation osio liikkeen vähentämisestä .

Esimerkkejä

Ota työkaluvihjeet käyttöön

Kuten edellä mainittiin, työkaluvihjeet on alustettava ennen kuin niitä voidaan käyttää. Yksi tapa alustaa kaikki sivulla olevat työkaluvihjeet olisi valita ne niiden data-bs-togglemääritteen mukaan, kuten:

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

Vie hiiri alla olevien linkkien päälle nähdäksesi työkaluvinkit:

Paikkamerkkiteksti, joka esittelee joitain upotettuja linkkejä työkaluvihjeillä. Tämä on nyt vain täyte, ei tappaja. Sisältö on sijoitettu tähän vain matkimaan oikean tekstin läsnäoloa . Ja kaikki tämä vain antaaksemme sinulle käsityksen siitä, miltä työkaluvihjeet näyttäisivät todellisissa tilanteissa. Joten toivottavasti olet nyt nähnyt, kuinka nämä linkkien työkaluvinkit voivat toimia käytännössä, kun käytät niitä omalla sivustollasi tai projektissasi.

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>
Voit vapaasti käyttää joko titletai data-bs-titleHTML-koodissasi. Kun titlekäytetään, Popper korvaa sen automaattisesti data-bs-titleelementillä kun elementti renderöidään.

Mukautetut työkaluvinkit

Lisätty versioon 5.2.0

Voit mukauttaa työkaluvihjeiden ulkoasua CSS-muuttujien avulla . Asetamme mukautetun luokan data-bs-custom-class="custom-tooltip"mukautetun ulkoasun laajuuteen ja käytämme sitä paikallisen CSS-muuttujan ohittamiseen.

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

Ohjeet

Vie hiiri alla olevien painikkeiden päälle nähdäksesi neljä työkaluvihjeen suuntaa: ylhäältä, oikealta, alhaalta ja vasemmalta. Ohjeet peilataan käytettäessä Bootstrapia RTL:ssä.

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

Ja mukautettu HTML lisätty:

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

SVG:llä:

CSS

Muuttujat

Lisätty versioon 5.2.0

Osana Bootstrapin kehittyvää CSS-muuttujien lähestymistapaa työkaluvinkit käyttävät nyt paikallisia CSS-muuttujia .tooltiptehostaakseen reaaliaikaista räätälöintiä. CSS-muuttujien arvot asetetaan Sassin kautta, joten myös Sass-räätälöinti on edelleen tuettu.

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

$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

Käyttö

Työkaluvihje-laajennus luo sisältöä ja merkintöjä pyynnöstä ja sijoittaa työkaluvihjeet oletuksena niiden triggerelementin perään.

Käynnistä työkaluvihje JavaScriptin kautta:

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

Työkaluvihjeen sijainti yrittää muuttua automaattisesti, kun ylätason säilössä on meidän overflow: auto, mutta se säilyttää alkuperäisen sijoittelun sijainnin. Voit ratkaista tämän asettamalla asetukseksi ( vaihtoehtoa käyttävälle kääntömuokkaimelle) mille tahansa HTMLElementille ohittaaksesi oletusarvon , kuten :overflow: scroll.table-responsiveboundarypopperConfig'clippingParents'document.body

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

Merkintä

Työkaluvihjeen vaadittava merkintä on vain dataattribuutti ja titleHTML-elementissä, johon haluat työkaluvihjeen. Työkaluvihjeen luotu merkintä on melko yksinkertaista, vaikka se vaatii sijainnin (oletusarvoisesti toplaajennuksen asettama).

Työkaluvihjeiden saaminen toimimaan näppäimistön ja aputekniikan käyttäjille

Lisää työkaluvihjeitä vain sellaisiin HTML-elementteihin, jotka ovat perinteisesti kohdistettavissa näppäimistöön ja ovat vuorovaikutteisia (kuten linkit tai lomakeohjaimet). Vaikka mielivaltaiset HTML-elementit (kuten <span>s) voidaan tehdä tarkennettavissa lisäämällä tabindex="0"attribuutti, tämä lisää mahdollisesti ärsyttäviä ja hämmentäviä sarkaimia ei-interaktiivisiin elementteihin näppäimistön käyttäjille, ja useimmat avustavat tekniikat eivät tällä hetkellä ilmoita työkaluvihjettä tässä tilanteessa. Älä myöskään luota pelkästään hovertyökaluvihjeesi laukaisuun, koska tämä tekee työkaluvihjeistäsi mahdotonta käynnistää näppäimistön käyttäjille.

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

Poistetut elementit

Attribuutilla varustetut elementit disabledeivät ole vuorovaikutteisia, mikä tarkoittaa, että käyttäjät eivät voi tarkentaa, viedä hiiren osoitinta tai napsauttaa niitä käynnistääkseen työkaluvihjeen (tai ponnahdusikkunan). Kiertokeinona sinun kannattaa käynnistää työkaluvihje kääreestä <div>tai <span>ihanteellisesti näppäimistöllä tarkennetusta käyttämällä 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>

Vaihtoehdot

Koska valinnat voidaan välittää tietomääritteiden tai JavaScriptin kautta, voit liittää vaihtoehdon nimen kohtaan data-bs-, kuten data-bs-animation="{value}". Varmista, että vaihdat vaihtoehdon nimen tapaustyypin " camelCase " arvoksi " kebab-case ", kun välität valinnat tietomääritteiden kautta. Käytä data-bs-custom-class="beautifier"esimerkiksi data-bs-customClass="beautifier".

Bootstrap 5.2.0:sta lähtien kaikki komponentit tukevat kokeellista varattua dataattribuuttia, data-bs-configjoka voi sisältää yksinkertaisen komponenttimäärityksen JSON-merkkijonona. Kun elementillä on attribuutit data-bs-config='{"delay":0, "title":123}'ja data-bs-title="456", lopullinen titlearvo on 456ja erilliset tietoattribuutit ohittavat annetut arvot data-bs-config. Lisäksi olemassa olevat dataattribuutit voivat sisältää JSON-arvoja, kuten data-bs-delay='{"show":0,"hide":150}'.

Huomaa, että turvallisuussyistä sanitize, sanitizeFn, ja allowListvalintoja ei voida toimittaa dataattribuuttien avulla.
Nimi Tyyppi Oletus Kuvaus
allowList esine Oletusarvo Objekti, joka sisältää sallitut attribuutit ja tunnisteet.
animation boolean true Käytä työkaluvihjeeseen CSS-häivytystä.
boundary merkkijono, elementti 'clippingParents' Työkaluvihjeen ylivuotorajoitusraja (koskee vain Popperin preventOverflow-muuttajaa). Oletuksena se hyväksyy 'clippingParents'ja voi hyväksyä HTMLElement-viittauksen (vain JavaScriptin kautta). Lisätietoja on Popperin detectOverflow -dokumenteissa .
container merkkijono, elementti, false false Liittää työkaluvihjeen tiettyyn elementtiin. Esimerkki: container: 'body'. Tämä vaihtoehto on erityisen hyödyllinen, koska sen avulla voit sijoittaa työkaluvihjeen asiakirjan kulkuun lähelle liipaisuelementtiä – mikä estää työkaluvihjettä kellumasta pois liipaisuelementistä ikkunan koon muuttamisen aikana.
customClass merkkijono, funktio '' Lisää luokat työkaluvihjeeseen, kun se näytetään. Huomaa, että nämä luokat lisätään mallissa määritettyjen luokkien lisäksi. Voit lisätä useita luokkia erottamalla ne välilyönneillä: 'class-1 class-2'. Voit myös välittää funktion, jonka pitäisi palauttaa yksi merkkijono, joka sisältää muita luokkien nimiä.
delay numero, esine 0 Työkaluvihjeen näyttämisen ja piilottamisen viive (ms) – ei koske manuaalista liipaisintyyppiä. Jos numero annetaan, viivettä käytetään molempiin piilottamiseen/näyttöön. Objektin rakenne on: delay: { "show": 500, "hide": 100 }.
fallbackPlacements joukko ['top', 'right', 'bottom', 'left'] Määritä varasijoittelut tarjoamalla luettelo sijoitteluista taulukossa (etujärjestyksen mukaan). Lisätietoja on Popperin käyttäytymisdokumenteissa .
html boolean false Salli HTML työkaluvihjeessä. Jos tosi, työkaluvihjeissä olevat HTML-tunnisteet titlehahmonnetaan työkaluvihjeessä. Jos epätosi, innerTextominaisuutta käytetään sisällön lisäämiseen DOM:iin. Käytä tekstiä, jos olet huolissasi XSS-hyökkäyksistä.
offset taulukko, merkkijono, funktio [0, 0] Työkaluvihjeen siirtymä suhteessa sen kohteeseen. Voit välittää tietomääritteissä merkkijonon pilkuilla erotetuilla arvoilla, kuten: data-bs-offset="10,20". Kun funktiota käytetään määrittämään siirtymä, sitä kutsutaan objektilla, joka sisältää ensimmäisenä argumenttina popperin sijoittelun, viitteen ja popper rects. Liipaisuelementin DOM-solmu välitetään toisena argumenttina. Funktion on palautettava matriisi, jossa on kaksi numeroa: liukuminen , etäisyys . Lisätietoja on Popperin offset-dokumenteissa .
placement merkkijono, funktio 'top' Työkaluvihjeen sijoittaminen: automaattinen, ylhäältä, alhaalta, vasen, oikea. Kun autoon määritetty, se suuntaa työkaluvihjeen dynaamisesti uudelleen. Kun funktiota käytetään sijoittelun määrittämiseen, sitä kutsutaan työkaluvihjeen DOM-solmu ensimmäisenä argumenttina ja liipaisuelementin DOM-solmu toisena argumenttina. Konteksti thisasetetaan työkaluvihje-esiintymään.
popperConfig nolla, objekti, funktio null Jos haluat muuttaa Bootstrapin Popperin oletusasetuksia, katso Popperin asetukset . Kun funktiota käytetään Popper-kokoonpanon luomiseen, sitä kutsutaan objektilla, joka sisältää Bootstrapin oletusarvoisen Popper-kokoonpanon. Se auttaa sinua käyttämään ja yhdistämään oletusasetuksia omaan kokoonpanoosi. Toiminnon on palautettava Popperin määritysobjekti.
sanitize boolean true Ota desinfiointi käyttöön tai poista se käytöstä. Jos aktivoitu 'template', 'content'ja 'title'vaihtoehdot desinfioidaan.
sanitizeFn nolla, funktio null Täällä voit toimittaa oman desinfiointitoiminnon. Tästä voi olla hyötyä, jos haluat käyttää desinfiointiin erityistä kirjastoa.
selector merkkijono, väärä false Jos valitsin on käytössä, työkaluvihjeobjektit delegoidaan määritetyille kohteille. Käytännössä tätä käytetään myös työkaluvihjeiden soveltamiseen dynaamisesti lisättyihin DOM-elementteihin ( jQuery.ontuki). Katso tämä numero ja informatiivinen esimerkki .
template merkkijono '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' Perus-HTML, jota käytetään työkaluvihjeen luomisessa. Työkalukärjet titleruiskutetaan .tooltip-inner. .tooltip-arrowtulee työkaluvihjeen nuoleksi. Uloimmassa kääreelementissä tulee olla .tooltipluokka ja role="tooltip".
title merkkijono, elementti, funktio '' Otsikon oletusarvo, jos titleattribuuttia ei ole. Jos funktio on annettu, sitä kutsutaan ja sen thisviite on asetettu elementille, johon ponnahdusikkuna on liitetty.
trigger merkkijono 'hover focus' Kuinka työkaluvihje käynnistetään: napsauta, vie hiiri, tarkenna, manuaalinen. Voit läpäistä useita laukaisimia; erota ne välilyönnillä. 'manual'osoittaa, että työkaluvihje käynnistetään ohjelmallisesti .tooltip('show'), .tooltip('hide')ja .tooltip('toggle')-menetelmien avulla; tätä arvoa ei voi yhdistää minkään muun liipaisimen kanssa. 'hover'yksinään johtaa työkaluvihjeisiin, joita ei voida laukaista näppäimistön kautta, ja niitä tulisi käyttää vain, jos on olemassa vaihtoehtoisia tapoja välittää samat tiedot näppäimistön käyttäjille.

Tietoattribuutit yksittäisille työkaluvihjeille

Vaihtoehtoisesti yksittäisten työkaluvihjeiden asetukset voidaan määrittää käyttämällä dataattribuutteja, kuten edellä on selitetty.

Käytä toimintoa kanssapopperConfig

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

menetelmät

Asynkroniset menetelmät ja siirtymät

Kaikki API - menetelmät ovat asynkronisia ja aloittavat siirtymän . He palaavat soittajan luo heti siirtymisen alkaessa, mutta ennen sen päättymistä . Lisäksi siirtyvän komponentin menetelmäkutsu jätetään huomioimatta .

Katso lisätietoja JavaScript - dokumentaatiostamme .

Menetelmä Kuvaus
disable Poistaa mahdollisuuden näyttää elementin työkaluvihjettä. Työkaluvinkki voidaan näyttää vain, jos se otetaan uudelleen käyttöön.
dispose Piilottaa ja tuhoaa elementin työkaluvihjeen (poistaa DOM-elementtiin tallennetut tiedot). Delegointia käyttäviä työkaluvihjeitä (jotka luodaan vaihtoehdolla selector) ei voida tuhota yksitellen jälkeläisissä triggerelementeissä.
enable Antaa elementin työkaluvihjeelle mahdollisuuden näkyä. Työkaluvihjeet ovat oletuksena käytössä.
getInstance Staattinen menetelmä, jonka avulla voit saada työkaluvihje-ilmentymän, joka liittyy DOM-elementtiin, tai luoda uuden, jos sitä ei ole alustettu.
getOrCreateInstance Staattinen menetelmä, jonka avulla voit saada työkaluvihje-ilmentymän, joka liittyy DOM-elementtiin, tai luoda uuden, jos sitä ei ole alustettu.
hide Piilottaa elementin työkaluvihjeen. Palaa soittajalle ennen kuin työkaluvihje on todella piilotettu (eli ennen hidden.bs.tooltiptapahtumaa). Tätä pidetään työkaluvihjeen "manuaalisena" käynnistämisenä.
setContent Antaa tavan muuttaa työkaluvihjeen sisältöä sen alustuksen jälkeen.
show Näyttää elementin työkaluvihjeen. Palaa soittajalle ennen kuin työkaluvihje on todellisuudessa näytetty (eli ennen shown.bs.tooltiptapahtumaa). Tätä pidetään työkaluvihjeen "manuaalisena" käynnistämisenä. Työkaluvihjeitä, joiden otsikot ovat nollapituisia, ei koskaan näytetä.
toggle Vaihtaa elementin työkaluvihjeen päälle/pois. Palaa soittajalle ennen kuin työkaluvihje on todellisuudessa näytetty tai piilotettu (eli ennen shown.bs.tooltiptai hidden.bs.tooltiptapahtumaa). Tätä pidetään työkaluvihjeen "manuaalisena" käynnistämisenä.
toggleEnabled Vaihtaa elementin työkaluvihjeen näyttämisen tai piilotuksen.
update Päivittää elementin työkaluvihjeen sijainnin.
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance

// setContent example
tooltip.setContent({ '.tooltip-inner': 'another title' })
Menetelmä setContenthyväksyy objectargumentin, jossa jokainen property-avain on kelvollinen stringvalitsin ponnahdusmallissa, ja jokainen siihen liittyvä ominaisuuden arvo voi olla string| element| function| null

Tapahtumat

Tapahtuma Kuvaus
hide.bs.tooltip Tämä tapahtuma käynnistyy välittömästi, kun hideinstanssimenetelmää on kutsuttu.
hidden.bs.tooltip Tämä tapahtuma käynnistyy, kun ponnahdusikkuna on piilotettu käyttäjältä (odottaa CSS-siirtymien valmistumista).
inserted.bs.tooltip Tämä tapahtuma käynnistyy show.bs.tooltiptapahtuman jälkeen, kun työkaluvihjemalli on lisätty DOM:iin.
show.bs.tooltip Tämä tapahtuma käynnistyy välittömästi, kun showinstanssimenetelmää kutsutaan.
shown.bs.tooltip Tämä tapahtuma käynnistyy, kun ponnahdusikkuna on tehty käyttäjän näkyväksi (odottaa CSS-siirtymien valmistumista).
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)

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

tooltip.hide()