В Tippy.js управление временем анимации и отображения
всплывающих подсказок осуществляется с помощью параметров
длительности (duration). Эти параметры определяют скорость
появления и скрытия тултипа и могут быть настроены как единым значением,
так и отдельно для появления и скрытия.
durationПараметр duration может быть задан в двух формах:
tippy('#button', {
content: 'Пример подсказки',
duration: 500 // 500 мс на появление и скрытие
});
show) и скрытия (hide):tippy('#button', {
content: 'Пример подсказки',
duration: { show: 300, hide: 600 } // 300 мс на появление, 600 мс на скрытие
});
Важно: Tippy.js использует миллисекунды. Если значение не указано, применяется стандартная длительность анимации по умолчанию (обычно 350 мс).
Параметр duration тесно связан с параметром
animation, который задает тип анимации:
tippy('#button', {
content: 'Пример подсказки',
animation: 'scale', // доступные значения: 'fade', 'scale', 'shift-away', 'shift-toward'
duration: { show: 200, hide: 500 }
});
Можно изменять длительность на лету через метод
setProps:
const tip = tippy('#button', {
content: 'Динамическая подсказка'
});
tip.setProps({ duration: { show: 100, hide: 400 } });
Это полезно, если нужно создавать подсказки с разной анимацией для разных условий.
delayduration часто комбинируется с delay,
который задаёт время до появления и скрытия тултипа. Различие:
Пример использования вместе:
tippy('#button', {
content: 'Комбинация delay и duration',
delay: [500, 200], // 500 мс перед показом, 200 мс перед скрытием
duration: { show: 400, hide: 300 } // анимация появления и скрытия
});
Можно использовать функцию для динамического определения длительности в зависимости от состояния:
tippy('#button', {
content: 'Адаптивная длительность',
duration: (instance) => {
if (instance.state.isVisible) {
return 300; // при скрытии быстрее
} else {
return 700; // при показе медленнее
}
}
});
Функция принимает объект instance с текущим состоянием
тултипа (isVisible, reference и т.д.) и
возвращает число или объект { show, hide }.
Если используются кастомные анимации через CSS, параметр
duration должен соответствовать длительности анимации в
CSS:
@keyframes customFade {
from { opacity: 0; }
to { opacity: 1; }
}
.tippy-box[data-animation~='custom'] {
animation: customFade 0.6s forwards;
}
tippy('#button', {
content: 'Кастомная анимация',
animation: 'custom',
duration: 600 // совпадает с CSS
});
Несоответствие между duration и CSS-анимацией может
привести к обрыву анимации или некорректному скрытию тултипа.
duration задаётся числом или объектом
{ show, hide }.animation и
delay.show и hide позволяет
создавать более сложные визуальные эффекты.Эти механизмы делают управление анимацией Tippy.js гибким и позволяют создавать плавные и адаптивные всплывающие подсказки с разной скоростью появления и исчезновения.