首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js 菜单折叠

在JavaScript中实现菜单折叠功能,通常涉及到DOM操作和事件处理。以下是一个基础的实现示例,包括HTML结构、CSS样式和JavaScript代码。

HTML结构

代码语言:txt
复制
<ul class="menu">
  <li>
    <span class="menu-title">菜单1</span>
    <ul class="submenu">
      <li>子菜单1-1</li>
      <li>子菜单1-2</li>
    </ul>
  </li>
  <li>
    <span class="menu-title">菜单2</span>
    <ul class="submenu">
      <li>子菜单2-1</li>
      <li>子菜单2-2</li>
    </ul>
  </li>
</ul>

CSS样式

代码语言:txt
复制
.menu .submenu {
  display: none;
}

.menu .submenu.active {
  display: block;
}

JavaScript代码

代码语言:txt
复制
document.addEventListener('DOMContentLoaded', function() {
  const menuTitles = document.querySelectorAll('.menu-title');

  menuTitles.forEach(function(title) {
    title.addEventListener('click', function() {
      const submenu = this.nextElementSibling;
      if (submenu && submenu.classList.contains('submenu')) {
        submenu.classList.toggle('active');
      }
    });
  });
});

解释

  1. HTML结构:定义了一个包含主菜单和子菜单的列表结构。
  2. CSS样式:默认情况下,子菜单是隐藏的(display: none)。当子菜单的父元素(即.submenu)具有.active类时,子菜单显示(display: block)。
  3. JavaScript代码
    • 在文档加载完成后,选择所有具有.menu-title类的元素。
    • 为每个.menu-title元素添加点击事件监听器。
    • 当点击事件触发时,找到当前点击元素的相邻兄弟元素(即子菜单),并切换其.active类。

优势

  • 简洁:代码简单易懂,易于维护。
  • 灵活:可以轻松扩展到更复杂的菜单结构。
  • 性能:使用事件委托和简单的DOM操作,性能开销较小。

应用场景

  • 网站导航:适用于网站的侧边栏或顶部导航菜单。
  • 应用界面:适用于各种需要折叠菜单的应用界面,如管理后台、设置页面等。

常见问题及解决方法

  1. 子菜单不显示
    • 确保CSS样式正确应用,特别是.submenu.active类的样式。
    • 确保JavaScript代码正确选择并操作了子菜单元素。
  • 多个子菜单同时展开
    • 可以在切换.active类之前,先移除所有子菜单的.active类,确保一次只有一个子菜单展开。
    • 可以在切换.active类之前,先移除所有子菜单的.active类,确保一次只有一个子菜单展开。

通过以上方法,你可以实现一个基本的菜单折叠功能,并根据需要进行扩展和优化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券