Kalo te përmbajtja kryesore Kalo te navigimi i dokumenteve
Check
in English

Këshilla për veglat

Dokumentacion dhe shembuj për shtimin e këshillave të veglave të personalizuara të Bootstrap me CSS dhe JavaScript duke përdorur CSS3 për animacione dhe atribute të dhënash për ruajtjen e titujve lokalë.

Vështrim i përgjithshëm

Gjërat që duhet të dini kur përdorni shtojcën e këshillës së veglave:

  • Këshillat e veglave mbështeten në bibliotekën e palës së tretë Popper për pozicionimin. Duhet të përfshini popper.min.js më parë bootstrap.js, ose të përdorni një bootstrap.bundle.min.jsqë përmban Popper.
  • Këshillat e veglave janë të zgjedhura për arsye të performancës, prandaj duhet t'i inicializoni vetë .
  • Këshillat e veglave me tituj me gjatësi zero nuk shfaqen kurrë.
  • Specifikoni container: 'body'për të shmangur paraqitjen e problemeve në komponentë më kompleksë (si grupet tona të hyrjes, grupet e butonave, etj.).
  • Aktivizimi i këshillave të veglave në elementë të fshehur nuk do të funksionojë.
  • Këshillat e veglave për .disabledose disabledelementët duhet të aktivizohen në një element mbështjellës.
  • Kur aktivizohen nga hiperlidhjet që përfshijnë linja të shumta, këshillat e veglave do të përqendrohen. Përdorni white-space: nowrap;në tuaj <a>për të shmangur këtë sjellje.
  • Këshillat e veglave duhet të fshihen përpara se elementët e tyre përkatës të hiqen nga DOM.
  • Këshillat e veglave mund të aktivizohen falë një elementi brenda një DOM hije.

I keni të gjitha këto? E shkëlqyeshme, le të shohim se si funksionojnë me disa shembuj.

Si parazgjedhje, ky komponent përdor dezinfektuesin e integruar të përmbajtjes, i cili heq çdo element HTML që nuk lejohet në mënyrë eksplicite. Shikoni seksionin e dezinfektuesit në dokumentacionin tonë JavaScript për më shumë detaje.
Efekti i animacionit të këtij komponenti varet nga prefers-reduced-motionpyetja e medias. Shikoni seksionin e lëvizjes së reduktuar të dokumentacionit tonë të aksesueshmërisë .

Shembuj

Aktivizo këshillat e veglave

Siç u përmend më lart, duhet të inicializoni këshillat e veglave përpara se të mund të përdoren. Një mënyrë për të inicializuar të gjitha këshillat e veglave në një faqe do të ishte përzgjedhja e tyre sipas data-bs-toggleatributit të tyre, si kjo:

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

Zhvendosni mbi lidhjet e mëposhtme për të parë këshillat e veglave:

Teksti i vendmbajtësit për të demonstruar disa lidhje inline me këshilla veglash. Ky tani është vetëm mbushës, jo vrasës. Përmbajtja e vendosur këtu vetëm për të imituar praninë e tekstit real . Dhe e gjithë kjo vetëm për t'ju dhënë një ide se si do të dukeshin këshillat e veglave kur përdoren në situata të botës reale. Pra, shpresojmë se tani e keni parë se si këto këshilla veglash në lidhje mund të funksionojnë në praktikë, pasi t'i përdorni ato në faqen ose projektin tuaj .

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>
Mos ngurroni të përdorni një titleose data-bs-titlenë HTML-në tuaj. Kur titlepërdoret, Popper do ta zëvendësojë atë automatikisht me data-bs-titlekur të jepet elementi.

Këshilla të personalizuara të veglave

Shtuar në v5.2.0

Ju mund të personalizoni pamjen e këshillave të veglave duke përdorur variablat CSS . Ne vendosëm një klasë të personalizuar me data-bs-custom-class="custom-tooltip"të për të shtrirë pamjen tonë të personalizuar dhe e përdorim atë për të anashkaluar një ndryshore lokale CSS.

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

Drejtimet

Zhvendosni pezull mbi butonat më poshtë për të parë udhëzimet e katër këshillave të veglave: lart, djathtas, poshtë dhe majtas. Udhëzimet pasqyrohen kur përdorni Bootstrap në 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>

Dhe me HTML të shtuar të personalizuar:

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

Me një SVG:

CSS

Variablat

Shtuar në v5.2.0

Si pjesë e qasjes në zhvillim të variablave CSS të Bootstrap, këshillat e veglave tani përdorin variabla lokale CSS .tooltippër personalizim të përmirësuar në kohë reale. Vlerat për variablat CSS vendosen nëpërmjet Sass, kështu që personalizimi i Sass mbështetet gjithashtu.

  --#{$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};
  

Variablat Sass

$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

Përdorimi

Shtojca e këshillës së veglave gjeneron përmbajtje dhe shënime sipas kërkesës, dhe si parazgjedhje vendos këshillat e veglave pas elementit të tyre të aktivizimit.

Aktivizoni këshillën e veglave përmes JavaScript:

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

Pozicioni i këshillës së veglave përpiqet të ndryshojë automatikisht kur një kontejner prind ka overflow: autoose overflow: scrollpëlqen tonën .table-responsive, por ende ruan pozicionimin e vendosjes origjinale. Për ta zgjidhur këtë, vendosni boundaryopsionin (për modifikuesin e rrokullisjes duke përdorur popperConfigopsionin) në çdo HTMLElement për të anashkaluar vlerën e paracaktuar, si 'clippingParents'p.sh.document.body

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

Markup

Shënimi i kërkuar për një këshillë mjeti është vetëm një dataatribut dhe titlenë elementin HTML dëshironi të keni një këshillë mjeti. Shënimi i krijuar i një këshille veglash është mjaft i thjeshtë, megjithëse kërkon një pozicion (si parazgjedhje, i caktuar topnga shtojca).

Bërja që këshillat e veglave të funksionojnë për përdoruesit e tastierës dhe teknologjisë ndihmëse

Ju duhet të shtoni vetëm këshilla veglash në elementët HTML që tradicionalisht janë të fokusuar në tastierë dhe ndërveprues (të tilla si lidhjet ose kontrollet e formularit). Megjithëse elementët arbitrarë të HTML (si p.sh. <span>s) mund të bëhen të fokusueshëm duke shtuar tabindex="0"atributin, kjo do të shtojë skeda potencialisht të bezdisshme dhe konfuze në elementët jointeraktivë për përdoruesit e tastierës dhe shumica e teknologjive ndihmëse aktualisht nuk e shpallin këshillën e veglave në këtë situatë. Për më tepër, mos u mbështetni vetëm hoversi shkas për këshillën tuaj të veglave, pasi kjo do ta bëjë të pamundur aktivizimin e këshillave tuaja të veglave për përdoruesit e tastierës.

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

Elemente me aftësi të kufizuara

Elementet me disabledatributin nuk janë ndërveprues, që do të thotë se përdoruesit nuk mund të fokusohen, të qëndrojnë pezull ose t'i klikojnë për të aktivizuar një këshillë veglash (ose popover). Si një zgjidhje, do të dëshironi të aktivizoni këshillën e veglave nga një mbështjellës <div>ose <span>i bërë në mënyrë ideale të fokusuar në tastierë duke përdorur 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>

Opsione

Meqenëse opsionet mund të kalohen nëpërmjet atributeve të të dhënave ose JavaScript, ju mund të shtoni një emër opsioni në data-bs-, si në data-bs-animation="{value}". Sigurohuni që të ndryshoni llojin e rastit të emrit të opsionit nga “ CamelCase ” në “ kebab-case ” kur kaloni opsionet përmes atributeve të të dhënave. Për shembull, përdorni data-bs-custom-class="beautifier"në vend të data-bs-customClass="beautifier".

Që nga Bootstrap 5.2.0, të gjithë komponentët mbështesin një atribut eksperimental të të dhënave të rezervuara data-bs-configqë mund të vendosë konfigurimin e thjeshtë të komponentit si një varg JSON. Kur një element ka data-bs-config='{"delay":0, "title":123}'dhe data-bs-title="456"atribute, titlevlera përfundimtare do të jetë 456dhe atributet e veçanta të të dhënave do të zëvendësojnë vlerat e dhëna në data-bs-config. Përveç kësaj, atributet ekzistuese të të dhënave janë në gjendje të strehojnë vlera JSON si data-bs-delay='{"show":0,"hide":150}'.

Vini re se për arsye sigurie opsionet sanitize, sanitizeFn, dhe allowListnuk mund të jepen duke përdorur atributet e të dhënave.
Emri Lloji E paracaktuar Përshkrim
allowList Objekt Vlera e paracaktuar Objekti që përmban atribute dhe etiketa të lejuara.
animation logjike true Aplikoni një tranzicion të zbehjes së CSS në këshillën e veglave.
boundary varg, element 'clippingParents' Kufiri i kufizimit të tejmbushjes së këshillës së veglave (zbatohet vetëm për modifikuesin preventOverflow të Popper). Si parazgjedhje, është 'clippingParents'dhe mund të pranojë një referencë HTMLElement (vetëm nëpërmjet JavaScript). Për më shumë informacion, referojuni dokumenteve të detectOverflow të Popper .
container varg, element, false false Shton udhëzuesin për një element specifik. Shembull: container: 'body'. Ky opsion është veçanërisht i dobishëm në atë që ju lejon të poziciononi këshillën e mjetit në rrjedhën e dokumentit pranë elementit nxitës - gjë që do të parandalojë që këshilla e veglës të largohet nga elementi nxitës gjatë një ndryshimi të madhësisë së dritares.
customClass varg, funksion '' Shtoni klasa në këshillën e veglave kur shfaqet. Vini re se këto klasa do të shtohen përveç çdo klase të specifikuar në shabllon. Për të shtuar klasa të shumta, ndajini ato me hapësira: 'class-1 class-2'. Ju gjithashtu mund të kaloni një funksion që duhet të kthejë një varg të vetëm që përmban emra shtesë të klasave.
delay numër, objekt 0 Vonesa e shfaqjes dhe fshehjes së këshillës së veglave (ms) - nuk zbatohet për llojin manual të aktivizimit. Nëse jepet një numër, vonesa zbatohet për të dy fshehjen/shfaqjen. Struktura e objektit është: delay: { "show": 500, "hide": 100 }.
fallbackPlacements varg ['top', 'right', 'bottom', 'left'] Përcaktoni vendosjet e kthimit duke ofruar një listë të vendosjeve në grup (sipas preferencës). Për më shumë informacion referojuni dokumenteve të sjelljes së Popper-it .
html logjike false Lejo HTML në këshillën e veglave. Nëse është e vërtetë, etiketat HTML në këshillat e veglave titledo të paraqiten në këshillën e veglave. Nëse është false, innerTextprona do të përdoret për të futur përmbajtje në DOM. Përdorni tekst nëse jeni të shqetësuar për sulmet XSS.
offset varg, varg, funksion [0, 0] Kompensimi i këshillës së veglave në lidhje me objektivin e tij. Ju mund të kaloni një varg në atributet e të dhënave me vlera të ndara me presje si: data-bs-offset="10,20". Kur një funksion përdoret për të përcaktuar kompensimin, ai thirret me një objekt që përmban vendosjen e popper-it, referencën dhe rektat e popper-it si argument të parë. Nyja DOM e elementit nxitës kalohet si argumenti i dytë. Funksioni duhet të kthejë një grup me dy numra: rrëshqitje , distancë . Për më shumë informacion referojuni dokumenteve të kompensimit të Popper-it .
placement varg, funksion 'top' Si të poziciononi këshillën e veglave: automatikisht, lart, poshtë, majtas, djathtas. Kur autotë specifikohet, do të riorientojë në mënyrë dinamike këshillën e veglave. Kur një funksion përdoret për të përcaktuar vendosjen, ai thirret me nyjen DOM si argument të parë dhe elementin nxitës nyjen DOM si të dytën. Konteksti thisështë vendosur në shembullin e këshillës së veglave.
popperConfig null, objekt, funksion null Për të ndryshuar konfigurimin e paracaktuar të Popper të Bootstrap, shihni konfigurimin e Popper . Kur një funksion përdoret për të krijuar konfigurimin Popper, ai thirret me një objekt që përmban konfigurimin e paracaktuar të Popper të Bootstrap. Ju ndihmon të përdorni dhe bashkoni parazgjedhjen me konfigurimin tuaj. Funksioni duhet të kthejë një objekt konfigurimi për Popper.
sanitize logjike true Aktivizoni ose çaktivizoni dezinfektimin. Nëse aktivizohet 'template', 'content'dhe 'title'opsionet do të dezinfektohen.
sanitizeFn nul, funksion null Këtu mund të siguroni funksionin tuaj të dezinfektimit. Kjo mund të jetë e dobishme nëse preferoni të përdorni një bibliotekë të dedikuar për të kryer dezinfektim.
selector varg, i rremë false Nëse ofrohet një përzgjedhës, objektet e këshillës së veglave do t'u delegohen objektivave të specifikuara. Në praktikë, kjo përdoret për të aplikuar gjithashtu këshilla veglash për elementët DOM të shtuar në mënyrë dinamike ( jQuery.onmbështetje). Shihni këtë çështje dhe një shembull informues .
template varg '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' Bazë HTML për t'u përdorur kur krijoni këshillën e veglave. Maja e veglave titledo të injektohet në .tooltip-inner. .tooltip-arrowdo të bëhet shigjeta e udhëzuesit. Elementi më i jashtëm i mbështjellësit duhet të ketë .tooltipklasën dhe role="tooltip".
title varg, element, funksion '' Vlera e parazgjedhur e titullit nëse titleatributi nuk është i pranishëm. Nëse jepet një funksion, ai do të thirret me grupin e tij thistë referencës tek elementi të cilit i është bashkangjitur popover.
trigger varg 'hover focus' Si aktivizohet këshilla e veglave: klikoni, rri pezull, fokus, manual. Ju mund të kaloni disa shkaktarë; ndani ato me një hapësirë. 'manual'tregon se këshilla e veglave do të aktivizohet në mënyrë programore nëpërmjet .tooltip('show'), .tooltip('hide')dhe .tooltip('toggle')metodave; kjo vlerë nuk mund të kombinohet me asnjë shkas tjetër. 'hover'vetvetiu do të rezultojë në këshilla veglash që nuk mund të aktivizohen nëpërmjet tastierës dhe duhet të përdoren vetëm nëse ekzistojnë metoda alternative për përcjelljen e të njëjtit informacion për përdoruesit e tastierës.

Atributet e të dhënave për këshilla individuale të veglave

Opsionet për këshilla individuale të veglave mund të specifikohen në mënyrë alternative nëpërmjet përdorimit të atributeve të të dhënave, siç shpjegohet më sipër.

Përdorimi i funksionit mepopperConfig

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

Metodat

Metodat dhe tranzicionet asinkrone

Të gjitha metodat API janë asinkrone dhe fillojnë një tranzicion . Ata kthehen te thirrësi sapo të fillojë tranzicioni, por para se të përfundojë . Përveç kësaj, një thirrje metodë në një komponent në tranzicion do të injorohet .

Shikoni dokumentacionin tonë JavaScript për më shumë informacion .

Metoda Përshkrim
disable Heq aftësinë që këshilla e veglave të një elementi të shfaqet. Këshilla e veglave do të mund të shfaqet vetëm nëse riaktivizohet.
dispose Fsheh dhe shkatërron udhëzuesin e një elementi (Heq të dhënat e ruajtura në elementin DOM). Këshillat e veglave që përdorin delegimin (të cilat krijohen duke përdorur opsionin selector) nuk mund të shkatërrohen individualisht në elementët e aktivizimit pasardhës.
enable I jep këshillës së një elementi aftësinë për t'u shfaqur. Këshillat e veglave janë aktivizuar si parazgjedhje.
getInstance Metoda statike e cila ju lejon të merrni shembullin e udhëzuesit të lidhur me një element DOM, ose të krijoni një të ri në rast se nuk ishte inicializuar.
getOrCreateInstance Metoda statike e cila ju lejon të merrni shembullin e udhëzuesit të lidhur me një element DOM, ose të krijoni një të ri në rast se nuk ishte inicializuar.
hide Fsheh udhëzuesin e një elementi. Kthehet te thirrësi përpara se këshilla e veglave të jetë fshehur (dmth. përpara se të hidden.bs.tooltipndodhë ngjarja). Kjo konsiderohet si një aktivizim "manual" i këshillës së veglave.
setContent Jep një mënyrë për të ndryshuar përmbajtjen e udhëzuesit pas inicializimit të tij.
show Zbulon udhëzuesin e një elementi. Kthehet te thirrësi përpara se këshilla e veglave të shfaqet (dmth. përpara se të shown.bs.tooltipndodhë ngjarja). Kjo konsiderohet si një aktivizim "manual" i këshillës së veglave. Këshillat e veglave me tituj me gjatësi zero nuk shfaqen kurrë.
toggle Ndryshon udhëzuesin e një elementi. Kthehet te thirrësi përpara se këshilla e veglave të jetë shfaqur ose fshehur (dmth. përpara se të ndodhë ngjarja shown.bs.tooltipose ). hidden.bs.tooltipKjo konsiderohet si një aktivizim "manual" i këshillës së veglave.
toggleEnabled Ndryshon aftësinë që këshilla e veglave të një elementi të shfaqet ose të fshihet.
update Përditëson pozicionin e këshillës së veglave të një elementi.
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance

// setContent example
tooltip.setContent({ '.tooltip-inner': 'another title' })
Metoda setContentpranon një objectargument, ku çdo çelës pronësie është një stringpërzgjedhës i vlefshëm brenda shabllonit popover, dhe çdo vlerë e pronës së lidhur mund të jetë string| element| function| null

Ngjarjet

Ngjarje Përshkrim
hide.bs.tooltip Kjo ngjarje aktivizohet menjëherë kur hidethirret metoda e shembullit.
hidden.bs.tooltip Kjo ngjarje aktivizohet kur popover-i ka përfunduar së fshehuri nga përdoruesi (do të presë që tranzicioni i CSS të përfundojë).
inserted.bs.tooltip Kjo ngjarje aktivizohet pas show.bs.tooltipngjarjes kur shablloni i këshillës së veglave është shtuar në DOM.
show.bs.tooltip Kjo ngjarje ndizet menjëherë kur showthirret metoda e shembullit.
shown.bs.tooltip Kjo ngjarje aktivizohet kur popoveri është bërë i dukshëm për përdoruesin (do të presë që kalimet CSS të përfundojnë).
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)

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

tooltip.hide()