В Tippy.js управление временем отображения и скрытия
подсказок осуществляется с помощью параметров delay и
duration. Эти параметры позволяют настроить UX так, чтобы
тултипы появлялись не мгновенно, а с небольшой задержкой, или скрывались
постепенно, создавая плавный визуальный эффект.
delay — управляет задержкой перед
показом (show) и перед скрытием (hide)
тултипа.duration — задаёт время анимации при
появлении и исчезновении подсказки.Синтаксис для настройки задержек:
tippy('#button', {
content: 'Пример подсказки',
delay: [500, 200], // [задержка перед show, задержка перед hide] в миллисекундах
duration: [300, 150] // [время анимации появления, время анимации скрытия]
});
В данном примере:
Если параметр delay задан одним числом, оно применяется
одинаково к show и hide:
tippy('#button', {
content: 'Одинаковая задержка',
delay: 400
});
Задержки можно изменять динамически через функции. Это полезно, когда время отображения подсказки зависит от состояния интерфейса или типа контента.
tippy('#button', {
content: 'Динамическая задержка',
delay: (instance, event) => {
if (event.type === 'mouseenter') {
return 600; // задержка перед show
}
return 100; // задержка перед hide
}
});
Функция получает два аргумента:
instance — объект тултипа.event — DOM-событие, вызвавшее показ
или скрытие подсказки.Возвращаемое значение функции определяет задержку в миллисекундах.
delay и durationdelay отвечает за задержку
перед запуском анимации. Например, если
delay: 500, тултип не начнет появляться сразу.duration управляет скоростью
самой анимации. Например, duration: 300 означает,
что тултип появится или скроется за 300 мс.Можно комбинировать оба параметра для создания максимально комфортного UX. Например:
tippy('#button', {
content: 'Комбинированная настройка',
delay: [400, 100],
duration: [500, 200]
});
Здесь тултип:
Если тултип интерактивный (interactive: true),
стандартное поведение задержек может мешать: пользователь может случайно
навести мышь на подсказку и она сразу скрывается.
tippy('#button', {
content: 'Интерактивная подсказка',
interactive: true,
delay: [300, 300],
duration: 250
});
Для интерактивных элементов рекомендуется устанавливать одинаковую задержку для show и hide, чтобы пользователь успевал навести курсор на тултип без его мгновенного исчезновения.
Tippy.js позволяет задавать несколько триггеров
(trigger) — mouseenter, focus,
click. Задержки будут применяться для каждого из них
одинаково, если не указана динамическая функция.
tippy('#input', {
content: 'Подсказка для input',
trigger: 'mouseenter focus',
delay: [200, 150]
});
Тултип появится через 200 мс при наведении и через 200 мс при фокусе, а скрытие произойдёт через 150 мс после ухода мыши или потери фокуса.
Tippy.js позволяет задавать глобальные параметры через
tippy.setDefaultProps. Это удобно, если все тултипы в
проекте должны иметь одинаковую задержку и длительность анимации:
tippy.setDefaultProps({
delay: [300, 100],
duration: [400, 200]
});
После этого все новые тултипы будут использовать эти значения по умолчанию, но их можно переопределить для конкретного элемента.
[show, hide] даёт полный
контроль над поведением.delay позволяют адаптировать UX
под контекст.tippy.setDefaultProps
экономят время при работе с большим количеством элементов.Правильная комбинация delay и duration
создаёт ощущение «живого» интерфейса, делая взаимодействие с подсказками
плавным и предсказуемым.