首页
学习
活动
专区
工具
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() 来阻止事件冒泡。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • BuildAdmin02:前端架构布局和菜单栏折叠的实现

    因为aside的宽度是变化的,因为后面菜单折叠需要动态修改宽度,所以这里不能写死。 而且因为菜单栏要放在aside中,且宽度一致,所以直接使用一个变量方便同步控制。...菜单折叠功能 菜单的折叠功能如下图所演示: 在点击logo旁的折叠按钮时,可以观察到4种变化: aside变窄,不再是260px 折叠按钮图标变化 logo折叠(消失) 菜单栏折叠,只剩图标 当点击折叠按钮时...同时我们也看到了menuWidth变量,即菜单栏的宽度为260,那么当折叠之后宽度变为多少呢?...再看Icon,绑定了一个名为onMenuCollapse的点击事件,用来修改menuCollapse,从而实现菜单栏的折叠与展开。...3. menu折叠实现 menu使用ElementUI自身menu组件的collapse属性来控制折叠和展开。

    97941

    django simpleui 2.1正式版发布,带来全新体验和众多更新

    django-simpleui 是一个基于vue+element-ui开发的 django admin主题包,在使用上与原生admin无任何区别。不用修改任何代码,就可以直接使用该主题。...去除第一个标签关闭按钮 增加默认菜单图标隐藏 增加自定义菜单图标 修复 第2个标签无法打开右键菜单 优化移动端显示效果 首页增加脚本block 增加菜单自动配图标 重新设计logo 重新设计登录页 部分按钮增加水波纹 菜单栏折叠记忆...pip install django-simpleui --upgrade 登录界面相比原生的admin堪称完美 ? ?...没有对比就没有伤害,网友:用了simpleui就在也不想用原生admin的界面了。 ? ? ? ? 原生的主题风格也只有一种,并且无法更换。...INSTALLED_APPS = [     'simpleui',      .... ] 其他一切就和原生admin的使用方式一模一样了。

    1.2K20

    Cloud Studio 内核升级之触手可及

    值得一提的是编辑器顶部菜单栏提供了一个命令中心搜索框,通过它,让编辑器的所有功能变得触手可及。这次内核升级,主要包含如下亮点:默认显示命令中心 - 用于搜索文件、运行命令和导航光标历史记录。...标题栏自定义 - 隐藏/显示菜单栏、命令中心或布局控制。折叠选择 - 在编辑器中创建您自己的折叠区域。搜索多选 - 选择然后对多个搜索结果进行操作。...默认显示命令中心通过命令中心,可以方便地搜索文件、运行命令和导航光标历史记录,如下图所示: 标题栏自定义Cloud Studio 默认已经显示了命令中心,您也可以在顶部菜单栏上右键选择隐藏/显示菜单栏、...当您的窗口比较小的时候,菜单栏会自动折叠起来,如下图所示:折叠选择您可以把自己选择的代码行范围创建为一个自定义折叠,通过如下命令创建一个自定义折叠:创建后的效果如下:搜索多选现在搜索视图支持多选,您可以对多个选择项进行批量替换

    74420

    JetBrains IDE 中的隐藏宝石技巧

    在菜单栏中使用 Edit | Sort Lines or Edit | Reverse Lines可以帮我们快速的对选中的代码或者是整个文件进行排序;或者也可以使用快速命令执行这个操作。...可以在菜单栏中新建暂存文件File | New | Scratch File or,也可以使用快捷键 ⇧ ⌘ N. 通常使用这个功能来存放和运行一些测试或者是实例代码。...批量折叠和展开 在阅读复杂长篇代码的过程中有时候很难弄懂代码结构,即便是代码是我们自己写的。...这也容易解决,批量折叠和展开可以快速帮我们浏览代码,快捷键是:macOS:⇧⌘- /⇧⌘+,Windows/Linux: Ctrl+Shift+NumPad + / Ctrl+Shift+NumPad。...IDE 可以帮我们折叠/展开选中的代码,如果没有选中则是处理整个文件。

    54230

    制作你自己的快速工具栏

    他们最终都会导向一个窗口 "Excel选项" 而今天的快速访问工具栏 我相信你们也发现了 也在这个窗口里设置 而在Excel界面中 它在界面菜单的上方或者下方 当然我的调到下方了 所以上面那一排空空的 你可以在菜单栏点击右键...数据菜单,开始菜单,视图菜单 不考虑点击顺序的情况下 你要点击完这些功能 至少需要7次点击 这还是在没有考虑选择行列的情况下 但是如果你把他们都加到快速访问工具栏了 你可以减少至少2次点击:也就是切换菜单栏的点击...场景3:更大屏的操作 也就是菜单栏右键中一直没提的功能:折叠功能区 这个功能也可以通过双击菜单栏快速实现 折叠功能适合小屏电脑 或者展示的时候使用 但是如果在这时候你也要用到功能 一个个去点开菜单...然后再点击功能 未免过于麻烦 虽然菜单栏消失了 但是工具栏没有啊 你可以点击工具栏啊 景4:隐藏的神秘功能 Excel总是让人惊叹的地方也在于 Excel原来还有这个功能!

    96220

    vim 开发环境设置(常用)

    by oldboy """"""""""""""""""""" "激活折叠功能 set foldenable "设置按照语法方式折叠(可简写set fdm=XX) "有6种折叠方法: "manual...手工定义折叠 "indent 更多的缩进表示更高级别的折叠 "expr 用表达式来定义折叠 "syntax 用语法高亮来定义折叠 "diff 对没有更改的文本进行折叠 "marker...对文中的标志进行折叠 set foldmethod=manual "设置折叠区域的宽度 "如果不为0,则在屏幕左侧显示一个折叠标识列 "分别用“-”和“+”来表示打开和关闭的折叠。..."zo O-pen a fold (打开折叠) "zc C-lose a fold (关闭折叠) "zf F-old creation (创建折叠) nnoremap <space...""""""""""" "开启新行时使用智能自动缩进 set smartindent set cin set showmatch "隐藏工具栏 set guioptions-=T "隐藏菜单栏

    85930

    HUAWEI DevEco Studio使用技巧【鸿蒙专题03】

    Command+Option+L,可以快速对当前整个文件进行格式化 代码折叠 Ctrl + 加号键 Command+Option+加号键 代码快速注释 Ctrl+/ Command+/ 代码结构树 Alt...20220120093216775 第三步,重启,汉化完成 image-20220120093524445 代码高亮 支持对代码关键字、运算符、字符串、类名称、接口名、枚举值等进行高亮颜色显示,可以在菜单栏打开...** 同时还可以对变量名和参数名进行语义高亮,默认情况下为关闭状态,可以在菜单栏打开File > Settings或快捷键Ctrl+Alt+S(Mac为DevEco Studio > Preferences...代码折叠 支持对代码块的快速折叠和展开,可以使用快捷键Ctrl + 加号键(Mac为Command+Option+加号键)快速展开已折叠的代码;使用快捷键Ctrl + 减号键(Mac为Command+Option...+减号键)折叠已展开的代码块**。

    1.3K20

    Android Studio配置优化,打造开发利器

    2、当已经打开或创建了工程的时候,可以通过菜单栏“File -> Setting”或者快捷键“Ctrl + Shift + S”进入设置页面: ?...04菜单栏或工具栏设置 如果需要自定义菜单栏或者工具栏,可以这么设置,Settings --> Menus and Toolbars,可以加入自己新定义的,也可以修改系统的设置。 ?...正常情况下不建议大家随便设置,否则有的功能会不小心删掉,不便于后期开发,可以等足够熟悉后再来尝试打造个性化菜单栏和工具栏。...19代码折叠 有时候文件内容太多,查找不方便或者结构不清晰,就可能会用到代码折叠,Settings --> Editor --> Code Folding。 ?...根据自己的喜好选择相应的部分进行折叠,比如doc文档折叠、方法体折叠等。 20代码字体设置 该部分会修改编辑器的字体,包含所有的文件显示的字体。

    3K90

    受用一生的高效 PyCharm 使用技巧(五)

    随处折叠,实现代码自由 PyCharm 里代码块的折叠功能,相当的显眼,在代码编辑框的左侧,你可以发现有 + 也有 -,很容易理解 + 代表代码块被折叠了可以点此展开,而 - 代表这个代码块处于展开状态可以点此折叠...如果你和我一样是个键盘党,你可以使用快捷(Mac:按住Command键,再按+或者- )进行快速反折叠/折叠。 ? 代码块的折叠和反折叠,应该是一个代码编辑器的基本功能。...都可以进行折叠、反折叠。 有时候,我们并不希望整块代码进行折叠,而只想对其他一大段暂时对我们无用的代码进行折叠。那能做到吗? 答案是可以的。...只要你先选中你想折叠的代码,再按住 Command (Windows:Ctrl键)紧接着按住 . 就可以了。效果如下: ? (GIF动态只播放两次,重播请刷新页面) 22....(GIF动态只播放两次,重播请刷新页面) 录制好后,你可以先定位到你要删除的函数处,点菜单栏 Edit - Macro 然后选择我们刚刚录制的宏,就可以播放宏了。

    76510

    受用一生的高效 PyCharm 使用技巧(五)

    随处折叠,实现代码自由 PyCharm 里代码块的折叠功能,相当的显眼,在代码编辑框的左侧,你可以发现有 +也有 -,很容易理解 + 代表代码块被折叠了可以点此展开,而 - 代表这个代码块处于展开状态可以点此折叠...如果你和我一样是个键盘党,你可以使用快捷(Mac:按住Command键,再按+或者- )进行快速反折叠/折叠。 ? 代码块的折叠和反折叠,应该是一个代码编辑器的基本功能。...都可以进行折叠、反折叠。 有时候,我们并不希望整块代码进行折叠,而只想对其他一大段暂时对我们无用的代码进行折叠。那能做到吗? 答案是可以的。...只要你先选中你想折叠的代码,再按住 Command (Windows:Ctrl键)紧接着按住 . 就可以了。效果如下: ? (GIF动态只播放两次,重播请刷新页面) 22....(GIF动态只播放两次,重播请刷新页面) 录制好后,你可以先定位到你要删除的函数处,点菜单栏 Edit - Macro 然后选择我们刚刚录制的宏,就可以播放宏了。

    68020

    STM32CubeMX使用方法及功能介绍

    Ⅱ、STM32CubeMX主界面描述 打开安装好的STM32CubeMX,看到其主界面如下: 主要看到信息有: 1.菜单栏:打开软件只有4个主菜单,在新建工程后有5个菜单; 2.快捷按钮栏:这些按钮在菜单栏里面都能找到...1.菜单栏 打开软件时有四个菜单:文件File、工程Project、Window窗口、Help帮助。 当新建工程后增加了一个按钮:Pinout引脚输出菜单。...2.快捷按钮栏 和上面菜单栏一样,打开软件时和新建工程后存在差异,新建工程后增加一些快捷按钮。 菜单每一个选项在下面章节(新建工程后)单独讲述。...Generate CVS pinout text file:引脚生产列表 H.Pin/SignalsOptions 引脚配置选项 I.Collapse All全部折叠:折叠左边配置和外设。

    97520

    Flutter 3更新详解

    全桌面平台生产就绪 Linux 和 macOS 平台的支持已进入稳定状态,内含下列功能: 级联菜单和 macOS 系统菜单栏支持 现在您可以使用 PlatformMenuBar widget 在 macOS...上创建平台渲染的菜单栏,支持插入仅限该平台使用的菜单,并控制 macOS 应用菜单中的显示内容。...macOS 平台默认使用通用二进制文件 在 Flutter 3 中,Flutter macOS 桌面应用会被构建为通用二进制文件,从而原生支持使用 Intel 处理器的 Mac 电脑和搭载 Apple...移动端更新 我们针对移动端的更新包括: 支持可折叠设备 Flutter 3 支持可折叠移动设备。...通过由 Microsoft 牵头的合作,让大家可以使用新的功能和 widget 在可折叠设备上创建动感、愉悦的体验。

    3.6K20
    领券