
本文旨在提供一种使用纯 JavaScript 实现鼠标悬停效果,并保持该效果直到另一个元素被悬停的方法。通过监听 mouseover 事件,并动态添加和移除 CSS 类,实现菜单项的突出显示效果,确保只有一个菜单项处于激活状态。
核心思路是利用 JavaScript 监听每个菜单项的 mouseover 事件。当一个菜单项被悬停时,首先移除所有菜单项的 hover 类,然后仅为当前悬停的菜单项添加 hover 类。这样,就能保证只有一个菜单项拥有 hover 类,从而实现高亮显示当前悬停项的效果。
获取所有菜单项元素
首先,需要获取所有具有 menu-item 类的元素。document.getElementsByClassName 方法返回一个 HTMLCollection,我们需要将其转换为数组,以便使用 forEach 方法进行迭代。可以使用扩展运算符 ... 来完成转换。
立即学习“Java免费学习笔记(深入)”;
const menuItems = [...document.getElementsByClassName('menu-item')];为每个菜单项添加 mouseover 事件监听器
使用 forEach 方法遍历 menuItems 数组,为每个菜单项添加 mouseover 事件监听器。
menuItems.forEach(item => item.addEventListener('mouseover', () => {
// 处理鼠标悬停事件
}));在 mouseover 事件处理函数中移除和添加 hover 类
在 mouseover 事件处理函数中,首先遍历整个 menuItems 数组,移除所有菜单项的 hover 类。然后,为当前悬停的菜单项添加 hover 类。
menuItems.forEach(item => item.addEventListener('mouseover', () => {
menuItems.forEach(item => item.classList.remove('hover'));
item.classList.add('hover');
}));以下是完整的 HTML、CSS 和 JavaScript 代码示例:
<!DOCTYPE html>
<html>
<head>
<title>JavaScript Hover Effect</title>
<style>
#menu {background-color: #0066cc; padding: 15px; width: 100%;}
.menu-item {height: 25px; width: fit-content; color: white; cursor: pointer; font-family: sans-serif;transition: margin-left .2s;}
.menu-item.hover {margin-left: 15px;}
</style>
</head>
<body>
<div id="menu">
<div class="menu-item">Item 1</div>
<div class="menu-item">Item 2</div>
<div class="menu-item">Item 3</div>
<div class="menu-item">Item 4</div>
</div>
<script>
const menuItems = [...document.getElementsByClassName('menu-item')];
menuItems.forEach(item => item.addEventListener('mouseover', () => {
menuItems.forEach(item => item.classList.remove('hover'));
item.classList.add('hover');
}));
</script>
</body>
</html>通过本文,你学习了如何使用纯 JavaScript 实现鼠标悬停保持效果,并保持该效果直到另一个元素被悬停。这种方法简单易懂,适用于大多数简单的菜单场景。通过灵活运用 CSS 和 JavaScript,可以创建出更加丰富和交互性强的用户界面。
以上就是JavaScript 实现鼠标悬停保持效果的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号