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

CSS定义的@keyframes在JavaScript事件监听中无法生效,请求排查

导航栏动画无效的解决方案

核心问题:动画属性拼写错误

你代码里的JavaScript部分,设置动画时把填充模式关键字拼错了——forward应该是forwards,这是CSS动画里控制动画结束后保持最后一帧状态的关键属性,少了这个s,动画执行完会立刻回到初始的透明状态,看起来就像完全没生效。

修复后的代码

JavaScript 部分

const navSlide = () => {
  const burger = document.querySelector('.burger')
  const nav = document.querySelector('.nav-links')
  const navLinks = document.querySelectorAll('.nav-links li')

  burger.addEventListener('click', () => {
    nav.classList.toggle('nav-active')

    navLinks.forEach((link, index) => {
      if (link.style.animation) {
        link.style.animation = ''
      } else {
        // 修正 forward 为 forwards
        link.style.animation = `navLinkFade 0.5s ease forwards ${index / 7 + 0.3}s`
      }
    })
  })
}
navSlide()

额外优化建议

你原来设置的延迟时间index /7 +2.5s过长,点击汉堡按钮后要等2.5秒才开始出现导航项,交互体验很差,建议改成index /7 +0.3s,这样导航项会依次快速弹出,更符合移动端导航的交互逻辑。

补充说明

  • CSS 里的@keyframes navLinkFade写法完全正确,不需要修改
  • 媒体查询里给.nav-links li设置opacity:0的初始状态没问题,动画会通过forwards把 opacity 保持为1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:45:47