Параметры триггеров в Tippy.js определяют, при каких событиях появляется и скрывается всплывающая подсказка (tooltip). Это один из ключевых аспектов управления поведением интерфейса, поскольку именно триггеры связывают пользовательские действия с визуальной реакцией.
По умолчанию используется триггер:
trigger: 'mouseenter focus'
Это означает:
mouseenter — появление при наведении курсораfocus — появление при получении фокуса (например, через
клавиатуру)triggerПозволяет задать список событий, при которых tooltip будет активироваться.
tippy(element, {
trigger: 'click'
});
Поддерживаемые значения:
mouseentermouseleavefocusblurclickmanualМожно указать несколько событий через пробел:
trigger: 'mouseenter click'
В этом случае подсказка будет появляться как при наведении, так и при клике.
mouseenter /
mouseleaveКлассическая модель hover:
trigger: 'mouseenter'
Используется чаще всего для десктопных интерфейсов.
focus / blurАктуально для accessibility и работы с клавиатурой:
trigger: 'focus'
clicktrigger: 'click'
Используется для интерактивных подсказок, меню, popover-элементов.
manualПолностью отключает автоматическое управление:
trigger: 'manual'
Контроль осуществляется программно:
const instance = tippy(element, {
trigger: 'manual'
});
instance.show();
instance.hide();
Подходит для сложной логики отображения.
hideOnClickОпределяет, будет ли tooltip скрываться при клике.
hideOnClick: true
Варианты значений:
true — скрывать при любом кликеfalse — не скрывать'toggle' — переключать состояниеПример:
tippy(element, {
trigger: 'click',
hideOnClick: 'toggle'
});
delayПозволяет задать задержку перед показом и скрытием.
delay: 200
Или раздельно:
delay: [100, 300]
Где:
Это помогает избежать “дёргания” интерфейса при случайных наведениях.
touchОпределяет поведение на сенсорных устройствах.
touch: true
Варианты:
true — использовать touch-событияfalse — игнорировать'hold' — показывать при долгом нажатииПример:
tippy(element, {
touch: 'hold'
});
triggerTargetПозволяет задать другой элемент, который будет инициировать событие.
tippy(targetElement, {
triggerTarget: buttonElement
});
Это полезно, когда:
showOnCreateАвтоматически показывает tooltip сразу после создания.
showOnCreate: true
Используется в сценариях:
interactiveВлияет на взаимодействие с самим tooltip:
interactive: true
Если включено:
Часто используется вместе с click:
tippy(element, {
trigger: 'click',
interactive: true
});
interactiveBorderДобавляет “зону безопасности” вокруг tooltip:
interactiveBorder: 10
Позволяет курсору слегка выходить за границы без скрытия.
interactiveDebounceДобавляет задержку перед скрытием интерактивного tooltip:
interactiveDebounce: 75
Полезно для плавного UX при перемещении курсора.
onTriggerКолбэк, вызываемый при срабатывании триггера:
onTrigger(instance, event) {
console.log(event.type);
}
Позволяет:
onUntriggerВызывается при отмене триггера:
onUntrigger(instance, event) {
console.log('Скрытие');
}
tippy('.tooltip', {
trigger: 'mouseenter focus',
delay: [100, 100]
});
tippy('.button', {
trigger: 'click',
interactive: true,
hideOnClick: true
});
const tip = tippy('.custom', {
trigger: 'manual'
});
document.querySelector('#open').oncl ick = () => tip.show();
document.querySelector('#close').oncl ick = () => tip.hide();
tippy('.mobile', {
touch: 'hold',
delay: [500, 0]
});
Триггеры редко используются изолированно. На практике комбинируются:
triggerdelayinteractivehideOnClicktouchПример:
tippy('.complex', {
trigger: 'mouseenter click',
interactive: true,
delay: [200, 150],
hideOnClick: 'toggle'
});
click важно учитывать всплытие
событий (event bubbling)mouseenter не срабатывает на тач-устройствах без
дополнительной настройкиfocus критически важен для доступности (ARIA)manual требует полного контроля со стороны
разработчикаdelay уменьшает случайные
срабатыванияinteractive делает tooltip полноценным
UI-элементомtouch: 'hold' предотвращает конфликт с обычным
тапомfocus и mouseenter улучшает
доступностьmouseenter без
focusinteractive при кликовых tooltipТриггеры напрямую влияют на:
onShowonHideonMountonDestroyПравильная настройка триггеров позволяет точно контролировать весь жизненный цикл tooltip.
Tippy.js использует стандартные DOM-события, поэтому можно вмешиваться:
element.addEventListener('click', (e) => {
// кастомная логика
});
И комбинировать с:
trigger: 'manual'
tippy(element, {
trigger: 'mouseenter focus',
hideOnClick: true,
delay: [100, 200],
touch: true,
interactive: false,
onTrigger(instance, event) {},
onUntrigger(instance, event) {}
});
Такая конфигурация покрывает большинство сценариев и может быть адаптирована под конкретные задачи интерфейса.