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

网站菜单悬停背景动画JavaScript未生效,求问题定位

问题排查与修复方案

核心问题1:JavaScript执行时机错误

你的JS代码在DOM元素未完全加载时就执行了,导致document.getElementById("menu")和getElementsByClassName("menu-item")无法获取到目标元素,事件绑定直接失效。

修复方式:
把JS代码移到HTML的</body>标签之前,或者用DOM加载完成事件包裹代码:

document.addEventListener('DOMContentLoaded', () => {
  const menu = document.getElementById("menu");

  Array.from(document.getElementsByClassName("menu-item"))
    .forEach((item, index) => {
      item.onmouseover = () => {
        menu.dataset.activeIndex = index;
      }
    });
});

核心问题2:CSS缺少背景位置过渡动画

你给#menu-background-pattern仅设置了opacity和background-size的过渡效果,但background-position的变化没有添加过渡,导致切换时没有平滑动画。

修复方式:
修改CSS中#menu-background-pattern的transition属性,补充background-position:

#menu-background-pattern {
  height: 100vh;
  width: 100vw;
  background-image: radial-gradient( rgba(255, 255, 255, 0.1) 9%, transparent 9%);
  background-position: 0% 0%;
  background-size: 12vmin 12vmin;
  position: absolute;
  left: 0px;
  top: 0px;
  z-index: 1;
  /* 补充background-position的过渡 */
  transition: opacity 800ms ease, background-size 800ms ease, background-position 800ms ease;
}

次要问题:CSS颜色值笔误

radial-gradient里的rgba(2255, 255, 255, 0.1)存在数值错误,红色通道值超出了0-255的合法范围,建议修正为rgba(255, 255, 255, 0.1)。

完成以上修改后,鼠标悬停菜单项时,背景图案会伴随平滑的位置切换动画,符合预期效果。

内容的提问来源于stack exchange,提问作者Elton Grivith D Souza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 17:32:18