Анимации при наведении в Toastify строятся на комбинации CSS-переходов и событий мыши, которые применяются к DOM-элементу уведомления. Библиотека не накладывает жёстких ограничений на кастомизацию, поэтому поведение hover-эффектов полностью контролируется стилями.
Каждое уведомление создаётся как HTML-элемент с классом
.toastify, что позволяет легко управлять его состояниями
через псевдоклассы:
.toastify:hover {
/* стили при наведении */
}
Базовая логика:
:hover) применяются новые стилиtransitionДля создания плавной анимации применяется свойство
transition. Оно задаёт:
Пример базовой анимации:
.toastify {
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.toastify:hover {
transform: scale(1.05);
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.2);
}
Эффект:
Смещение используется для создания «живого» интерфейса:
.toastify {
transition: transform 0.25s ease;
}
.toastify:hover {
transform: translateY(-5px);
}
Особенности:
top или
marginЭффект затемнения или осветления:
.toastify {
transition: opacity 0.3s ease;
}
.toastify:hover {
opacity: 0.85;
}
Часто применяется для:
Позволяет выделить уведомление при взаимодействии:
.toastify {
background: linear-gradient(135deg, #4f9cff, #6ed0ff);
transition: background 0.3s ease;
}
.toastify:hover {
background: linear-gradient(135deg, #3a7bd5, #00d2ff);
}
Важно:
Создание акцента через box-shadow:
.toastify {
transition: box-shadow 0.3s ease;
}
.toastify:hover {
box-shadow: 0 0 15px rgba(79, 156, 255, 0.8);
}
Использование:
Часто используется сочетание нескольких эффектов:
.toastify {
transition: all 0.3s ease;
}
.toastify:hover {
transform: scale(1.03) translateY(-3px);
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.25);
opacity: 0.95;
}
Результат:
Изменение курсора усиливает UX:
.toastify:hover {
cursor: pointer;
}
Используется, если:
stopOnFocusToastify предоставляет параметр:
Toastify({
text: "Уведомление",
duration: 5000,
stopOnFocus: true
}).showToast();
Поведение:
Комбинация с hover-анимацией:
Можно динамически менять классы при наведении:
const toast = Toastify({
text: "Hover эффект",
duration: 5000,
onClick: function() {}
}).showToast();
setTimeout(() => {
const el = document.querySelector(".toastify");
el.addEventListener("mouseenter", () => {
el.classList.add("hovered");
});
el.addEventListener("mouseleave", () => {
el.classList.remove("hovered");
});
}, 100);
CSS:
.toastify.hovered {
transform: scale(1.05);
}
Преимущество:
Для более сложных эффектов:
@keyframes pulse {
0% {
transform: scale(1);
}
50% {
transform: scale(1.08);
}
100% {
transform: scale(1);
}
}
.toastify:hover {
animation: pulse 0.6s ease;
}
Особенности:
Рекомендуемые свойства:
transformopacityМенее эффективные:
width, heightmargin, topПричина:
Если уведомление содержит вложенные элементы:
.toastify:hover .content {
transform: scale(1.02);
}
Позволяет:
Toastify({
text: "Сообщение с анимацией",
duration: 4000,
gravity: "top",
position: "right",
className: "custom-toast"
}).showToast();
.custom-toast {
border-radius: 12px;
padding: 16px;
transition: all 0.25s ease;
}
.custom-toast:hover {
transform: translateY(-4px) scale(1.02);
box-shadow: 0 12px 30px rgba(0, 0, 0, 0.2);
}
Отсутствие transition
.toastify:hover {
transform: scale(1.1);
}
Результат — резкий скачок.
Анимация неподдерживаемых свойств
.toastify:hover {
display: none;
}
Чрезмерная анимация
Hover не работает на сенсорных экранах. Возможные решения:
:activetouchstart).toastify:active {
transform: scale(0.98);
}
Hover-анимации должны соответствовать теме:
Псевдоэлементы:
.toastify::after {
content: "";
position: absolute;
inset: 0;
opacity: 0;
transition: opacity 0.3s;
}
.toastify:hover::after {
opacity: 1;
}
Фильтры:
.toastify:hover {
filter: brightness(1.1);
}
Если Toastify уже использует анимации появления:
.toastify {
will-change: transform;
}
Позволяет:
Hover-анимация в Toastify — это:
Основная задача — создать визуальную обратную связь без перегрузки интерфейса, сохраняя скорость и читаемость уведомлений.