Библиотека Tippy.js предоставляет мощный и гибкий инструмент для создания всплывающих подсказок, которые поддерживают встроенные анимации. Анимации отвечают за визуальную динамику появления и исчезновения подсказок, делая интерфейс более плавным и приятным для пользователя. Рассмотрим механизм работы встроенных анимаций и способы их настройки.
Tippy.js включает несколько предустановленных анимаций, каждая из которых определяет стиль появления и исчезновения всплывающего элемента. Основные типы:
fade Наиболее универсальная анимация, которая изменяет прозрачность подсказки от 0 до 1 при появлении и наоборот при скрытии. Используется для плавного исчезновения элементов без смещения.
scale Комбинация изменения прозрачности и масштаба. Подсказка постепенно увеличивается от миниатюрного состояния (scale 0.9) до нормального размера (scale 1). Создает эффект «вырастания» подсказки.
shift-toward Анимация смещения, где подсказка появляется с небольшим смещением в сторону целевого элемента. Обеспечивает визуальное направление движения и помогает подчеркнуть связь с элементом.
shift-away Противоположная предыдущей анимация: подсказка смещается от целевого элемента, создавая эффект «выскальзывания» при закрытии.
scale-extreme Более резкий вариант анимации масштабирования с большей динамикой. Полезна для интерактивных элементов, где требуется заметное появление подсказки.
Каждая из этих анимаций может быть дополнительно настроена через параметры библиотеки, что позволяет регулировать скорость, задержку и стиль появления.
Для применения анимации используется параметр animation
при инициализации Tippy:
tippy('#button', {
content: 'Пример подсказки',
animation: 'scale', // встроенная анимация
duration: [300, 200] // продолжительность [появления, скрытия] в миллисекундах
});
fade, scale, shift-toward и
др.).Tippy.js поддерживает кастомизацию встроенных анимаций через CSS переменные и пользовательские стили:
tippy('#button', {
content: 'Кастомная анимация',
animation: 'shift-toward',
duration: 400,
onShow(instance) {
instance.popper.style.transform += ' rotateZ(5deg)';
}
});
Встроенные анимации можно комбинировать с пользовательскими CSS-классами для создания уникальных эффектов. Пример с применением CSS-класса:
.custom-tippy-animation {
transition: transform 0.4s ease, opacity 0.4s ease;
}
.custom-tippy-animation[data-state='visible'] {
transform: scale(1.1);
opacity: 1;
}
.custom-tippy-animation[data-state='hidden'] {
transform: scale(0.9);
opacity: 0;
}
tippy('#button', {
content: 'Комбинированная анимация',
animation: 'fade',
duration: 300,
popperClass: 'custom-tippy-animation'
});
Tippy.js предоставляет возможность более тонкой настройки через параметры:
tippy('#button', {
content: 'Подсказка с задержкой',
delay: [500, 100] // [появление, скрытие]
});
ease, ease-in-out, linear),
который можно задать через CSS:.tippy-box {
transition-timing-function: ease-in-out;
}
Tippy.js позволяет менять анимацию уже после инициализации:
const tip = tippy('#button', { content: 'Смена анимации', animation: 'fade' });
// через некоторое время меняем анимацию
tip.setProps({ animation: 'scale' });
Это особенно полезно для интерфейсов с изменяющимися условиями отображения подсказок.
Встроенные анимации Tippy.js обеспечивают гибкую и настраиваемую динамику всплывающих подсказок, позволяя сочетать визуальные эффекты с интерактивностью. Грамотное использование анимаций повышает удобство интерфейса и делает элементы более живыми, сохраняя при этом легкость и производительность.