Перайсці да асноўнага зместу Перайсці да навігацыі па дакументах
Check
in English

Падказкі

Дакументацыя і прыклады для дадання карыстацкіх падказак Bootstrap з CSS і JavaScript з выкарыстаннем CSS3 для анімацыі і атрыбутаў data-bs для лакальнага захоўвання загалоўкаў.

Агляд

Што трэба ведаць пры выкарыстанні плагіна падказкі:

  • Падказкі абапіраюцца на староннюю бібліятэку Popper для пазіцыянавання. Вы павінны ўключыць popper.min.js перад bootstrap.jsабо выкарыстоўваць той bootstrap.bundle.min.js, які змяшчае Popper.
  • Усплывальныя падказкі з'яўляюцца выбарнымі з меркаванняў прадукцыйнасці, таму вы павінны ініцыялізаваць іх самастойна .
  • Падказкі з загалоўкамі нулявой даўжыні ніколі не адлюстроўваюцца.
  • Укажыце container: 'body', каб пазбегнуць праблем з візуалізацыяй больш складаных кампанентаў (напрыклад, нашых груп уводу, груп кнопак і г.д.).
  • Запуск падказак на схаваных элементах не будзе працаваць.
  • Падказкі для элементаў .disabledабо disabledпавінны запускацца на элеменце-абгортцы.
  • Пры запуску з гіперспасылак, якія ахопліваюць некалькі радкоў, падказкі будуць па цэнтры. Выкарыстоўвайце white-space: nowrap;на вашым <a>s, каб пазбегнуць такіх паводзін.
  • Усплывальныя падказкі павінны быць схаваныя, перш чым адпаведныя элементы будуць выдалены з DOM.
  • Усплывальныя падказкі могуць быць запушчаны дзякуючы элементу ўнутры ценявога DOM.

Зразумеў усё? Выдатна, давайце паглядзім, як яны працуюць, на некаторых прыкладах.

Па змаўчанні гэты кампанент выкарыстоўвае ўбудаваны сродак ачысткі змесціва, які выдаляе любыя элементы HTML, якія відавочна не дазволены. Больш падрабязную інфармацыю глядзіце ў раздзеле дэзінфікуючых сродкаў у нашай дакументацыі па JavaScript .
Анімацыйны эфект гэтага кампанента залежыць ад prefers-reduced-motionмедыя-запыту. Глядзіце раздзел аб паменшаным руху нашай дакументацыі па спецыяльных магчымасцях .

Прыклады

Уключыць падказкі

Як згадвалася вышэй, вы павінны ініцыялізаваць падказкі, перш чым іх можна будзе выкарыстоўваць. Адзін са спосабаў ініцыялізаваць усе ўсплывальныя падказкі на старонцы - выбраць іх па data-bs-toggleатрыбутах, напрыклад:

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

Навядзіце курсор на спасылкі ніжэй, каб убачыць падказкі:

Тэкст-запаўняльнік для дэманстрацыі некаторых убудаваных спасылак з падказкамі. Цяпер гэта проста напаўняльнік, а не забойца. Змесціва, размешчанае тут толькі для імітацыі прысутнасці сапраўднага тэксту . І ўсё гэта толькі для таго, каб даць вам уяўленне аб тым, як будуць выглядаць падказкі пры выкарыстанні ў рэальных сітуацыях. Так што, спадзяюся, вы ўбачылі, як гэтыя ўсплывальныя падказкі па спасылках могуць працаваць на практыцы, калі вы выкарыстоўваеце іх на ўласным сайце або ў праекце.

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>
Не саромейцеся выкарыстоўваць або titleабо data-bs-titleў вашым HTML. Калі titleвыкарыстоўваецца, Попер аўтаматычна заменіць яго на data-bs-titleпры візуалізацыі элемента.

Карыстальніцкія падказкі

Дададзена ў v5.2.0

Вы можаце наладзіць знешні выгляд падказак з дапамогай зменных CSS . Мы ўсталёўваем карыстальніцкі клас data-bs-custom-class="custom-tooltip"для ахопу нашага карыстацкага выгляду і выкарыстоўваем яго для перавызначэння лакальнай зменнай 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>

Напрамкі

Навядзіце курсор мышы на кнопкі ніжэй, каб убачыць чатыры ўсплывальныя падказкі: зверху, справа, знізу і злева. Напрамкі адлюстроўваюцца пры выкарыстанні 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>

І з даданнем карыстальніцкага 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>

З SVG:

CSS

Пераменныя

Дададзена ў v5.2.0

Як частка падыходу Bootstrap, які развіваецца да зменных CSS, у падказках цяпер выкарыстоўваюцца лакальныя зменныя CSS .tooltipдля палепшанай налады ў рэжыме рэальнага часу. Значэнні для зменных CSS задаюцца праз Sass, таму налада Sass па-ранейшаму падтрымліваецца.

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

$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

Выкарыстанне

Убудова ўсплывальнай падказкі стварае кантэнт і разметку па патрабаванні і па змаўчанні размяшчае ўсплывальныя падказкі пасля элемента запуску.

Запусціць падказку праз JavaScript:

const exampleEl = document.getElementById('example')
const tooltip = new bootstrap.Tooltip(exampleEl, options)
Пераліў autoіscroll

Пазіцыя ўсплываючай падказкі спрабуе аўтаматычна змяніцца, калі бацькоўскі кантэйнер мае overflow: autoабо overflow: scrollяк наш .table-responsive, але пры гэтым захоўваецца зыходнае размяшчэнне. Каб вырашыць гэтую праблему, усталюйце boundaryпараметр (для мадыфікатара перавароту з дапамогай popperConfigпараметра) у любы HTMLElement, каб перавызначыць значэнне па змаўчанні 'clippingParents', напрыклад document.body:

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

Разметка

Неабходная разметка для ўсплываючай падказкі - гэта толькі dataатрыбут, а titleна HTML-элеменце вы хочаце мець падказку. Створаная разметка ўсплываючай падказкі даволі простая, хаця для яе патрабуецца пазіцыя (па змаўчанні, усталяваная topўбудовай).

Стварэнне ўсплывальных падказак для карыстальнікаў клавіятуры і дапаможных тэхналогій

Вы павінны дадаваць толькі ўсплывальныя падказкі да элементаў HTML, якія традыцыйна функцыянуюць з дапамогай клавіятуры і інтэрактыўныя (напрыклад, спасылкі або элементы кіравання формамі). Нягледзячы на ​​тое, што адвольныя элементы HTML (напрыклад, <span>s) можна зрабіць фокуснымі, дадаўшы tabindex="0"атрыбут, гэта дадасць патэнцыйна раздражняльныя і заблытаныя прыпынкі табуляцыі на неінтэрактыўныя элементы для карыстальнікаў клавіятуры, і большасць дапаможных тэхналогій у цяперашні час не аб'яўляюць падказку ў гэтай сітуацыі. Акрамя таго, не спадзявайцеся толькі на hoverтое, што гэта будзе трыгер для вашай усплывальнай падказкі, бо гэта зробіць вашыя падказкі немагчымымі для запуску для карыстальнікаў клавіятуры.

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

Адключаныя элементы

Элементы з disabledатрыбутам не з'яўляюцца інтэрактыўнымі, што азначае, што карыстальнікі не могуць сфакусавацца, навесці курсор або націснуць на іх, каб выклікаць падказку (або ўсплывальнае акно). У якасці абыходнага шляху вы захочаце запусціць падказку з абалонкі <div>або <span>, у ідэале, зробленай з дапамогай клавіятуры з дапамогай 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>

Параметры

Паколькі параметры можна перадаць праз атрыбуты даных або JavaScript, вы можаце дадаць імя параметра да data-bs-, як у data-bs-animation="{value}". Не забудзьцеся змяніць тып рэгістра назвы опцыі з « camelCase » на « kebab-case » пры перадачы опцый праз атрыбуты даных. Напрыклад, выкарыстоўвайце data-bs-custom-class="beautifier"замест data-bs-customClass="beautifier".

Пачынаючы з Bootstrap 5.2.0, усе кампаненты падтрымліваюць эксперыментальны атрыбут зарэзерваваных даных data-bs-config, які можа змяшчаць простую канфігурацыю кампанента ў выглядзе радка JSON. Калі элемент мае атрыбуты data-bs-config='{"delay":0, "title":123}'і data-bs-title="456", канчатковае titleзначэнне будзе , 456а асобныя атрыбуты даных будуць перавызначаць значэнні, зададзеныя ў data-bs-config. Акрамя таго, існуючыя атрыбуты даных могуць змяшчаць такія значэнні JSON, як data-bs-delay='{"show":0,"hide":150}'.

Звярніце ўвагу, што з меркаванняў бяспекі параметры sanitize, sanitizeFn, і allowListне могуць быць зададзены з выкарыстаннем атрыбутаў даных.
Імя Тып Па змаўчанні Апісанне
allowList аб'ект Значэнне па змаўчанні Аб'ект, які змяшчае дазволеныя атрыбуты і тэгі.
animation лагічны true Прымяніце пераход знікнення CSS да падказкі.
boundary радок, элемент 'clippingParents' Мяжа абмежавання перапаўнення падказкі (прымяняецца толькі да мадыфікатара preventOverflow Попера). Па змаўчанні ён 'clippingParents'можа прымаць спасылку HTMLElement (толькі праз JavaScript). Для атрымання дадатковай інфармацыі звярніцеся да дакументаў Popper's detectOverflow .
container радок, элемент, ілжывы false Дадае падказку да пэўнага элемента. Прыклад: container: 'body'. Гэтая опцыя асабліва карысная тым, што яна дазваляе размясціць падказку ў патоку дакумента побач з запускаючым элементам, што не дазволіць усплываючай падказцы адплываць ад запускаючага элемента падчас змены памеру акна.
customClass радок, функцыя '' Дадайце класы ў падказку, калі яна паказана. Звярніце ўвагу, што гэтыя класы будуць дададзены ў дадатак да любых класаў, указаных у шаблоне. Каб дадаць некалькі класаў, падзяліце іх прабеламі: 'class-1 class-2'. Вы таксама можаце перадаць функцыю, якая павінна вяртаць адзіны радок, які змяшчае дадатковыя імёны класаў.
delay лік, прадмет 0 Затрымка паказу і хавання ўсплывальнай падказкі (мс)—не прымяняецца да ручнога тыпу трыгера. Калі ўказана лічба, затрымка прымяняецца як для схавання, так і для паказу. Структура аб'екта: delay: { "show": 500, "hide": 100 }.
fallbackPlacements масіў ['top', 'right', 'bottom', 'left'] Вызначце рэзервовыя месцы размяшчэння, прадставіўшы спіс месцаў размяшчэння ў масіве (у парадку перавагі). Для атрымання дадатковай інфармацыі звярніцеся да дакументацыі паводзін Попера .
html лагічны false Дазволіць HTML у падказцы. Калі ісціна, тэгі HTML ва ўсплывальнай падказцы titleбудуць адлюстроўвацца ў падказцы. Калі false, innerTextуласцівасць будзе выкарыстоўвацца для ўстаўкі змесціва ў DOM. Выкарыстоўвайце тэкст, калі вы турбуецеся аб атаках XSS.
offset масіў, радок, функцыя [0, 0] Зрушэнне падказкі адносна мэты. Вы можаце перадаць радок у атрыбутах дадзеных са значэннямі, падзеленымі коскамі, напрыклад: data-bs-offset="10,20". Калі функцыя выкарыстоўваецца для вызначэння зрушэння, яна выклікаецца з аб'ектам, які змяшчае размяшчэнне попера, спасылку і прамастаянні попера ў якасці першага аргумента. Запускаючы элемент DOM вузел перадаецца ў якасці другога аргумента. Функцыя павінна вяртаць масіў з двума лікамі: занос , адлегласць . Для атрымання дадатковай інфармацыі звярніцеся да афсетнай дакументацыі Попера .
placement радок, функцыя 'top' Як размясціць падказку: аўтаматычна, зверху, знізу, злева, справа. Калі autoпазначана, гэта будзе дынамічна пераарыентаваць падказку. Калі функцыя выкарыстоўваецца для вызначэння размяшчэння, яна выклікаецца з вузлом DOM падказкі ў якасці першага аргумента і вузлом DOM элемента запуску ў якасці другога. Кантэкст thisусталяваны для асобніка падказкі.
popperConfig нуль, аб'ект, функцыя null Каб змяніць стандартную канфігурацыю Popper для Bootstrap, глядзіце канфігурацыю Popper . Калі функцыя выкарыстоўваецца для стварэння канфігурацыі Popper, яна выклікаецца з аб'ектам, які змяшчае канфігурацыю Popper па змаўчанні Bootstrap. Гэта дапаможа вам выкарыстоўваць і аб'яднаць стандартную канфігурацыю з вашай уласнай канфігурацыяй. Функцыя павінна вяртаць аб'ект канфігурацыі для Popper.
sanitize лагічны true Уключыце або выключыце дэзінфекцыю. Калі актывавана 'template', 'content'і 'title'параметры будуць ачышчаны.
sanitizeFn нуль, функцыя null Тут вы можаце паставіць сваю ўласную функцыю дэзінфекцыі. Гэта можа быць карысна, калі вы аддаеце перавагу выкарыстоўваць спецыяльную бібліятэку для правядзення дэзінфекцыі.
selector радок, ілжывы false Калі прадастаўляецца селектар, аб'екты ўсплывальнай падказкі будуць дэлегаваны ўказаным мэтам. На практыцы гэта таксама выкарыстоўваецца для прымянення падказак да дынамічна дададзеных элементаў DOM ( jQuery.onпадтрымка). Глядзіце гэты выпуск і інфарматыўны прыклад .
template радок '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' Базавы HTML для выкарыстання пры стварэнні падказкі. Падказка titleбудзе ўстаўлена ў .tooltip-inner. .tooltip-arrowстане стрэлкай падказкі. Самы знешні элемент-абгортка павінен мець .tooltipклас і role="tooltip".
title радок, элемент, функцыя '' Значэнне загалоўка па змаўчанні, калі titleатрыбут адсутнічае. Калі функцыя зададзена, яна будзе выкліканая са thisспасылкай на элемент, да якога далучана ўсплывальнае акно.
trigger радок 'hover focus' Як спрацоўвае падказка: пстрычка, навядзенне курсора, фокус, уручную. Вы можаце перадаць некалькі трыгераў; падзяліце іх прабелам. 'manual'паказвае, што падказка будзе запушчана праграмна праз метады .tooltip('show'), .tooltip('hide')і ; .tooltip('toggle')гэта значэнне не можа спалучацца з любым іншым трыгерам. 'hover'сам па сабе прывядзе да ўсплывальных падказак, якія нельга выклікаць праз клавіятуру, і іх варта выкарыстоўваць толькі пры наяўнасці альтэрнатыўных метадаў перадачы той жа інфармацыі для карыстальнікаў клавіятуры.

Атрыбуты дадзеных для асобных падказак

Варыянты для асобных усплывальных падказак можна ў якасці альтэрнатывы задаць з дапамогай выкарыстання атрыбутаў даных, як тлумачылася вышэй.

Выкарыстанне функцыі зpopperConfig

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

Метады

Асінхронныя метады і пераходы

Усе метады API асінхронныя і пачынаюць пераход . Яны вяртаюцца да абанента, як толькі пачынаецца пераход, але да яго заканчэння . Акрамя таго, выклік метаду пераходнага кампанента будзе ігнаравацца .

Для атрымання дадатковай інфармацыі глядзіце нашу дакументацыю па JavaScript .

Метад Апісанне
disable Выдаляе магчымасць паказу падказкі элемента. Усплываючая падказка будзе паказвацца, толькі калі яна будзе зноў уключана.
dispose Хавае і знішчае ўсплывальную падказку элемента (выдаляе захаваныя даныя на элеменце DOM). Усплывальныя падказкі, якія выкарыстоўваюць дэлегаванне (якія ствараюцца з выкарыстаннем параметра ) selector, не могуць быць індывідуальна знішчаны на нашчадных трыгерных элементах.
enable Дае магчымасць паказу падказкі элемента. Падказкі ўключаны па змаўчанні.
getInstance Статычны метад, які дазваляе атрымаць асобнік падказкі, звязаны з элементам DOM, або стварыць новы, калі ён не быў ініцыялізаваны.
getOrCreateInstance Статычны метад, які дазваляе атрымаць асобнік падказкі, звязаны з элементам DOM, або стварыць новы, калі ён не быў ініцыялізаваны.
hide Хавае падказку элемента. Вяртаецца да абанента да таго, як падказка была фактычна схавана (г.зн. да таго, як hidden.bs.tooltipадбылася падзея). Гэта лічыцца «ручным» запускам падказкі.
setContent Дае магчымасць змяніць змест падказкі пасля яе ініцыялізацыі.
show Адкрывае падказку элемента. Вяртаецца да абанента да таго, як была фактычна паказана ўсплывальная падказка (г.зн. да таго , як shown.bs.tooltipадбудзецца падзея). Гэта лічыцца «ручным» запускам падказкі. Падказкі з загалоўкамі нулявой даўжыні ніколі не адлюстроўваюцца.
toggle Пераключае падказку элемента. Вяртаецца да абанента да таго, як падказка была фактычна паказана або схавана (г.зн. да таго , як адбудзецца падзея shown.bs.tooltipабо ). hidden.bs.tooltipГэта лічыцца «ручным» запускам падказкі.
toggleEnabled Уключае магчымасць паказваць або хаваць падказку элемента.
update Абнаўляе пазіцыю падказкі элемента.
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance

// setContent example
tooltip.setContent({ '.tooltip-inner': 'another title' })
Метад setContentпрымае objectаргумент, дзе кожны ключ уласцівасці з'яўляецца сапраўдным stringселектарам у шаблоне ўсплываючага меню, а кожнае звязанае значэнне ўласцівасці можа быць string| element| function| null

Падзеі

Падзея Апісанне
hide.bs.tooltip Гэта падзея запускаецца адразу пасля hideвыкліку метаду асобніка.
hidden.bs.tooltip Гэта падзея запускаецца, калі ўсплывальнае акно перастае быць схаваным ад карыстальніка (будзе чакаць завяршэння пераходаў CSS).
inserted.bs.tooltip Гэта падзея запускаецца пасля show.bs.tooltipпадзеі, калі шаблон падказкі быў дададзены ў DOM.
show.bs.tooltip Гэта падзея запускаецца неадкладна пры showвыкліку метаду асобніка.
shown.bs.tooltip Гэта падзея запускаецца, калі ўсплывальнае акно становіцца бачным для карыстальніка (будзе чакаць завяршэння пераходаў CSS).
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)

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

tooltip.hide()