要实现侧边栏“不显示滚动条但可滚动”,需隐藏滚动条并保留滚动功能:WebKit用::-webkit-scrollbar{display:none},Firefox用scrollbar-width:none,IE/Edge旧版用-ms-overflow-style:none;容器设height:100vh和overflow-y:auto,并确保父级有高度(如position:relative;height:100vh);移动端需加-webkit-overflow-scrolling:touch并避免fixed定位或transform干扰。

侧边栏内容过长时默认出现滚动条,是因容器高度固定且 overflow-y 被设为 auto 或 scroll。要“不显示滚动条但可滚动”,本质是启用**隐藏式滚动(hidden scrollbar)**,同时保留滚动能力——这在桌面端可行,在移动端需额外处理。
关键:用 CSS 隐藏滚动条但保留滚动功能
对侧边栏容器(如 .layui-side 或自定义的菜单父元素)应用以下样式:
-
WebKit 内核(Chrome/Safari/Edge):
::-webkit-scrollbar { display: none; } -
Firefox:
scrollbar-width: none; -
IE/Edge 旧版(可选):
-ms-overflow-style: none; -
必须确保容器本身可滚动:
设置height: 100vh或固定高度 +overflow-y: auto
注意容器高度来源和定位方式
Layui 侧边栏常嵌套在 .layui-layout-left 或 .layui-side 中,若其父级未设高度,子元素 100% 会失效。推荐写法:
- 给侧边栏直接父容器加
position: relative; height: 100vh; - 侧边栏自身设
position: absolute; top: 0; bottom: 0; width: 200px;(避免依赖浮动或流式高度) - 避免用
height: 100%向上继承,容易因某一级缺失高度而塌陷
移动端滚动失效?补上触控支持
iOS Safari 和部分安卓 WebView 中,隐藏滚动条后可能出现拖不动、卡顿问题。需加:
-
-webkit-overflow-scrolling: touch;(仅 WebKit 有效,必加) - 确保滚动区域内部没有
position: fixed元素干扰滚动上下文 - 避免在菜单项上使用
transform: translateZ(0)等触发硬件加速但破坏滚动的行为
如果用了 layui-nav 子菜单,别让折叠逻辑干扰滚动
展开/收起子菜单时,若用 display: none/block 切换,可能触发重排导致滚动位置跳变。建议:
- 改用
max-height: 0 / max-height: 500px+overflow: hidden实现平滑收展 - 为
.layui-nav-child设置transition: max-height .2s ease-in-out; - 展开后手动调用
layer.closeAll('tips')等清理浮层,防止遮挡滚动区域










