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

Framer Motion问题:已添加key但元素退出时仍在屏幕中心短暂闪烁

解决DOM元素退出动画闪烁偏移的问题

针对你遇到的进入动画正常、退出时元素短暂偏移闪烁的问题,核心原因是退出动画执行时元素过早脱离文档流引发布局重排,以下是具体的修复方案:

  • 保持退出动画期间的布局占位
    不要在退出动画初始阶段就设置display: none,改用opacity、height、padding等属性的过渡实现视觉隐藏+平滑收缩,避免布局突然塌陷:

    /* 修正后的退出动画类 */
    .fade-exit {
      opacity: 1;
      height: auto;
      padding: 1rem;
      transition: all 0.3s ease;
      will-change: opacity, height; /* 提前告知浏览器准备动画 */
    }
    
    .fade-exit-active {
      opacity: 0;
      height: 0;
      padding: 0 1rem;
      overflow: hidden;
    }
    
  • 匹配动画时长与组件卸载时机
    如果你用了CSSTransition这类动画库,务必让timeout值和CSS过渡时长完全一致,确保动画执行完毕后再移除DOM元素:

    <CSSTransition
      key={item.id} // 确保key是元素唯一标识,别用index
      timeout={300} // 和CSS里的0.3s对应
      classNames="fade"
      unmountOnExit
    >
      {/* 你的列表项元素 */}
    </CSSTransition>
    
  • 排查key的有效性
    确认你的key是每个元素独有的稳定标识(比如数据的id字段),绝对不要用数组索引当key——索引会随列表变化而改变,导致组件复用逻辑混乱,间接引发动画异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:32:03