layer.open 的 skin 参数必须显式传入才生效,不传则使用默认皮肤;skin 值作为 class 加在弹窗容器上,需配合 CSS 精准覆盖标题栏、内容区、按钮区三层 border-radius 及颜色样式。
layer.open 的 skin 参数必须显式传入才生效
不传 skin,哪怕你设了全局 layer.config({ skin: 'my-skin' }),这次弹窗也用默认皮肤。很多人以为“设了全局就自动生效”,结果调试半天发现样式没变——其实是漏写了 skin: 'my-skin' 这个参数。
常见错误现象:body 下没出现 my-skin 类,浏览器开发者工具里查不到对应 class;自定义 CSS 完全不生效。
-
skin值会作为 class 直接加在弹窗最外层容器(<div class="layui-layer my-skin">)上,不是加在body上,但选择器写body .my-skin依然有效(因为弹窗是body子元素) - 类名必须是合法 CSS 类名:小写字母、数字、短横线(
my-custom-layer✅,my custom❌,MySkin❌) - 如果同时用了
extend加载外部 CSS 文件,skin值要和文件里写的 class 名严格一致(比如extend: 'skin/my.css'里定义了.my-skin,那skin就得填'my-skin')
自定义 class 必须覆盖三层关键区域的 border-radius
只给容器加 border-radius 不够——Layui 弹窗由标题栏(.layui-layer-title)、内容区(.layui-layer-content)、底部按钮区(.layui-layer-btn)三块拼成,圆角要分别处理,否则会出现“标题直角 + 内容圆角”的错位感。
典型漏写点:CSS 里只写了 .my-skin { border-radius: 8px; },但标题栏还是尖角,内容区边缘有白边。
- 标题栏圆角:
.my-skin .layui-layer-title { border-top-left-radius: 8px; border-top-right-radius: 8px; } - 内容区圆角:
.my-skin .layui-layer-content { border-bottom-left-radius: 8px; border-bottom-right-radius: 8px; } - 整容器圆角(兜底):
.my-skin { border-radius: 8px; overflow: hidden; }(overflow: hidden防止子元素溢出破坏圆角) - 别忘了
.layui-layer-close图标位置可能偏移,需配合top/right微调
按钮、标题、关闭图标颜色必须单独重置
自定义 skin 后,.layui-layer-title、.layui-layer-btn0、.layui-layer-close 这些子元素不会自动继承你新 class 的颜色或背景色——它们有自己独立的默认样式,权重更高。
常见表现:标题文字还是灰色(#333),确定按钮还是蓝色,右上角 × 图标颜色不对。
- 标题文字色:
.my-skin .layui-layer-title { color: #fff !important; background: #2d8cf0; } - 确定按钮:
.my-skin .layui-layer-btn0 { background-color: #19be6f !important; color: #fff !important; } - 取消按钮:
.my-skin .layui-layer-btn1 { background-color: #ff5722 !important; } - 关闭图标:
.my-skin .layui-layer-close { color: #999; }(注意:不能换 icon,只能调色)
全局 layer.config({ skin: 'xxx' }) 只是默认值,极易被覆盖
只要某次 layer.open 显式写了 skin,那次就完全无视全局配置。项目里混用多种弹窗时,很容易在某个 confirm 或 alert 调用里悄悄写了 skin: 'layui-layer-molv',结果导致其他地方想用自定义皮肤却失效。
排查建议:全局搜索所有 layer.open( 和 layer.alert( 等调用,检查是否遗漏了 skin 参数,或误写了冲突的值。
- 全局配置仅对“没传
skin”的调用生效 -
extend路径必须相对于layui/css/modules/layer/,比如extend: 'my/skin.css'对应文件路径是layui/css/modules/layer/my/skin.css - 多个自定义皮肤共存时,确保每个
skin值唯一,避免 class 名冲突


















