hover动画不触发主因是类名组合或触发时机错误;须同时添加animate__animated与具体动画类(如animate__bounce),推荐用JS动态增删类,并确保引入animate.css完整CDN、元素可交互且类名大小写正确。
hover 动画不触发,多数情况不是 animate.css 本身的问题,而是类名组合或触发时机没写对。
animate.css 的动画类(如 animate__bounce)默认是“一次性执行”的,只加在元素上不会自动播放。必须配合 animate__animated 基础类,且需在 hover 状态下同时存在这两个类。
.box:hover { animation-name: bounce; } 或 .box:hover { class="animate__bounce" }
.box:hover { animation: animate__bounce 0.5s ease; }(不推荐,绕过 animate.css 规范).box:hover { animation: none; }
.box:hover.animate__animated.animate__bounce { animation: animate__bounce 0.5s ease; }CSS 的 :hover 无法直接“添加多个类”,所以最稳妥的方式是用 JS 控制类的增删,确保 animate__animated 和具体动画类(如 animate__swing)同时存在且仅在悬停时生效。
悬停我
const box = document.querySelector('.box');
box.addEventListener('mouseenter', () => {
box.classList.add('animate__animated', 'animate__swing');
});
box.addEventListener('mouseleave', () => {
box.classList.remove('animate_
_animated', 'animate__swing');
});新版 animate.css(v4+)要求显式引入基础样式,并启用 CSS 自定义属性支持。
display: none、有宽高、不是被父级 pointer-events: none 拦截animate_bounce 或 animate-bounce
如果快速进出 hover 区域,动画可能因未结束就被中断,视觉上像“没触发”。可通过重置动画状态解决:
box.classList.replace('animate__animated', 'animate__animated');(触发重绘)animation-fill-mode: backwards; 配合 JS 控制,但更简单的是加个防抖延时移除(如 100ms 后再 remove)animation-duration 和 animation-timing-function 显式声明,避免依赖默认值