Layui如何实现左侧菜单栏的伸缩效果

酷丽君_2242

酷丽君_2242

2026-05-12

458人浏览

原创

Layui侧边栏伸缩需手动切换class并配合CSS过渡,避免element.render()重置状态,收起时应调整子元素padding、隐藏子菜单,移动端需独立响应式控制。

点击按钮时 layui-side 宽度不变化?检查 class 切换和 CSS 过渡

layui 的左侧菜单栏本身不自带伸缩逻辑,所谓“伸缩”其实是手动切换 layui-side 元素的 class(比如 sidebar-collapsed),再靠 css 控制宽度和 visibility。常见错误是只改了 class,但没写对应的样式,或者忘了加 transition 导致生硬跳变。

实操建议:

  • 确保侧边栏容器有固定 class,例如 <div class="layui-side layui-bg-black">,不要直接用内联 style 控制宽度 <li>定义两个状态样式:<code>.layui-side(展开态,如 width: 200px)和 .layui-side.collapsed(收起态,如 width: 60px),且都带 transition: width .3s
  • 收起时建议同时加 overflow: hidden,避免文字溢出或图标错位
  • 别用 display: none 收起——会导致子元素无法触发 hover、点击失效
  • layui.use('element') 后调用 element.render() 会重置菜单状态?

    是的。Layui 的 element.render('nav') 或 element.render() 会重新解析 DOM 并覆盖当前 class 状态,导致你手动加的 collapsed 被清掉。这不是 bug,是设计使然:它假设导航结构由模板驱动,不维护运行时状态。

    实操建议:

    • 伸缩操作必须在 element.render() 之后 执行,不能提前加 class
    • 如果菜单是动态生成的(比如从接口拉取),先渲染,再执行折叠逻辑
    • 避免在 element.on('nav') 回调里调用 render(),否则形成循环重绘
    • 可封装一个 toggleSidebar() 函数,内部先判断当前状态,再切 class,最后手动触发子菜单的显示/隐藏(如有)

    收起后图标文字错位、子菜单展开异常?检查子元素的 display 和 padding

    当 layui-side 宽度从 200px 缩到 60px,里面 layui-nav-item 的文字默认仍占位,padding-left 会让图标偏右,文字被裁剪;若子菜单用了 layui-nav-child,其定位可能依赖父级宽度,导致展开位置飘移。

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

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

    下载

    实操建议:

    • 收起状态下,对 .layui-side.collapsed .layui-nav-item a 设置 padding-left: 15px(仅留图标空间),并加 text-align: center
    • .layui-side.collapsed .layui-nav-child 应设为 display: none,避免悬停时意外弹出
    • 图标统一用 <i class="layui-icon"></i>,别混用字体图标或 SVG,否则缩放不一致
    • 如果用了 layui-nav-tree,注意其子项默认 padding-left: 30px,需在 collapsed 下重置为 0

    移动端适配时点击区域太小、折叠按钮消失?响应式断点要独立控制

    Layui 默认不处理移动端侧边栏折叠,layui-layout-left 在小屏下仍保持展开,容易撑破视口。而自定义的折叠按钮如果只写在 PC 的 HTML 里,到了手机端就没了。

    实操建议:

    • 用媒体查询单独控制小屏行为:@media (max-width: 768px) { .layui-side { width: 240px !important; } .sidebar-collapsed { display: none; } }
    • 折叠按钮(如 <button id="sidebar-toggle"></button>)必须放在 layui-layout-left 外部,比如 layui-layout-admin 顶部栏里,否则会被一起隐藏
    • 移动端建议默认收起,靠顶部按钮呼出,此时需用 layui.util.drawer 或简单 show/hide 面板,别强行复用 PC 的 width 动画
    • 测试真机 touch 事件,确保 click 不延迟——Layui 的 click 绑定没问题,但若按钮在 position: fixed 区域,iOS 可能拦截

    真正麻烦的不是加动画,而是菜单项里嵌了表单、开关、badge 或异步加载的二级菜单——这些元素的状态不会随宽度自动适配,得逐个补丁处理。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

layui

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

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

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

2023.08.11

2463

5

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

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

2023.10.09

5303

6

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

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

2024.03.19

6350

13

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

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

2024.03.22

5938

10

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

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

2024.05.22

843

5

Python uv使用教程
Python uv使用教程

本专题汇总了 Python uv 使用教程与高效使用指南,从 uv 安装配置、常用命令到虚拟环境、依赖管理与项目打包,系统讲解如何用 uv 替代 pip 与 poetry,全面提升 Python 项目开发效率,助你快速上手这一现代化包管理工具,打造干净高效的 Python 工作流。

2026.10.15

0

15

剧云AI短剧创作教程合集
剧云AI短剧创作教程合集

本专题聚焦剧云AI短剧创作,讲解从短剧灵感、梗概、全局大纲到分集、分场和正文的完整流程及节奏设计方法。

2026.10.14

0

15

剧云AI剧本创作零基础入门
剧云AI剧本创作零基础入门

本专题系统讲解剧云AI剧本创作流程,涵盖灵感、梗概、大纲、分场与正文生成,帮助新手快速完成首个中文剧本项目。

2026.10.14

0

14

VibeKnow文档转视频操作指南
VibeKnow文档转视频操作指南

本专题讲解VibeKnow上传Word、TXT、Markdown等材料生成视频的方法,覆盖内容解析、脚本组织、画面生成与成片检查。

2026.10.14

0

15

热门下载

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

精品课程

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

共87课时 | 12.9万人学习

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

共89课时 | 11.1万人学习

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

共5课时 | 1.6万人学习