React中Framer Motion whileHover内animate不生效问题求助
解决Framer Motion whileHover中x动画不生效的问题
嘿,我一眼就看出问题所在啦!你在whileHover的配置里多套了一层animate对象——这完全没必要,而且正是导致x动画不生效的原因!
Framer Motion的whileHover属性本身就直接接受你想要触发的动画属性,嵌套animate的话框架根本识别不到这部分配置,所以你的x: 500完全没起作用,而scale因为是直接写在顶层才正常生效了。
修正后的代码
import { motion } from "framer-motion"; <motion.div className="heart-overlay" whileHover={{ x: 500, // 直接把x属性放在顶层配置里 scale: 1.2, transition: { ease: "easeOut", duration: 2 } }} > <div className="heart-top"> <Img className="heart-default" src={heart_default_top} /> </div> <div className="heart-bot"> <Img className="heart-default" src={heart_default_bot} /> </div> </motion.div>
补充说明
像whileHover、whileTap这类交互触发的动画属性,都是直接传入你要修改的样式属性(比如x、y、scale、opacity等)和过渡配置就行,不需要额外嵌套animate。只有当你使用animate prop定义初始/主动画,或者在variants里组织动画集合时,才会用到animate相关的嵌套结构哦。
内容的提问来源于stack exchange,提问作者azriebakri
相关产品推荐
相关产品推荐

