Tippy.js — это современная библиотека для создания всплывающих
подсказок (tooltip) в веб-приложениях на JavaScript. Она построена на
базе Popper.js и обеспечивает гибкое позиционирование, динамическое
обновление содержимого и широкие возможности кастомизации. В отличие от
нативного title элемента HTML, Tippy.js позволяет создавать
интерактивные, анимированные и программно управляемые подсказки.
Ключевой концепт Tippy.js — это инициализация на элементе DOM с передачей параметров конфигурации. Простейший пример:
tippy('#myButton', {
content: 'Это подсказка',
placement: 'right',
});
Здесь #myButton — селектор элемента,
content — текст подсказки, placement —
положение относительно элемента (top, bottom,
left, right).
title)title.onShow, onHide, onMount.Пример интерактивного тултипа с кнопкой:
tippy('#interactiveButton', {
content: '<button oncl ick="alert(\'Клик!\')">Нажми меня</button>',
allowHTML: true,
interactive: true,
});
Tippy.js предоставляет набор параметров для управления появлением и скрытием подсказок:
mouseenter, click, focus,
manual).[show, hide].[show, hide].top, bottom-start,
right-end и т.д.).Пример с задержкой и кастомным trigger:
tippy('#delayedButton', {
content: 'Появляется через 500ms',
delay: [500, 100],
trigger: 'mouseenter focus',
});
Tippy.js поддерживает программное создание, изменение и уничтожение тултипов.
Создание программно:
const instance = tippy('#dynamicButton', {
content: 'Динамическая подсказка',
});
Изменение контента:
instance.setContent('Новый текст подсказки');
Показ и скрытие:
instance.show();
instance.hide();
Удаление тултипа:
instance.destroy();
Tippy.js использует CSS-анимации, которые можно кастомизировать через
класс animation:
tippy('#animatedButton', {
content: 'С анимацией',
animation: 'scale',
theme: 'light-border',
});
Стандартные анимации:
fadescaleshift-towardperspectiveС помощью кастомной темы можно полностью изменить внешний вид тултипа:
tippy('#customButton', {
content: 'Кастомная тема',
theme: 'my-theme',
});
В CSS:
.tippy-box.my-theme {
background-color: #333;
color: #fff;
border-radius: 8px;
font-size: 14px;
padding: 8px 12px;
}
Применение Tippy.js особенно полезно для:
Tippy.js использует Popper.js под капотом для точного позиционирования. Это дает:
boundary).offset:tippy('#offsetButton', {
content: 'Сдвиг вниз на 10px',
placement: 'bottom',
offset: [0, 10],
});
Можно создавать тултипы для множества элементов с одинаковой конфигурацией:
tippy('.hasTooltip', {
content: 'Общий контент',
});
Для динамически добавляемых элементов используют делегирование:
tippy.delegate(document.body, {
target: '.dynamicTooltip',
content: 'Динамический тултип',
});
Tippy.js поддерживает обработку жизненного цикла тултипа:
onShow(instance) — перед показом.onShown(instance) — после появления.onHide(instance) — перед скрытием.onHidden(instance) — после скрытия.onMount(instance) — после монтирования DOM.Пример:
tippy('#eventButton', {
content: 'События',
onShow(instance) {
console.log('Показываем тултип');
},
onHide(instance) {
console.log('Скрываем тултип');
},
});
Эта подробная структура демонстрирует, как Tippy.js расширяет стандартные возможности HTML-подсказок, предоставляя полный контроль над визуальной частью, поведением и интерактивностью.