Tippy.js — это современная библиотека для создания всплывающих подсказок (tooltips) на элементах веб-страницы. Она построена поверх Popper.js и предоставляет богатый API для настройки поведения и внешнего вида подсказок. Для подключения используется либо npm-пакет, либо CDN:
import tippy from 'tippy.js';
import 'tippy.js/dist/tippy.css';
Инициализация подсказки происходит вызовом функции
tippy() с селектором или HTML-элементом:
tippy('.button', {
content: 'Подсказка для кнопки',
});
Ключевые моменты инициализации:
content — основной текст или HTML содержимое
подсказки.Tippy.js поддерживает множество триггеров: mouseenter,
focus, click, manual. Для
динамического поведения триггер задается через свойство
trigger:
tippy('.input-field', {
content: 'Введите данные',
trigger: 'focus',
placement: 'right',
});
Особенности управления поведением:
placement — определяет позицию подсказки относительно
элемента (top, bottom, left,
right и их вариации).delay — задержка перед показом или скрытием подсказки,
может задаваться как одно число или объект
{ show: 100, hide: 200 }.interactive — позволяет подсказке оставаться видимой
при наведении на неё самой.Подсказки могут содержать HTML или динамически генерируемый контент.
Используется свойство allowHTML и функция
content:
tippy('.dynamic', {
allowHTML: true,
content: (reference) => `<strong>${reference.dataset.info}</strong>`,
});
Важные моменты:
content выполняется при каждом показе
подсказки, что удобно для обновления информации в реальном времени.Tippy.js предоставляет методы управления подсказками через API экземпляров:
const instance = tippy('.button', { content: 'Пример' })[0];
instance.show(); // Показ подсказки
instance.hide(); // Скрытие подсказки
instance.setContent('Новый контент'); // Обновление содержимого
instance.destroy(); // Удаление подсказки и очистка ресурсов
Рекомендации при программном управлении:
destroy() для подсказок, которые больше не
нужны.Для анализа производительности Tippy.js можно использовать несколько подходов:
const instance = tippy('.button', {
content: 'Подсказка',
onShow(instance) {
console.time('showTooltip');
},
onShown(instance) {
console.timeEnd('showTooltip');
},
});
onShow, onShown, onHide,
onHidden — события жизненного цикла подсказки.console.time позволяет измерять время выполнения
отображения, что важно при профилировании на больших страницах.appendTo: document.body для улучшения
производительности при сложной верстке.delegate.tippy.delegate('body', {
target: '.tooltip',
content: 'Подсказка через делегирование',
});
Popper-методы через
instance.popperInstance для анализа и настройки
смещения.z-index.performance: true в новых версиях позволяет
включить оптимизированный рендеринг, минимизируя лишние пересчеты
стилей.tippy('.button', {
content: 'С анимацией',
animation: 'scale',
theme: 'light-border',
});
animation поддерживает fade,
scale, shift-toward.theme позволяет создавать собственные стили через CSS и
подключать к подсказкам.popperOptions для контроля
flip и preventOverflow.tippy('.button', {
content: 'Адаптивно',
popperOptions: {
modifiers: [
{ name: 'flip', options: { fallbackPlacements: ['top', 'bottom'] } },
],
},
});
console.time и
отслеживать медленные участки.instance.destroy() для
временных подсказок.Эти подходы позволяют поддерживать высокую производительность при масштабных приложениях, где всплывающие подсказки являются интерактивной частью интерфейса.