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

Next.js中Framer-Motion动画开发模式正常但构建模式异常

问题解决:Next.js生产环境Framer-Motion缩放动画原点异常

问题描述

使用next dev运行时,Framer-Motion的页面缩放动画表现正常;但执行next build+next start后,页面退出动画时文本从左上角缩小,而非中心。

解决方案

1. 显式设置变换原点

给motion.div添加transformOrigin: "center"样式,强制动画以元素中心为原点:

<motion.div
  key={router.route}
  initial="pageInitial"
  animate="pageAnimate"
  exit="pageExit"
  style={{ transformOrigin: "center" }} // 新增该行
  variants={{
    pageInitial: {
      opacity: 0,
      scale: 0.9,
    },
    pageAnimate: {
      opacity: 1,
      scale: 1,
      transition: {
        duration: 0.5,
      },
    },
    pageExit: {
      opacity: 0,
      scale: 0.9,
      transition: {
        duration: 0.5,
      },
    },
  }}
>
  <Component {...pageProps} />
</motion.div>

原因:生产环境下Next.js的CSS优化可能覆盖默认transform-origin值,显式设置可确保动画原点正确。

2. 检查Layout组件样式

排查Layout组件中的容器样式,比如是否存在position: absolute、overflow: hidden或其他影响布局上下文的属性,这类设置可能导致motion元素的变换原点偏移。

3. 禁用SWC压缩(Next.js 13+)

若使用Next.js 13及以上版本,SWC代码压缩可能与Framer-Motion存在兼容性问题,可在next.config.js中禁用:

module.exports = {
  swcMinify: false,
}

4. 升级依赖版本

尝试更新framer-motion和next到最新稳定版本,版本不兼容也可能引发这类生产环境特有的动画异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 00:47:18