You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Framer Motion如何让hover结束动画与hover状态保持相同过渡时长

你不需要在onHoverEnd中手动触发额外动画,你遇到的问题是仅为hover激活状态定义了过渡时长,未对默认状态的切换配置过渡规则,因此鼠标移出时元素会直接复位无动画。

Framer Motion的whileHover手势会自动处理状态切换的过渡逻辑,你只需补充全局或初始状态的过渡配置即可,有两种常用实现方案:

方案1:配置组件全局过渡(更简洁)

直接在motion.div组件上添加transition属性,所有状态切换都会复用该配置:

import "./styles.css";
import { motion } from "framer-motion";

const variants = {
  hover: { scale: 2 }
};
export default function App() {
  return (
    <div className="App">
      <motion.div
        variants={variants}
        whileHover="hover"
        className="card"
        transition={{ duration: 2 }}
      ></motion.div>
    </div>
  );
}

方案2:显式定义初始状态变体

在variants中补充初始状态的过渡配置,适合需要区分hover进入和退出动画参数的场景:

import "./styles.css";
import { motion } from "framer-motion";

const variants = {
  initial: { scale: 1, transition: { duration: 2 } },
  hover: { scale: 2, transition: { duration: 2 } }
};
export default function App() {
  return (
    <div className="App">
      <motion.div
        initial="initial"
        variants={variants}
        whileHover="hover"
        className="card"
      ></motion.div>
    </div>
  );
}

内容的提问来源于stack exchange,提问作者Imanpal Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 15:06:06