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

js++原生+折叠菜单栏

以下是关于在 JavaScript 原生实现折叠菜单栏的相关内容:

基础概念: 折叠菜单栏是一种常见的用户界面元素,可以根据用户的操作(如点击)来展开或收起菜单内容,以提高页面的可用性和美观性。

优势:

  1. 节省页面空间,使页面布局更简洁。
  2. 提供更好的用户体验,用户可以根据需要选择查看菜单内容。

类型:

  1. 简单的点击展开/收起。
  2. 带有动画效果的展开/收起。

应用场景:

  1. 导航菜单,特别是在移动设备上。
  2. 侧边栏菜单。

实现示例代码:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <style>
    .menu {
      width: 200px;
      border: 1px solid #ccc;
    }

   .menu-item {
      background-color: #f1f1f1;
      padding: 10px;
      cursor: pointer;
    }

   .submenu {
      display: none;
      padding-left: 20px;
    }
  </style>
</head>

<body>
  <div class="menu">
    <div class="menu-item">菜单 1
      <div class="submenu">
        <div class="menu-item">子菜单 1-1</div>
        <div class="menu-item">子菜单 1-2</div>
      </div>
    </div>
    <div class="menu-item">菜单 2
      <div class="submenu">
        <div class="menu-item">子菜单 2-1</div>
        <div class="menu-item">子菜单 2-2</div>
      </div>
    </div>
  </div>

  <script>
    const menuItems = document.querySelectorAll('.menu-item');

    menuItems.forEach(item => {
      item.addEventListener('click', function () {
        const submenu = this.querySelector('.submenu');
        if (submenu) {
          submenu.style.display = submenu.style.display === 'block'? 'none' : 'block';
        }
      });
    });
  </script>
</body>

</html>

可能出现的问题及解决方法:

  1. 展开/收起动画不流畅:可以通过 CSS 过渡效果来优化,例如添加 transition 属性。
  2. 点击穿透导致多次触发事件:可以使用 event.stopPropagation() 来阻止事件冒泡。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券