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

如何在Framer Motion中让变体动画按设置反向执行?

解决Framer Motion whileHover反向动画过渡不一致的问题

要让鼠标移出时的反向动画和正向使用相同的过渡参数,直接在**变体(variants)**里统一配置过渡规则即可,不用额外处理反向逻辑,Framer Motion会自动复用对应过渡设置。

方法1:在变体中为目标状态指定transition

把过渡参数定义在hover状态的变体里,触发和退出hover时都会遵循这套过渡规则:

const boxVariants = {
  default: { scale: 1, opacity: 1 },
  hover: { 
    scale: 1.2, 
    opacity: 0.8,
    // 在此定义过渡参数,反向动画自动复用该配置
    transition: { duration: 0.5, ease: "easeOut" }
  }
};

// 组件调用示例
<motion.div
  variants={boxVariants}
  initial="default"
  whileHover="hover"
/>

方法2:在motion组件上全局设置transition

如果希望所有状态切换(包括hover的反向)都用同一套过渡,直接在motion组件上设置transition属性即可:

<motion.div
  variants={boxVariants}
  initial="default"
  whileHover="hover"
  transition={{ duration: 0.5, ease: "easeOut" }}
/>

问题根源

默认情况下,退出whileHover状态时,Framer Motion会使用内置的默认过渡参数(比如更短的时长),而非hover变体里的自定义设置。把过渡规则绑定到变体状态或组件全局后,反向动画会继承对应配置,保证前后动画效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 07:08:11