Перейти до основного вмісту Перейти до навігації документами
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 false Додає підказку до певного елемента. Приклад: container: 'body'. Цей параметр особливо корисний тим, що він дозволяє розташувати підказку в потоці документа поруч із елементом запуску, що запобігатиме відпливу підказки від елемента запуску під час зміни розміру вікна.
customClass рядок, функція '' Додайте класи до спливаючої підказки, коли вона відображається. Зауважте, що ці класи буде додано на додаток до будь-яких класів, указаних у шаблоні. Щоб додати кілька класів, розділіть їх пробілами: 'class-1 class-2'. Ви також можете передати функцію, яка повинна повертати один рядок, що містить імена додаткових класів.
delay число, предмет 0 Затримка показу та приховування спливаючої підказки (мс) — не стосується типу тригера вручну. Якщо вказано число, затримка застосовується як для приховування, так і для показу. Структура об'єкта: delay: { "show": 500, "hide": 100 }.
fallbackPlacements масив ['top', 'right', 'bottom', 'left'] Визначте резервні місця розташування, надавши список місць розташування в масиві (у порядку переваги). Для отримання додаткової інформації зверніться до документів про поведінку Поппера .
html логічний false Дозволити HTML у спливаючій підказці. Якщо встановлено значення true, теги HTML у спливаючій підказці titleвідображатимуться у спливаючій підказці. Якщо значення false, innerTextвластивість використовуватиметься для вставки вмісту в DOM. Використовуйте текст, якщо вас турбують атаки XSS.
offset масив, рядок, функція [0, 0] Зміщення спливаючої підказки відносно її цілі. Ви можете передати рядок в атрибутах даних зі значеннями, розділеними комами, наприклад: data-bs-offset="10,20". Коли функція використовується для визначення зміщення, вона викликається з об’єктом, що містить розміщення поппера, посилання та прямокутники поппера як перший аргумент. Вузол DOM тригерного елемента передається як другий аргумент. Функція має повертати масив із двома числами: занос , відстань . Для отримання додаткової інформації зверніться до офсетної документації Поппера .
placement рядок, функція 'top' Як розташувати спливаючу підказку: автоматично, зверху, знизу, зліва, справа. Якщо autoвказано, підказка буде динамічно переорієнтована. Коли функція використовується для визначення розміщення, вона викликається з вузлом DOM спливаючої підказки як першим аргументом і вузлом DOM елемента запуску як другим. Контекст thisвстановлено для екземпляра підказки.
popperConfig null, об'єкт, функція null Щоб змінити конфігурацію Popper Bootstrap за замовчуванням, перегляньте конфігурацію Popper . Коли функція використовується для створення конфігурації Popper, вона викликається з об’єктом, який містить стандартну конфігурацію Popper Bootstrap. Це допоможе вам використовувати та об’єднати стандартну конфігурацію з вашою власною конфігурацією. Функція має повертати об’єкт конфігурації для Popper.
sanitize логічний true Увімкніть або вимкніть санітарну обробку. Якщо активовано 'template', 'content'і 'title'параметри будуть очищені.
sanitizeFn null, функція null Тут ви можете встановити власну функцію дезінфекції. Це може бути корисним, якщо ви віддаєте перевагу використанню спеціальної бібліотеки для виконання санітарної обробки.
selector рядок, false 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()