Документация и примеры для добавления настраиваемых всплывающих подсказок Bootstrap с помощью CSS и JavaScript с использованием CSS3 для анимации и атрибутов данных для локального хранения заголовков.
Обзор
Что нужно знать при использовании плагина всплывающей подсказки:
- Подсказки полагаются на стороннюю библиотеку Popper для позиционирования. Вы должны включить popper.min.js перед bootstrap.js или использовать
bootstrap.bundle.min.js
/bootstrap.bundle.js
, который содержит Popper чтобы всплывающие подсказки работали! - Если Вы создаете наш JavaScript из исходного кода, для него требуется
util.js
. - Всплывающие подсказки используются по соображениям производительности, поэтому Вы должны инициализировать их самостоятельно.
- Всплывающие подсказки с заголовками нулевой длины никогда не отображаются.
- Укажите
container: 'body'
, чтобы избежать проблем с рендерингом в более сложных компонентах (например, в наших группах ввода, группах кнопок и т.д.). - Всплывающие подсказки для скрытых элементов не работают.
- Всплывающие подсказки для элементов
.disabled
илиdisabled
должны запускаться для элемента-оболочки. - При запуске от гиперссылок, охватывающих несколько строк, всплывающие подсказки будут центрированы. Используйте
white-space: nowrap;
на Ваших<a>
, чтобы избежать такого поведения. - Всплывающие подсказки должны быть скрыты до того, как соответствующие им элементы будут удалены из DOM.
- Всплывающие подсказки могут запускаться благодаря элементу внутри теневой модели DOM.
prefers-reduced-motion
. См. Раздел с уменьшенным движением в нашей документации по специальным возможностям.
Получил все это? Отлично, посмотрим, как они работают, на некоторых примерах.
Пример: Включить всплывающие подсказки везде
Один из способов инициализировать все всплывающие подсказки на странице - это выбрать их по их атрибуту data-toggle
:
$(function () {
$('[data-toggle="tooltip"]').tooltip()
})
Примеры
Наведите курсор на ссылки ниже, чтобы увидеть всплывающие подсказки:
Placeholder text to demonstrate some inline links with tooltips. This is now just filler, no killer. Content placed here just to mimic the presence of real text. 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 these tooltips on links can work in practice, once you use them on your own site or project.
Наведите указатель мыши на кнопки ниже, чтобы увидеть четыре направления подсказок: вверх, вправо, внизу и влево.
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="top" title="Подсказка вверху">
Подсказка вверху
</button>
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="right" title="Подсказка справа">
Подсказка справа
</button>
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom" title="Подсказка снизу">
Подсказка снизу
</button>
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="left" title="Подсказка слева">
Подсказка слева
</button>
И с добавленным пользовательским HTML:
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-html="true" title="<em>Всплывающая подсказка</em> <u>с</u> <b>HTML</b>">
Всплывающая подсказка с HTML
</button>
Применение
Плагин всплывающих подсказок генерирует контент и разметку по запросу и по умолчанию помещает всплывающие подсказки после их триггерного элемента.
Запуск всплывающей подсказки через JavaScript:
$('#example').tooltip(options)
Переполнение auto
и scroll
Положение всплывающей подсказки пытается автоматически измениться, когда родительский контейнер имеет overflow: auto
или overflow: scroll
, как наш .table-responsive
, но по-прежнему сохраняет исходное положение размещения. Чтобы решить эту проблему, установите для параметра boundary
значение, отличное от значения по умолчанию, 'scrollParent'
, например, 'window'
:
$('#example').tooltip({ boundary: 'window' })
Разметка
Требуемая разметка для всплывающей подсказки - это только атрибут data
и заголовок title
HTML-элемента, для которого Вы хотите иметь всплывающую подсказку. Сгенерированная разметка всплывающей подсказки довольно проста, хотя для нее требуется позиция (по умолчанию плагином установлено значение top
).
Работа с всплывающими подсказками для пользователей клавиатуры и вспомогательных технологий
Вы должны добавлять всплывающие подсказки только к HTML-элементам, которые традиционно ориентированы на клавиатуру и являются интерактивными (например, ссылки или элементы управления формы). Хотя произвольные элементы HTML (такие как <span>
) можно сделать доступными для фокусировки, добавив атрибут tabindex =" 0 "
, это добавит потенциально раздражающие и сбивающие с толку позиции табуляции на неинтерактивных элементах для пользователей клавиатуры, и большинство Вспомогательные технологии в настоящее время не объявляют всплывающую подсказку в этой ситуации. Кроме того, не полагайтесь исключительно на hover
в качестве триггера для Вашей всплывающей подсказки, так как это сделает невозможным запуск Ваших всплывающих подсказок для пользователей клавиатуры.
<!-- HTML для записи -->
<a href="#" data-toggle="tooltip" title="Текст всплывающей подсказки!">Наведите на меня</a>
<!-- Разметка, созданная плагином -->
<div class="tooltip bs-tooltip-top" role="tooltip">
<div class="arrow"></div>
<div class="tooltip-inner">
Текст всплывающей подсказки!
</div>
</div>
Отключенные элементы
Элементы с атрибутом disabled
не являются интерактивными, то есть пользователи не могут сфокусироваться, навести на них курсор или щелкнуть их, чтобы вызвать всплывающую подсказку (или всплывающее окно). В качестве обходного пути Вы захотите вызвать всплывающую подсказку из оболочки <div>
или <span>
, в идеале сделанной с фокусировкой на клавиатуре, используя tabindex="0"
, и переопределить pointer-events
на отключенный элемент.
<span class="d-inline-block" tabindex="0" data-toggle="tooltip" title="Отключенная подсказка">
<button class="btn btn-primary" style="pointer-events: none;" type="button" disabled>Отключенная кнопка</button>
</span>
Параметры
Параметры могут передаваться через атрибуты данных или JavaScript. Для атрибутов данных добавьте имя параметра к data-
, как в data-animation=""
.
sanitize
, sanitizeFn
и whiteList
не могут быть предоставлены с использованием атрибутов данных.
Название | Тип | По умолчанию | Описание |
---|---|---|---|
animation | boolean | true | Применить переход CSS fade к всплывающей подсказке |
container | string | element | false | false |
Добавляет всплывающую подсказку к определенному элементу. Пример: |
delay | number | object | 0 |
Задержка отображения и скрытия всплывающей подсказки (мс) - не относится к ручному типу триггера Если указан номер, задержка применяется как к скрытию, так и к отображению Структура объекта: |
html | boolean | false |
Разрешить HTML во всплывающей подсказке. Если задано значение true, HTML-теги в Используйте текст, если Вас беспокоят XSS-атаки. |
placement | string | function | 'top' |
Как разместить всплывающую подсказку - auto | top | bottom | left | right. Когда функция используется для определения размещения, она вызывается с помощью узла DOM всплывающей подсказки в качестве первого аргумента и узла DOM элемента запуска в качестве второго. Контекст |
selector | string | false | false | Если предусмотрен селектор, объекты всплывающей подсказки будут делегированы указанным целям. На практике это также используется для применения всплывающих подсказок к динамически добавляемым элементам DOM (поддержка jQuery.on ). Смотрите это и информативный пример. |
template | string | '<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>' |
Базовый HTML-код для использования при создании всплывающей подсказки. Заголовок всплывающей подсказки
Самый внешний элемент оболочки должен иметь класс |
title | string | element | function | '' |
Значение заголовка по умолчанию, если атрибут Если задана функция, она будет вызываться со ссылкой |
trigger | string | 'hover focus' |
Как вызывается всплывающая подсказка - click | hover | focus | manual. Вы можете передать несколько триггеров; разделите их пробелом.
Само по себе |
offset | number | string | function | 0 |
Смещение всплывающей подсказки относительно цели. Когда функция используется для определения смещения, она вызывается с объектом, содержащим данные смещения в качестве первого аргумента. Функция должна возвращать объект с такой же структурой. Узел DOM запускающего элемента передается в качестве второго аргумента. Дополнительную информацию смотрите документации Popper по смещению. |
fallbackPlacement | string | array | 'flip' | Разрешить указать, какую позицию Popper будет использовать при откате. Для получения дополнительной информации смотрите документацию о поведении Popper. |
customClass | string | function | '' |
Добавляйте классы во всплывающую подсказку, когда она отображается. Обратите внимание, что эти классы будут добавлены в дополнение к любым классам, указанным в шаблоне. Чтобы добавить несколько классов, разделите их пробелами: Вы также можете передать функцию, которая должна возвращать одну строку, содержащую дополнительные имена классов. |
boundary | string | element | 'scrollParent' | Граница ограничения переполнения всплывающей подсказки. Принимает значения 'viewport' , 'window' , 'scrollParent' или ссылку HTMLElement (только JavaScript). Дополнительную информацию смотрите документацию preventOverflow Popper. |
sanitize | boolean | true | Включите или отключите очистку. Если активированы параметры 'template' и 'title' , будут очищены. Смотрите раздел sanitizer в нашей документации по JavaScript. |
whiteList | object | Значение по умолчанию | Объект, содержащий разрешенные атрибуты и теги |
sanitizeFn | null | function | null | Здесь Вы можете предоставить свою собственную функцию офистки. Это может быть полезно, если Вы предпочитаете использовать специальную библиотеку для выполнения очистки. |
popperConfig | null | object | null | Чтобы изменить конфигурацию Popper по умолчанию для Bootstrap, смотрите конфигурацию Popper. |
Атрибуты данных для отдельных всплывающих подсказок
В качестве альтернативы параметры для отдельных всплывающих подсказок можно указать с помощью атрибутов данных, как описано выше.
Методы
Асинхронные методы и переходы
Все методы API асинхронны и запускают переход. Они возвращаются к вызывающей стороне, как только переход начинается, но до его завершения. Кроме того, вызов метода переходного компонента будет проигнорирован.
Дополнительную информацию см. в нашей документации по JavaScript.
$().tooltip(options)
Присоединяет обработчик всплывающей подсказки к коллекции элементов.
.tooltip('show')
Показывает всплывающую подсказку элемента. Возврат к вызывающей стороне до того, как всплывающая подсказка была фактически показана (то есть до того, как произойдет событие shown.bs.tooltip
). Это считается “ручным” запуском всплывающей подсказки. Всплывающие подсказки с заголовками нулевой длины никогда не отображаются.
$('#element').tooltip('show')
.tooltip('hide')
Скрывает всплывающую подсказку элемента. Возврат к вызывающей стороне до того, как всплывающая подсказка была фактически скрыта (т.е. до того, как произойдет событие hidden.bs.tooltip
). Это считается “ручным” запуском всплывающей подсказки.
$('#element').tooltip('hide')
.tooltip('toggle')
Переключает всплывающую подсказку элемента. Возврат к вызывающей стороне до того, как всплывающая подсказка была фактически показана или скрыта (то есть до того, как произойдет событие shown.bs.tooltip
или hidden.bs.tooltip
). Это считается “ручным” запуском всплывающей подсказки.
$('#element').tooltip('toggle')
.tooltip('dispose')
Скрывает и уничтожает всплывающую подсказку элемента. Всплывающие подсказки, использующие делегирование (которые создаются с использованием [параметр selector
] (#параметры)), не могут быть уничтожены индивидуально для дочерних элементов триггера.
$('#element').tooltip('dispose')
.tooltip('enable')
Дает возможность отображения всплывающей подсказки элемента. Подсказки включены по умолчанию.
$('#element').tooltip('enable')
.tooltip('disable')
Удаляет возможность отображения всплывающей подсказки элемента. Всплывающая подсказка будет отображаться, только если она будет повторно включена.
$('#element').tooltip('disable')
.tooltip('toggleEnabled')
Переключает возможность отображения или скрытия всплывающей подсказки элемента.
$('#element').tooltip('toggleEnabled')
.tooltip('update')
Обновляет положение всплывающей подсказки элемента.
$('#element').tooltip('update')
События
Тип события | Описание |
---|---|
show.bs.tooltip | Это событие запускается немедленно при вызове метода экземпляра show . |
shown.bs.tooltip | Это событие запускается, когда всплывающая подсказка становится видимой для пользователя (ожидает завершения переходов CSS). |
hide.bs.tooltip | Это событие запускается сразу после вызова метода экземпляра hide . |
hidden.bs.tooltip | Это событие запускается, когда всплывающая подсказка перестала быть скрытой от пользователя (будет ждать завершения переходов CSS). |
inserted.bs.tooltip | Это событие запускается после события show.bs.tooltip , когда шаблон всплывающей подсказки был добавлен в DOM. |
$('#myTooltip').on('hidden.bs.tooltip', function () {
// сделайте что-нибудь...
})