Patarimai
Dokumentacija ir pavyzdžiai, kaip pridėti pasirinktinių „Bootstrap“ įrankių patarimų su CSS ir „JavaScript“, naudojant CSS3 animacijai ir duomenų-bs-atributus vietiniam pavadinimui saugoti.
Apžvalga
Ką reikia žinoti naudojant patarimo papildinį:
- Patarimų padėties nustatymas priklauso nuo trečiosios šalies bibliotekos Popper . Turite įtraukti popper.min.js prieš
bootstrap.js
, arba naudoti tąbootstrap.bundle.min.js
, kuriame yra Popper. - Patarimai pasirenkami dėl našumo priežasčių, todėl turite juos inicijuoti patys .
- Patarimai su nulinio ilgio pavadinimais niekada nerodomi.
- Nurodykite
container: 'body'
, kad išvengtumėte atvaizdavimo problemų sudėtingesniuose komponentuose (pvz., įvesties grupėse, mygtukų grupėse ir kt.). - Paslėptų elementų patarimų suaktyvinimas neveiks.
- Įrankių patarimai
.disabled
arbadisabled
elementai turi būti suaktyvinti ant pakuotės elemento. - Kai suaktyvinama iš hipersaitų, apimančių kelias eilutes, patarimai bus centre. Naudokite
white-space: nowrap;
ant savo<a>
, kad išvengtumėte tokio elgesio. - Patarimai turi būti paslėpti prieš pašalinant atitinkamus elementus iš DOM.
- Patarimai gali būti suaktyvinti dėl elemento šešėlinio DOM viduje.
Turite visa tai? Puiku, pažiūrėkime, kaip jie veikia pateikdami keletą pavyzdžių.
prefers-reduced-motion
medijos užklausos. Žr
. mūsų pritaikymo neįgaliesiems dokumentacijos skyrių „Sumažintas judėjimas“ .
Pavyzdžiai
Įgalinti patarimus
Kaip minėta pirmiau, prieš naudodami patarimus turite inicijuoti patarimus. Vienas iš būdų inicijuoti visus patarimus puslapyje būtų pasirinkti juos pagal data-bs-toggle
atributą, pvz.:
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
Patarimai dėl nuorodų
Užveskite pelės žymeklį ant toliau pateiktų nuorodų, kad pamatytumėte patarimus:
Vietos rezervavimo tekstas, skirtas parodyti kai kurias eilutes su patarimais. Dabar tai tik užpildas, o ne žudikas. Turinys čia patalpintas tik tam, kad imituotų tikro teksto buvimą . Ir visa tai tik tam, kad suprastumėte, kaip patarimai atrodys, kai naudojami realiose situacijose. Taigi tikimės, kad dabar pamatėte, kaip šie nuorodų patarimai gali veikti praktiškai, kai juos naudosite savo svetainėje ar projekte.
<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
savo
data-bs-title
HTML. Kai
title
naudojamas, Popper jį automatiškai pakeis,
data-bs-title
kai elementas bus pateiktas.
Tinkinti patarimai
Pridėta 5.2.0 versijojeGalite tinkinti patarimų išvaizdą naudodami CSS kintamuosius . Mes nustatome tinkintą klasę, data-bs-custom-class="custom-tooltip"
kad apimtų mūsų tinkintą išvaizdą, ir naudojame ją vietiniam CSS kintamajam nepaisyti.
.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>
Kryptys
Užveskite pelės žymeklį ant toliau pateiktų mygtukų, kad pamatytumėte keturias patarimų nuorodas: viršuje, dešinėje, apačioje ir kairėje. Nurodymai rodomi naudojant „Bootstrap“ 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>
Ir pridėjus tinkintą HTML:
<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>
Su SVG:
CSS
Kintamieji
Pridėta 5.2.0 versijojeKaip „Bootstrap“ besivystančio CSS kintamųjų metodo dalis, įrankių patarimuose dabar naudojami vietiniai CSS kintamieji, .tooltip
kad būtų galima patobulinti tinkinimą realiuoju laiku. CSS kintamųjų reikšmės nustatomos naudojant Sass, todėl Sass tinkinimas vis dar palaikomas.
--#{$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 kintamieji
$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
Naudojimas
Patarimų papildinys generuoja turinį ir žymėjimą pagal poreikį ir pagal numatytuosius nustatymus pateikia patarimus po jų aktyviklio elemento.
Suaktyvinkite patarimą naudodami „JavaScript“:
const exampleEl = document.getElementById('example')
const tooltip = new bootstrap.Tooltip(exampleEl, options)
Perpildymas auto
irscroll
Patarimo padėtis bandoma automatiškai pakeisti, kai pirminiame sudėtiniame rodinyje yra overflow: auto
arba overflow: scroll
patinka mūsų .table-responsive
, bet vis tiek išlaikoma pradinė paskirties vietos padėtis. Norėdami tai išspręsti, nustatykite boundary
parinktį (apvertimo modifikatoriaus, naudojant šią popperConfig
parinktį) į bet kurį HTMLElementą, kad nepaisytumėte numatytosios reikšmės 'clippingParents'
, pvz document.body
.:
const tooltip = new bootstrap.Tooltip('#example', {
boundary: document.body // or document.querySelector('#boundary')
})
Žymėjimas
Reikalingas patarimo žymėjimas yra tik data
atributas ir title
HTML elemente, kuriame norite turėti patarimą. Sugeneruotas patarimo žymėjimas yra gana paprastas, nors tam reikia padėties (pagal numatytuosius nustatymus, top
kurią nustato papildinys).
Patarimų pritaikymas klaviatūros ir pagalbinių technologijų naudotojams
Įrankių patarimus turėtumėte pridėti tik prie HTML elementų, kurie tradiciškai yra skirti klaviatūrai ir yra interaktyvūs (pvz., nuorodos ar formos valdikliai). Nors savavališkus HTML elementus (pvz., <span>
s) galima sufokusuoti pridedant tabindex="0"
atributą, dėl to klaviatūros naudotojams bus pridėta potencialiai erzinančių ir klaidinančių tabuliavimo taškų neinteraktyviuose elementuose, o dauguma pagalbinių technologijų šiuo metu nepateikia patarimo šioje situacijoje. Be to, nepasikliaukite vien tik hover
patarimo aktyvikliu, nes dėl to klaviatūros naudotojai negalės suaktyvinti patarimų.
<!-- 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>
Išjungti elementai
Elementai su disabled
atributu nėra interaktyvūs, o tai reiškia, kad naudotojai negali sufokusuoti, užvesti pelės žymeklio ar spustelėti jų, kad suaktyvintų patarimą (arba iššokantįjį ekraną). Norėdami išspręsti šią problemą, norėsite suaktyvinti patarimą iš paketo <div>
arba <span>
, idealiu atveju, sufokusuoti klaviatūrą naudodami 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>
Galimybės
Kadangi parinktis galima perduoti naudojant duomenų atributus arba „JavaScript“, galite pridėti parinkties pavadinimą prie data-bs-
, kaip ir data-bs-animation="{value}"
. Perduodant parinktis per duomenų atributus , būtinai pakeiskite parinkties pavadinimo didžiosios raidės tipą iš „ camelCase “ į „ kebab-case “. Pavyzdžiui, naudokite data-bs-custom-class="beautifier"
vietoj data-bs-customClass="beautifier"
.
Nuo 5.2.0 versijos „Bootstrap“ visi komponentai palaiko eksperimentinį rezervuotų duomenų atributą data-bs-config
, kuriame galima laikyti paprastą komponento konfigūraciją kaip JSON eilutę. Kai elementas turi data-bs-config='{"delay":0, "title":123}'
ir data-bs-title="456"
atributus, galutinė title
reikšmė bus 456
ir atskiri duomenų atributai nepaisys reikšmių, pateiktų data-bs-config
. Be to, esamuose duomenų atributuose gali būti JSON reikšmės, pvz ., data-bs-delay='{"show":0,"hide":150}'
.
sanitize
,
sanitizeFn
ir
allowList
parinkčių negalima pateikti naudojant duomenų atributus.
vardas | Tipas | Numatytas | apibūdinimas |
---|---|---|---|
allowList |
objektas | Numatytoji reikšmė | Objektas, kuriame yra leidžiamų atributų ir žymų. |
animation |
loginis | true |
Patarimui pritaikykite CSS išnykimo perėjimą. |
boundary |
eilutė, elementas | 'clippingParents' |
Patarimo perpildymo apribojimo riba (taikoma tik Popperio prevencinio perpildymo modifikatoriui). Pagal numatytuosius nustatymus jis 'clippingParents' priima ir gali priimti HTMLElement nuorodą (tik naudojant JavaScript). Daugiau informacijos rasite Popper's detectOverflow dokumentuose . |
container |
eilutė, elementas, klaidinga | false |
Prideda patarimą prie konkretaus elemento. Pavyzdys container: 'body' :. Ši parinktis ypač naudinga, nes leidžia įdėti patarimą dokumento sraute šalia paleidimo elemento – tai neleis patarimui nuslysti nuo paleidimo elemento keičiant lango dydį. |
customClass |
eilutė, funkcija | '' |
Pridėkite klases prie patarimo, kai jis rodomas. Atminkite, kad šios klasės bus pridėtos prie visų šablone nurodytų klasių. Norėdami pridėti kelias klases, atskirkite jas tarpais: 'class-1 class-2' . Taip pat galite perduoti funkciją, kuri turėtų grąžinti vieną eilutę su papildomais klasių pavadinimais. |
delay |
skaičius, objektas | 0 |
Patarimo rodymo ir slėpimo delsa (ms) – netaikoma rankinio paleidimo tipui. Jei numeris pateikiamas, uždelsimas taikomas abiem slėptuvėms/rodyti. Objekto struktūra yra tokia: delay: { "show": 500, "hide": 100 } . |
fallbackPlacements |
masyvas | ['top', 'right', 'bottom', 'left'] |
Apibrėžkite atsargines paskirties vietas pateikdami vietų sąrašą masyve (pagal pirmenybę). Daugiau informacijos rasite Popperio elgesio dokumentuose . |
html |
loginis | false |
Leisti HTML patarime. Jei tiesa, patarime esančios HTML žymos title bus pateiktos patarime. Jei netiesa, innerText turinys bus naudojamas įterpti į DOM. Jei nerimaujate dėl XSS atakų, naudokite tekstą. |
offset |
masyvas, eilutė, funkcija | [0, 0] |
Patarimo poslinkis, palyginti su jo tikslu. Duomenų atributuose galite perduoti eilutę su kableliais atskirtomis reikšmėmis, pvz.: data-bs-offset="10,20" . Kai funkcija naudojama poslinkiui nustatyti, ji iškviečiama su objektu, kuriame yra popper vieta, nuoroda ir popper rects kaip pirmasis argumentas. Suaktyvinantis elementas DOM mazgas perduodamas kaip antrasis argumentas. Funkcija turi grąžinti masyvą su dviem skaičiais: slydimas , atstumas . Norėdami gauti daugiau informacijos, žr. Popper's poslinkio dokumentus . |
placement |
eilutė, funkcija | 'top' |
Patarimo padėties nustatymas: automatinis, viršuje, apačioje, kairėje, dešinėje. Kai auto nurodyta, jis dinamiškai pakeis patarimo kryptį. Kai funkcija naudojama vietai nustatyti, ji iškviečiama, kai pirmasis argumentas yra patarimo DOM mazgas, o antrasis – aktyvuojantis elementas DOM mazgas. Kontekstas this nustatytas į patarimo egzempliorių. |
popperConfig |
nulis, objektas, funkcija | null |
Norėdami pakeisti numatytąją Bootstrap Popper konfigūraciją, žr . Popper konfigūraciją . Kai funkcija naudojama kuriant Popper konfigūraciją, ji iškviečiama su objektu, kuriame yra numatytoji Bootstrap Popper konfigūracija. Tai padeda naudoti ir sujungti numatytuosius nustatymus su savo konfigūracija. Funkcija turi grąžinti Popper konfigūracijos objektą. |
sanitize |
loginis | true |
Įjunkite arba išjunkite dezinfekavimą. Jei suaktyvinta 'template' , parinktys bus išvalytos 'content' .'title' |
sanitizeFn |
nulis, funkcija | null |
Čia galite pateikti savo dezinfekavimo funkciją. Tai gali būti naudinga, jei norite dezinfekuoti naudoti tam skirtą biblioteką. |
selector |
styga, netikra | false |
Jei yra parinkiklis, patarimo objektai bus deleguoti nurodytiems tikslams. Praktiškai tai taip pat naudojama patarimams taikyti dinamiškai pridėtiems DOM elementams ( jQuery.on palaikymas). Žr . šią problemą ir informatyvų pavyzdį . |
template |
styga | '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' |
Pagrindinis HTML, naudojamas kuriant patarimą. Įrankio antgalis title bus įšvirkščiamas į .tooltip-inner . .tooltip-arrow taps patarimo rodykle. Tolimiausias apvyniojimo elementas turi turėti .tooltip klasę ir role="tooltip" . |
title |
eilutė, elementas, funkcija | '' |
Default title value if title attribute isn’t present. If a function is given, it will be called with its this reference set to the element that the popover is attached to. |
trigger |
string | 'hover focus' |
How tooltip is triggered: click, hover, focus, manual. You may pass multiple triggers; separate them with a space. 'manual' indicates that the tooltip will be triggered programmatically via the .tooltip('show') , .tooltip('hide') and .tooltip('toggle') methods; this value cannot be combined with any other trigger. 'hover' on its own will result in tooltips that cannot be triggered via the keyboard, and should only be used if alternative methods for conveying the same information for keyboard users is present. |
Data attributes for individual tooltips
Options for individual tooltips can alternatively be specified through the use of data attributes, as explained above.
Using function with popperConfig
const tooltip = new bootstrap.Tooltip(element, {
popperConfig(defaultBsPopperConfig) {
// const newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
Methods
Asynchronous methods and transitions
All API methods are asynchronous and start a transition. They return to the caller as soon as the transition is started but before it ends. In addition, a method call on a transitioning component will be ignored.
Method | Description |
---|---|
disable |
Removes the ability for an element’s tooltip to be shown. The tooltip will only be able to be shown if it is re-enabled. |
dispose |
Hides and destroys an element’s tooltip (Removes stored data on the DOM element). Tooltips that use delegation (which are created using the selector option) cannot be individually destroyed on descendant trigger elements. |
enable |
Gives an element’s tooltip the ability to be shown. Tooltips are enabled by default. |
getInstance |
Static method which allows you to get the tooltip instance associated with a DOM element, or create a new one in case it wasn’t initialized. |
getOrCreateInstance |
Static method which allows you to get the tooltip instance associated with a DOM element, or create a new one in case it wasn’t initialized. |
hide |
Hides an element’s tooltip. Returns to the caller before the tooltip has actually been hidden (i.e. before the hidden.bs.tooltip event occurs). This is considered a “manual” triggering of the tooltip. |
setContent |
Gives a way to change the tooltip’s content after its initialization. |
show |
Reveals an element’s tooltip. Returns to the caller before the tooltip has actually been shown (i.e. before the shown.bs.tooltip event occurs). This is considered a “manual” triggering of the tooltip. Tooltips with zero-length titles are never displayed. |
toggle |
Toggles an element’s tooltip. Returns to the caller before the tooltip has actually been shown or hidden (i.e. before the shown.bs.tooltip or hidden.bs.tooltip event occurs). This is considered a “manual” triggering of the tooltip. |
toggleEnabled |
Toggles the ability for an element’s tooltip to be shown or hidden. |
update |
Updates the position of an element’s tooltip. |
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance
// setContent example
tooltip.setContent({ '.tooltip-inner': 'another title' })
setContent
method accepts an
object
argument, where each property-key is a valid
string
selector within the popover template, and each related property-value can be
string
|
element
|
function
|
null
Events
Event | Description |
---|---|
hide.bs.tooltip |
This event is fired immediately when the hide instance method has been called. |
hidden.bs.tooltip |
This event is fired when the popover has finished being hidden from the user (will wait for CSS transitions to complete). |
inserted.bs.tooltip |
This event is fired after the show.bs.tooltip event when the tooltip template has been added to the DOM. |
show.bs.tooltip |
This event fires immediately when the show instance method is called. |
shown.bs.tooltip |
This event is fired when the popover has been made visible to the user (will wait for CSS transitions to complete). |
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)
myTooltipEl.addEventListener('hidden.bs.tooltip', () => {
// do something...
})
tooltip.hide()