首页
学习
活动
专区
工具
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类,确保一次只有一个子菜单展开。

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

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

相关·内容

1分3秒

右键菜单加密文件夹中所有JS文件

-

还说折叠屏没用?这家国产企业拿下创新奖,未来属于折叠屏!?

16分12秒

139.尚硅谷_JS基础_二级菜单-过渡效果

28分53秒

138.尚硅谷_JS基础_二级菜单-完成基本功能

4分6秒

177-尚硅谷-Scala核心编程-折叠缩写方式.avi

-

【喂你播】格力申请折叠屏专利;华为4G手机入网

6分45秒

如何制作折叠工具箱动画,SOLIDWORKS带你一探究竟!

11分9秒

176-尚硅谷-Scala核心编程-折叠的基本介绍和使用.avi

-

手机厂商齐发可折叠手机,滴滴拟筹40亿扩大社区团购

6分50秒

低代码.菜单体系

-

华为折叠手机为何疯炒至4万块?因再次取得技术突破

5分47秒

80-尚硅谷-硅谷通用权限项目-菜单管理模块-角色分配菜单前端

领券