layui侧边栏怎么实现三级菜单以及四级菜单的展示

千明酱_2097

千明酱_2097

2026-10-16

401人浏览

原创

layui原生layui-nav-tree仅支持两级菜单,三级及以上需用dropdown.render实现无限层级或手写dom+css兼容老项目;数据须嵌套结构,路径匹配需清理斜杠并冒泡激活态。

layui侧边栏怎么实现三级菜单以及四级菜单的展示

Layui 原生的 layui-nav-tree 仅支持两级菜单(一级 <li> + 二级 <dl class="layui-nav-child"></dl>),三级及更深层级无法被识别和渲染——即使 HTML 中手动嵌套了 <dl><dd><dl></dl></dd></dl>,CSS 和 JS 逻辑也不会向下递归处理,结果是第三级菜单不显示、错位或被忽略。

用 dropdown.render 实现真正可用的三级/四级垂直菜单

这是 Layui 官方唯一明确支持无限层级嵌套的方案,无需改源码,语义清晰,交互可控。

  • 菜单数据必须使用嵌套结构,每层通过 child 字段定义子项:
    { title: "系统管理", child: [{ title: "用户中心", child: [{ title: "新增用户", href: "/user/add" }, { title: "用户列表", href: "/user/list" }] }] }
  • 触发元素推荐用 <span></span> 或 <a></a>,避免 <button></button> 带来默认样式干扰布局
  • 关键配置项:
    align: 'left' 让下拉面板紧贴左侧垂直展开;
    offset: '0,4' 微调垂直间距,防止与父项重叠;
    trigger: 'click'(非 hover)更适合侧边栏操作习惯
  • 点击回调中需判断是否为叶子节点:
    若 data.child === undefined 才执行跳转;否则只展开子菜单

手写 DOM + CSS 实现兼容老项目的三级/四级折叠

适用于已深度绑定 layui-nav-tree 结构、不便引入 dropdown 的场景。核心是绕过 Layui 渲染逻辑,完全由 JS 控制显隐。

深蓝色网站后台管理系统layui框架模板-AdminPro
深蓝色网站后台管理系统layui框架模板-AdminPro

一款深蓝色网站后台管理系统layui框架模板

下载
  • HTML 中保留原结构,但所有三级及以后菜单统一加自定义类名,例如:
    <ul class="sub-menu-level3"><li>…</li></ul>,并设 style="display:none"
  • 在二级菜单项末尾插入展开图标:
    <i class="layui-icon layui-icon-down" data-level="2"></i>
  • JS 绑定点击事件:
    点击二级项时,调用 $(this).next('.sub-menu-level3').slideToggle();
    同时切换图标为 layui-icon-down / layui-icon-up
  • 必须加 e.stopPropagation(),否则会触发 layui-nav 自带的折叠行为,导致菜单闪退
  • 注意:Layui 的 element.init() 会劫持所有 .layui-nav-item 点击,自定义事件应在 element.init() 之后再绑定

动态渲染时的数据与路径匹配要点

后台返回的菜单 JSON 必须是严格嵌套结构,不能是扁平的 id/pid 列表;前端直接传入会导致丢层。

  • ✅ 正确格式示例:
    [{ "name": "权限管理", "href": "/auth", "children": [{ "name": "角色管理", "href": "/auth/role", "children": [{ "name": "分配权限", "href": "/auth/role/assign" }] }] }]
  • 刷新后高亮失效?别直接比对 window.location.pathname 和菜单 href。
    统一做清理:const path = location.pathname.replace(/^\/+|\/+$/g, ''),再逐个 === 匹配
  • 激活态要向上冒泡:找到匹配的四级菜单项后,不仅给它加 layui-this,还要依次给它的三级父 <dd></dd>、二级父 <dl></dl>、一级父 <li> 添加对应状态类(如 layui-nav-itemed)
  • 异步加载菜单时,路径匹配逻辑必须放在 navbar.done 回调里,确保 DOM 已渲染完成

不复杂但容易忽略。关键是选对方案:新项目优先用 dropdown.render;存量项目若结构固化,就用手工控制 DOM 显隐。数据结构和路径匹配这两关过了,多级菜单就稳了。

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2483

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

5363

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6390

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5998

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

863

5

Revel框架模板渲染与表单验证
Revel框架模板渲染与表单验证

本专题围绕Revel框架视图层开发,介绍模板语法、变量输出、布局复用、表单提交、参数绑定与验证规则,帮助开发者完成安全规范的页面交互。

2026.10.16

0

15

Revel框架MVC路由与控制器
Revel框架MVC路由与控制器

本专题聚焦Revel框架MVC核心机制,讲解路由定义、控制器Action、参数绑定、请求响应和反向路由,并结合常见场景梳理接口请求处理流程。

2026.10.16

0

15

Revel框架入门与安装配置
Revel框架入门与安装配置

本专题从Revel框架环境搭建讲起,系统介绍命令行工具安装、项目创建、目录结构、配置文件及热代码重载,帮助开发者快速完成首个Go Web应用。

2026.10.16

0

15

Linux 新手先学哪些命令
Linux 新手先学哪些命令

Linux新手命令专题汇集终端基础、文件目录操作、文本查看、软件安装和权限管理等入门文章,帮助按实际任务练习常用命令并建立命令行操作习惯。

2026.10.15

0

20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ThinkPHP配置开发与CMS后台实战
ThinkPHP配置开发与CMS后台实战

共87课时 | 12.9万人学习

第二十三期_综合实战
第二十三期_综合实战

共89课时 | 11.1万人学习

Layui 快速入门精讲
Layui 快速入门精讲

共5课时 | 1.6万人学习