Tippy.js предоставляет гибкий механизм создания всплывающих подсказок, который позволяет конфигурировать поведение тултипов напрямую через HTML-атрибуты. Такой подход называют конфигурацией на основе данных (data attributes). Он особенно удобен для проектов, где требуется быстро подключать тултипы к множеству элементов без необходимости писать отдельный JavaScript-код для каждого из них.
data-tippy-contentГлавный атрибут для конфигурации контента тултипа —
data-tippy-content. Его значение автоматически передается в
Tippy.js как текст подсказки.
<button data-tippy-content="Сохранить изменения">Сохранить</button>
Вызов Tippy.js:
tippy('[data-tippy-content]');
В этом примере все элементы с атрибутом
data-tippy-content получают тултип с указанным текстом.
Такой способ позволяет управлять контентом полностью через разметку, без
необходимости ручного создания экземпляров Tippy.
Tippy.js поддерживает специальные data-атрибуты для настройки поведения тултипа:
| Атрибут | Значение | Описание |
|---|---|---|
data-tippy-placement |
top, bottom, left,
right |
Позиция тултипа относительно элемента |
data-tippy-arrow |
true / false |
Отображение стрелки |
data-tippy-theme |
строка | Применение темы к тултипу |
data-tippy-animation |
shift-away, fade, scale |
Анимация появления |
data-tippy-delay |
число или массив [show, hide] |
Задержка показа и скрытия тултипа в миллисекундах |
Пример:
<button
data-tippy-content="Удалить элемент"
data-tippy-placement="right"
data-tippy-arrow="true"
data-tippy-theme="light"
data-tippy-delay="[100, 300]"
>
Удалить
</button>
Инициализация:
tippy('[data-tippy-content]');
Все атрибуты автоматически конвертируются Tippy.js в соответствующие опции тултипа.
Для более сложных сценариев можно использовать кастомные
атрибуты и функцию tippy() с обработчиком
getAttribute.
Пример динамической конфигурации:
<button
data-tooltip="Динамический контент"
data-tooltip-theme="dark"
data-tooltip-delay="200"
>
Динамика
</button>
tippy('[data-tooltip]', {
content(reference) {
return reference.getAttribute('data-tooltip');
},
theme(reference) {
return reference.getAttribute('data-tooltip-theme') || 'default';
},
delay(reference) {
const delay = reference.getAttribute('data-tooltip-delay');
return delay ? parseInt(delay) : 0;
}
});
Такой подход позволяет полностью управлять поведением тултипов через HTML, не дублируя JavaScript для каждого элемента.
Через data-tippy-content можно передавать не только
текст, но и HTML-контент, если включить опцию
allowHTML.
<button data-tippy-content="<strong>Важная подсказка!</strong>">Наведи</button>
tippy('[data-tippy-content]', {
allowHTML: true,
});
Tippy.js корректно отрисует HTML внутри тултипа, сохраняя все атрибуты безопасности и предотвращая XSS через встроенную защиту.
С помощью метода .setContent() можно изменять содержимое
тултипа, даже если он был инициализирован через data-атрибут:
const btn = document.querySelector('button[data-tippy-content]');
const tipInstance = tippy(btn)[0];
tipInstance.setContent('Обновлённый контент');
Таким образом, комбинация data-атрибутов и API Tippy.js обеспечивает гибкость и удобство при работе с динамическими интерфейсами.
data-tippy-content — основной контент тултипа.data-tippy-* — стандартные опции для управления
поведением и стилем.allowHTML и методами API даёт полный
контроль над содержимым и анимацией.Использование конфигурации на основе данных упрощает масштабирование интерфейса и минимизирует дублирование кода при создании множества одинаковых или схожих тултипов.