Падказкі
Дакументацыя і прыклады для дадання карыстацкіх падказак 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.
Зразумеў усё? Выдатна, давайце паглядзім, як яны працуюць, на некаторых прыкладах.
prefers-reduced-motion
медыя-запыту. Глядзіце раздзел аб
паменшаным руху нашай дакументацыі па спецыяльных магчымасцях .
Прыклады
Уключыць падказкі
Як згадвалася вышэй, вы павінны ініцыялізаваць падказкі, перш чым іх можна будзе выкарыстоўваць. Адзін са спосабаў ініцыялізаваць усе ўсплывальныя падказкі на старонцы - выбраць іх па data-bs-toggle
атрыбутах, напрыклад:
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
Падказкі па спасылках
Навядзіце курсор на спасылкі ніжэй, каб убачыць падказкі:
Тэкст-запаўняльнік для дэманстрацыі некаторых убудаваных спасылак з падказкамі. Цяпер гэта проста напаўняльнік, а не забойца. Змесціва, размешчанае тут толькі для імітацыі прысутнасці сапраўднага тэксту . І ўсё гэта толькі для таго, каб даць вам уяўленне аб тым, як будуць выглядаць падказкі пры выкарыстанні ў рэальных сітуацыях. Так што, спадзяюся, вы ўбачылі, як гэтыя ўсплывальныя падказкі па спасылках могуць працаваць на практыцы, калі вы выкарыстоўваеце іх на ўласным сайце або ў праекце.
<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);
}
<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"
.
<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()