Tippy.js — это мощная библиотека для создания всплывающих подсказок и
тултипов на элементах веб-страницы. Одним из наиболее часто используемых
событий является клик мышью. В Tippy.js это
настраивается с помощью опции trigger.
tippy('#button', {
content: 'Пример подсказки при клике',
trigger: 'click',
});
В данном примере подсказка отображается только при клике на элемент с
идентификатором button. Значение trigger может
быть строкой с несколькими событиями, разделёнными пробелами, например:
'mouseenter click'.
Tippy.js использует Popper.js для позиционирования. Можно задавать позицию относительно элемента:
tippy('#button', {
content: 'Содержимое тултипа',
trigger: 'click',
placement: 'right', // top, bottom, left, right, auto
});
Опция placement определяет, где появится подсказка
относительно элемента. Значение auto позволяет библиотеке
выбирать оптимальное положение в зависимости от доступного
пространства.
Для более плавного UX можно настроить задержку:
tippy('#button', {
content: 'Тултип с задержкой',
trigger: 'click',
delay: [100, 200], // [появление, скрытие] в миллисекундах
});
Эта настройка позволяет избежать мгновенного исчезновения подсказки при случайных кликах.
Tippy.js поддерживает встроенные анимации, которые делают взаимодействие более визуально приятным:
tippy('#button', {
content: 'Тултип с анимацией',
trigger: 'click',
animation: 'scale', // scale, fade, shift-away, shift-toward
duration: [200, 300], // [время появления, время скрытия] в мс
});
Tippy.js предоставляет методы для программного контроля:
const instance = tippy('#button', {
content: 'Контроль через API',
trigger: 'click',
});
// Открытие вручную
instance.show();
// Закрытие вручную
instance.hide();
// Переключение состояния
instance.toggle();
Это особенно полезно, когда клик должен не просто показывать подсказку, но и выполнять дополнительные действия на странице.
hideOnClickОпция hideOnClick управляет поведением при повторном
клике:
tippy('#button', {
content: 'Тултип закрывается при клике',
trigger: 'click',
hideOnClick: true, // true, false или 'toggle'
});
true — подсказка закрывается при клике на элемент.false — подсказка остаётся открытой после клика.'toggle' — переключает состояние подсказки при каждом
клике.Чтобы тултип закрывался при клике вне элемента, используется
interactive:
tippy('#button', {
content: 'Тултип с интерактивной областью',
trigger: 'click',
interactive: true,
});
Это позволяет взаимодействовать с содержимым тултипа (кнопки, ссылки) без мгновенного закрытия.
Если элементы создаются динамически, можно использовать делегирование через контейнер:
tippy.delegate(document.body, {
target: '.dynamic-button',
content: 'Динамический тултип',
trigger: 'click',
});
Все элементы с классом .dynamic-button будут
автоматически получать подсказку при клике, даже если они добавлены
после инициализации скрипта.
Tippy.js позволяет использовать не только текст, но и полноценный HTML:
tippy('#button', {
content: '<strong>Жирный текст</strong><br>Дополнительная информация',
allowHTML: true,
trigger: 'click',
});
При этом allowHTML: true обязательна, иначе HTML будет
экранирован и отображён как обычный текст.
Можно комбинировать события для более гибкого UX:
tippy('#button', {
content: 'Появление при клике или наведении',
trigger: 'click mouseenter',
});
При наличии нескольких тултипов на странице можно управлять ими централизованно:
const buttons = document.querySelectorAll('.button');
buttons.forEach(btn => {
tippy(btn, {
content: `Тултип для ${btn.textContent}`,
trigger: 'click',
hideOnClick: 'toggle',
});
});
Это упрощает поддержку и согласованность поведения на больших интерфейсах.
Эти возможности делают Tippy.js гибким инструментом для реализации
кликабельных подсказок любого уровня сложности. Конфигурация через
trigger, API-методы, интерактивность и делегирование
позволяют создавать как простые всплывающие подсказки, так и полноценные
интерактивные интерфейсы с динамическим контентом.