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

如何让animate/whileInView先等待2秒再执行并保留动画延迟?

解决Framer Motion whileInView动画先等待2秒再执行的问题

问题原因

你之前添加全局transition没生效,是因为Framer Motion中**whileInView内部的transition配置会覆盖全局的transition设置**,所以全局的delay:2被局部的delay:1覆盖了,达不到预期的等待效果。

正确实现方法

要实现“进入视口后先等待2秒,再保留原有动画延迟”的效果,只需要把两个延迟时间合并,在whileInView的transition里设置总延迟为2+1=3秒即可:

var inats = {
  initial: { opacity: 0 },
  whileInView: {
    opacity: 1,
    transition: { delay: 3 } // 2秒等待期 + 原有1秒动画延迟
  },
  // 可选:配置视口触发规则,比如只触发一次
  viewport: { once: true }
}

更精细的控制(可选)

如果需要拆分等待逻辑(比如等待2秒后,再执行带自定义时长/缓动的动画),可以使用keyframes来实现分步动画:

var inats = {
  initial: { opacity: 0 },
  whileInView: {
    opacity: [0, 0, 1],
    transition: {
      keyframes: {
        opacity: [0, 0, 1]
      },
      duration: 0.5, // 动画本身的时长
      delay: 2, // 先等待2秒
      times: [0, 0.8, 1] // 前80%时间保持opacity:0(对应等待),最后20%完成动画
    }
  },
  viewport: { once: true }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:53:09