Підказки
Документація та приклади додавання спеціальних підказок Bootstrap із CSS і JavaScript із використанням CSS3 для анімації та атрибутів data-bs для локального зберігання заголовків.
Огляд
Що потрібно знати під час використання плагіна підказок:
- Підказки покладаються на сторонню бібліотеку Popper для позиціонування. Ви повинні включити popper.min.js перед bootstrap.js або використовувати
bootstrap.bundle.min.js
/bootstrap.bundle.js
, який містить Popper, щоб підказки працювали! - Спливаючі підказки є доступними з міркувань продуктивності, тому ви повинні ініціалізувати їх самостійно .
- Підказки з заголовками нульової довжини ніколи не відображаються.
- Укажіть
container: 'body'
, щоб уникнути проблем із відтворенням у більш складних компонентах (як-от наші групи вводу, групи кнопок тощо). - Запуск підказок для прихованих елементів не працюватиме.
- Спливаючі підказки для елементів
.disabled
абоdisabled
мають бути викликані на елементі-обгортці. - Під час запуску з гіперпосилань, які охоплюють кілька рядків, підказки будуть відцентровані. Використовуйте
white-space: nowrap;
на вашому<a>
s, щоб уникнути такої поведінки. - Спливаючі підказки мають бути приховані до того, як їхні відповідні елементи будуть видалені з DOM.
- Підказки можна викликати завдяки елементу всередині тіньової DOM.
prefers-reduced-motion
медіа-запиту. Перегляньте розділ про
обмежений рух нашої документації щодо спеціальних можливостей .
Зрозуміли все це? Чудово, давайте подивимося, як вони працюють, на прикладах.
Приклад: увімкніть спливаючі підказки всюди
Одним із способів ініціалізації всіх підказок на сторінці є вибір їх за data-bs-toggle
атрибутом:
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
return new bootstrap.Tooltip(tooltipTriggerEl)
})
Приклади
Наведіть курсор на посилання нижче, щоб переглянути підказки:
Текст-заповнювач для демонстрації деяких вбудованих посилань із підказками. Тепер це просто наповнювач, а не вбивця. Вміст, розміщений тут лише для імітації присутності справжнього тексту . І все це лише для того, щоб дати вам уявлення про те, як виглядатимуть підказки під час використання в реальних ситуаціях. Тож, сподіваємося, тепер ви побачили, як ці підказки для посилань можуть працювати на практиці, коли ви використовуєте їх на власному сайті чи проекті.
Наведіть курсор на кнопки нижче, щоб побачити чотири напрямки підказок: зверху, справа, знизу та зліва. Напрямки віддзеркалюються під час використання Bootstrap у RTL.
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" title="Tooltip on top">
Tooltip on top
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="right" title="Tooltip on right">
Tooltip on right
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Tooltip on bottom">
Tooltip on bottom
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="left" title="Tooltip on left">
Tooltip on left
</button>
І з додаванням спеціального HTML:
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-html="true" title="<em>Tooltip</em> <u>with</u> <b>HTML</b>">
Tooltip with HTML
</button>
З SVG:
Сасс
Змінні
$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: 0;
$tooltip-arrow-width: .8rem;
$tooltip-arrow-height: .4rem;
$tooltip-arrow-color: $tooltip-bg;
Використання
Плагін підказки створює вміст і розмітку за запитом і за замовчуванням розміщує підказки після елемента запуску.
Запустити підказку через JavaScript:
var exampleEl = document.getElementById('example')
var tooltip = new bootstrap.Tooltip(exampleEl, options)
Перелив auto
іscroll
Позиція спливаючої підказки намагається автоматично змінитися, коли батьківський контейнер має overflow: auto
або overflow: scroll
подібно до нашого .table-responsive
, але все ще зберігає початкове розташування розташування. Щоб вирішити цю проблему, установіть boundary
параметр (для модифікатора перевертання, який використовує popperConfig
параметр) на будь-який HTMLElement, щоб замінити значення за замовчуванням 'clippingParents'
, наприклад document.body
:
var exampleEl = document.getElementById('example')
var tooltip = new bootstrap.Tooltip(exampleEl, {
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" 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" title="Disabled tooltip">
<button class="btn btn-primary" type="button" disabled>Disabled button</button>
</span>
Опції
Параметри можна передати через атрибути даних або JavaScript. Для атрибутів даних додайте назву опції до data-bs-
, як у data-bs-animation=""
. Обов’язково змініть тип регістру назви опції з camelCase на kebab-case під час передачі опцій через атрибути даних. Наприклад, замість використання data-bs-customClass="beautifier"
використовуйте data-bs-custom-class="beautifier"
.
sanitize
,
sanitizeFn
, і
allowList
не можуть бути надані за допомогою атрибутів даних.
Ім'я | Тип | За замовчуванням | опис |
---|---|---|---|
animation |
логічний | true |
Застосуйте згасання CSS до підказки |
container |
рядок | елемент | помилковий | false |
Додає підказку до певного елемента. Приклад: |
delay |
номер | об'єкт | 0 |
Затримка показу та приховування спливаючої підказки (мс) - не стосується типу ручного запуску Якщо вказано число, затримка застосовується як для приховування, так і для показу Структура об'єкта: |
html |
логічний | false |
Дозволити HTML у спливаючій підказці. Якщо встановлено значення true, теги HTML у спливаючій підказці Використовуйте текст, якщо вас турбують атаки XSS. |
placement |
рядок | функція | 'top' |
Як розташувати спливаючу підказку - авто | верх | нижня | ліворуч | правильно. Коли функція використовується для визначення розміщення, вона викликається з вузлом DOM спливаючої підказки як першим аргументом і вузлом DOM елемента запуску як другим. Контекст |
selector |
рядок | помилковий | false |
Якщо надано селектор, об’єкти підказки будуть делеговані вказаним цілям. На практиці це також використовується для застосування підказок до динамічно доданих елементів DOM ( jQuery.on підтримка). Перегляньте це та інформативний приклад . |
template |
рядок | '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' |
Базовий HTML для створення підказки. Підказку
Зовнішній елемент оболонки повинен мати |
title |
рядок | елемент | функція | '' |
Значення назви за умовчанням, якщо Якщо задано функцію, її буде викликано з |
trigger |
рядок | 'hover focus' |
Як спрацьовує підказка - клацніть | навести | фокус | посібник. Ви можете передати кілька тригерів; розділіть їх пробілом.
|
fallbackPlacements |
масив | ['top', 'right', 'bottom', 'left'] |
Визначте резервні місця розташування, надавши список місць розташування в масиві (у порядку переваги). Для отримання додаткової інформації зверніться до документів про поведінку Поппера |
boundary |
рядок | елемент | 'clippingParents' |
Межа обмеження переповнення спливаючої підказки (застосовується лише до модифікатора preventOverflow Поппера). За замовчуванням він 'clippingParents' приймає посилання HTMLElement (тільки через JavaScript). Для отримання додаткової інформації зверніться до документів Popper's detectOverflow . |
customClass |
рядок | функція | '' |
Додайте класи до спливаючої підказки, коли вона відображається. Зауважте, що ці класи буде додано на додаток до будь-яких класів, указаних у шаблоні. Щоб додати кілька класів, розділіть їх пробілами: Ви також можете передати функцію, яка повинна повертати один рядок, що містить імена додаткових класів. |
sanitize |
логічний | true |
Увімкніть або вимкніть санітарну обробку. Якщо активовано 'template' , 'title' параметри будуть очищені. Перегляньте розділ про дезінфікуючий засіб у нашій документації JavaScript . |
allowList |
об'єкт | Значення за замовчуванням | Об'єкт, який містить дозволені атрибути та теги |
sanitizeFn |
нуль | функція | null |
Тут ви можете встановити власну функцію дезінфекції. Це може бути корисним, якщо ви віддаєте перевагу використанню спеціальної бібліотеки для виконання санітарної обробки. |
offset |
масив | рядок | функція | [0, 0] |
Зміщення спливаючої підказки відносно її цілі. Ви можете передати рядок в атрибутах даних зі значеннями, розділеними комами, наприклад: Коли функція використовується для визначення зміщення, вона викликається з об’єктом, що містить розміщення поппера, посилання та прямокутники поппера як перший аргумент. Вузол DOM тригерного елемента передається як другий аргумент. Функція має повертати масив із двома числами: . Для отримання додаткової інформації зверніться до офсетної документації Поппера . |
popperConfig |
нуль | об'єкт | функція | null |
Щоб змінити конфігурацію Popper Bootstrap за замовчуванням, перегляньте конфігурацію Popper . Коли функція використовується для створення конфігурації Popper, вона викликається з об’єктом, який містить стандартну конфігурацію Popper Bootstrap. Це допоможе вам використовувати та об’єднати стандартну конфігурацію з вашою власною конфігурацією. Функція має повертати об’єкт конфігурації для Popper. |
Атрибути даних для окремих підказок
Параметри для окремих підказок можна альтернативно вказати за допомогою використання атрибутів даних, як пояснено вище.
Використання функції зpopperConfig
var tooltip = new bootstrap.Tooltip(element, {
popperConfig: function (defaultBsPopperConfig) {
// var newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
методи
Асинхронні методи та переходи
Усі методи API є асинхронними та починають перехід . Вони повертаються до абонента, щойно перехід починається, але до його завершення . Крім того, виклик методу компонента, що переходить, ігноруватиметься .
Дивіться нашу документацію JavaScript для отримання додаткової інформації .
шоу
Показує спливаючу підказку елемента. Повертається до абонента, перш ніж спливаюча підказка була фактично показана (тобто до shown.bs.tooltip
події). Це вважається «ручним» запуском підказки. Підказки з заголовками нульової довжини ніколи не відображаються.
tooltip.show()
приховати
Приховує спливаючу підказку елемента. Повертається до абонента, перш ніж спливаюча підказка була фактично прихована (тобто до того , як відбудеться hidden.bs.tooltip
подія). Це вважається «ручним» запуском підказки.
tooltip.hide()
перемикач
Перемикає спливаючу підказку елемента. Повертається до абонента до того, як спливаюча підказка була фактично показана або прихована (тобто до події shown.bs.tooltip
або ). hidden.bs.tooltip
Це вважається «ручним» запуском підказки.
tooltip.toggle()
розпоряджатися
Приховує та знищує спливаючу підказку елемента (видаляє збережені дані в елементі DOM). Підказки, які використовують делегування (які створюються за допомогою параметра selector
) , не можуть бути окремо знищені на нащадкових елементах тригера.
tooltip.dispose()
включити
Надає можливість показу спливаючої підказки елемента. Підказки ввімкнено за умовчанням.
tooltip.enable()
відключити
Усуває можливість показу спливаючої підказки елемента. Спливаючу підказку можна буде показати, лише якщо її повторно ввімкнути.
tooltip.disable()
toggleEnabled
Перемикає можливість показувати або приховувати підказку елемента.
tooltip.toggleEnabled()
оновлення
Оновлює положення спливаючої підказки елемента.
tooltip.update()
getInstance
Статичний метод, який дозволяє отримати екземпляр спливаючої підказки, пов’язаний з елементом DOM
var exampleTriggerEl = document.getElementById('example')
var tooltip = bootstrap.Tooltip.getInstance(exampleTriggerEl) // Returns a Bootstrap tooltip instance
getOrCreateInstance
Статичний метод, який дозволяє отримати екземпляр спливаючої підказки, пов’язаний з елементом DOM, або створити новий, якщо він не був ініціалізований
var exampleTriggerEl = document.getElementById('example')
var tooltip = bootstrap.Tooltip.getOrCreateInstance(exampleTriggerEl) // Returns a Bootstrap tooltip instance
Події
Тип події | опис |
---|---|
show.bs.tooltip |
Ця подія запускається негайно, коли show викликається метод екземпляра. |
shown.bs.tooltip |
Ця подія запускається, коли спливаюча підказка стає видимою для користувача (буде очікувати завершення переходів CSS). |
hide.bs.tooltip |
Ця подія запускається негайно після hide виклику методу екземпляра. |
hidden.bs.tooltip |
Ця подія запускається, коли спливаюча підказка перестає бути прихованою від користувача (чекатиме, поки завершаться переходи CSS). |
inserted.bs.tooltip |
Ця подія запускається після show.bs.tooltip події, коли шаблон підказки було додано до DOM. |
var myTooltipEl = document.getElementById('myTooltip')
var tooltip = new bootstrap.Tooltip(myTooltipEl)
myTooltipEl.addEventListener('hidden.bs.tooltip', function () {
// do something...
})
tooltip.hide()