右侧抽屉需用 offset: 'r' + anim: 'slideleft',并显式设置 area 数组宽度(如 ['420px', '100%']),否则受默认 maxwidth: 360 截断;anim 必须与 offset 方向匹配,area 非数组格式将导致高度异常。
layer.open 配合 offset: 'r' 和 anim: 'slideleft' 就能实现右侧抽屉效果,但直接照搬文档参数容易卡在默认宽度 360px 或动画错位——关键得覆盖 area 并选对 anim 值。
必须显式设置 area 宽度,否则被 maxWidth: 360 截断
很多人写完 offset: 'r' 发现抽屉窄得只够显示两行文字,原因就是没动 area。Layui 的 maxWidth 默认是 360,且仅在 area 为 'auto'(或未设)时生效。一旦你设了 area: ['420px', '100%'],maxWidth 就失效了。
-
area必须是数组格式,如['420px', '100%'];写成'420px'会被 layer 当作字符串处理,高度 fallback 到默认值(约 200px),导致抽屉被截断 - 如果内容高度不确定,
height推荐用'100%',避免滚动条嵌套或内容溢出 - 想适配移动端?把宽度换成
'80%',但注意offset: 'r'在小屏下仍会贴右边缘,不会自动缩进
anim 值必须和 offset 方向匹配,否则动画反向或不触发
anim: 5 是“渐显”,不是滑入;anim: 'slideLeft' 才是从右往左推入。Layui 2.8+ 支持字符串动画名,比数字更直观,也更少出错。
- 右侧抽屉:用
offset: 'r'+anim: 'slideLeft' - 左侧抽屉:用
offset: 'l'+anim: 'slideRight' - 别混用,比如
offset: 'r'+anim: 'slideRight'会导致内容从左边飞进来,视觉上像抽屉“弹错边” - 旧项目还在用数字?
anim: 3对应'slideLeft',但建议统一改字符串,避免版本升级后行为变化
关闭交互与遮罩层要手动控制,shadeClose 不是万能的
默认点击遮罩能关抽屉,但实际业务里常需要保留遮罩、禁用点击关闭——比如抽屉里有表单未保存。这时候光设 shadeClose: false 不够,还得处理 cancel 回调和 ESC 键。
-
shadeClose: false只禁点击遮罩,ESC 键仍可关闭,需加keyup监听拦截 - 想点右上角 × 关抽屉但禁止其他方式?设
closeBtn: 1(显示按钮)+shadeClose: false+cancel: function(){ return false; } - 抽屉内容是 DOM 元素(如
content: $('#drawer-content'))时,记得确保该元素在调用前已存在于页面中,否则 layer 会报content is undefined
真正容易被忽略的是 area 的数组格式和 anim 的方向语义绑定——这两个点错了,抽屉就只是个“位置对但长得不对”的弹层,而不是用户感知里的“抽屉”。











