maxmin: false 是禁用最大化按钮的最简方式,仅对 type: 1 和 type: 2 有效,设为 false 后按钮不渲染、无事件绑定;type: 0/3/4 不支持该配置。
maxmin: false 是禁用最大化按钮的最简方式
只要弹窗类型是 type: 1(页面层)或 type: 2(iframe 层),设置 maxmin: false 就能彻底隐藏右上角的「最大化」和「最小化」两个按钮——它不是“禁用”,而是从 dom 中不渲染,没有残留样式或事件绑定。
这个配置是开关型的,没有中间态;设为 false 后,layer 内部连按钮元素都不会生成,比后续手动 remove() 更干净。
-
type: 0(信息框)、type: 3(加载层)、type: 4(tips)本身就不支持maxmin,设了也无效 - 若项目中混用了多种
type,建议统一检查:只对type: 1和type: 2做maxmin控制 - 注意不要和
resize: false混淆——后者控制的是拖拽拉伸,不影响按钮显示
想只留最小化、去掉最大化?官方没提供单独开关
maxmin 是布尔值,无法拆解。所谓“只隐藏最大化按钮”,本质是绕过官方限制,靠 DOM 操作临时干预。但要注意:这类操作必须在弹窗完全渲染后执行,否则 .layui-layer-max 元素还不存在。
推荐在 success 回调里做清理:
layer.open({
type: 1,
content: '<p>内容</p>',
maxmin: true,
success: function(layero, index) {
layero.find('.layui-layer-max').remove(); // 只删最大化按钮
}
});
- 不能在
end或full回调里操作,那些时机太晚或已触发过最大化状态 - 如果弹窗内容区高度设为
'auto',又同时启用了maxmin: true,最小化后再最大化可能触发高度塌陷(内容区高变 0),此时即使删了按钮也救不了体验 - 该方法对所有
layer.open实例都有效,若项目中有全局提示层(如layer.msg),它们不受影响,因为不走maxmin
为什么不能用 CSS 隐藏 .layui-layer-max?
直接加 style="display:none" 或覆盖 CSS 类看似简单,但存在两个硬伤:
- 按钮 DOM 仍存在,点击区域还在——用户可能误点空白处触发最大化逻辑(尤其在高 DPI 屏幕或缩放比例下)
- layer 内部会根据
maxmin状态自动绑定/解绑事件,CSS 隐藏后事件监听器仍在,可能引发未预期的full或restore回调 - 某些旧版浏览器(如 IE11)对动态插入的伪类按钮兼容差,CSS 隐藏后可能残留占位或错位
所以,remove() 是更可靠的选择,前提是确保执行时机正确。
禁用最大化 ≠ 禁止全屏行为
用户仍可通过快捷键(如 F11)让整个浏览器全屏,或通过窗口管理器拖拽弹窗到屏幕边缘触发系统级贴边/全屏。这些行为 layer 无法拦截,也不应尝试拦截。
真正需要控制的,只是 layer 自身提供的那套 UI 交互逻辑:
- 关掉
maxmin,就断掉了 layer 的最大化入口 - 如果业务真需要“默认满屏但不可再点放大”,用
layer.full(index)+maxmin: false组合即可 - 别忘了配
resize: false,否则用户还能拖拽改变尺寸,和“固定大小”预期冲突
容易被忽略的是:一旦用了 success 里 remove(),后续如果有多个弹窗叠加,每个都要单独处理;而 maxmin: false 是声明式配置,一劳永逸。


















