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

能否用CSS或jQuery实现鼠标悬停时修改其他元素的CSS样式?

问题解答

这个需求完全可以实现,下面提供两种可行方案:

一、纯CSS方案(推荐,无需JS)

你的CSS写法存在语法错误,CSS不支持嵌套选择器(除非用预处理器如Sass),且需要通过后代选择器准确定位子元素。结合你的HTML结构,修正后的代码如下:

修正后的CSS

/* 默认隐藏子菜单项 */
li.menu-sub-item {
  display: none;
}

/* 鼠标悬停在.menu-item时,显示其下的.menu-sub-item */
li.menu-item:hover .sub-menu .menu-sub-item {
  display: block;
}

修正后的HTML(修复结构错误:<a>不能直接放在<ul>内)

<div class="menu-main-menu">
  <li class="menu-item">
    <a href="https://www.test.com">Home</a>
    <ul class="sub-menu">
      <li class="menu-sub-item">
        <a href="https://www.test.com">Profil</a>
      </li>
    </ul>
  </li>
</div>

选择器说明:

  • li.menu-item:hover:选中处于鼠标悬停状态的.menu-item元素
  • .sub-menu .menu-sub-item:定位到.menu-item下的.sub-menu容器内的.menu-sub-item后代元素

二、JavaScript方案(适用于元素无父子/兄弟关联的场景)

如果触发悬停的元素和要修改的元素没有层级关联,可以通过JS监听鼠标事件实现:

const hoverTrigger = document.querySelector('.menu-item');
const targetElement = document.querySelector('.menu-sub-item');

hoverTrigger.addEventListener('mouseover', () => {
  targetElement.style.display = 'block';
});

hoverTrigger.addEventListener('mouseout', () => {
  targetElement.style.display = 'none';
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:55:18