Layer UI 是一款经典的前端 UI 框架,基于 jQuery 开发,以模块化、易用性和丰富的组件库著称,尤其适合快速构建后台管理系统,以下从环境准备、核心概念、常用组件使用、样式定制及注意事项等方面详细介绍其使用方法。

环境准备与基础引入
使用 Layer UI 需要先搭建基础环境,确保项目中已引入 jQuery(版本需与 Layer UI 兼容,建议 jQuery 1.8-1.11 或 2.x),然后通过以下方式引入 Layer UI 的核心文件:
-
CDN 引入(推荐用于快速开发):
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/layer-ui@3.5.1/dist/layer/theme/default/layer.css"> <script src="https://cdn.jsdelivr.net/npm/layer-ui@3.5.1/dist/layer/layer.js"></script>
theme/default
可替换为其他主题(如theme/molv
),若需自定义主题,可下载源码后修改样式文件。 -
本地文件引入:
下载 Layer UI 源码(官网或 GitHub),将dist
目录中的layer.css
和layer.js
放入项目,按顺序引入 jQuery 和 Layer UI 文件。(图片来源网络,侵删)
核心概念:模块化调用
Layer UI 采用模块化设计,所有功能通过 layer
对象调用,核心语法为 layer.模块名(参数)
,参数支持对象格式(如 {title: '标题', content: '内容'}
),常用模块包括 layer.open
(弹层)、layer.msg
(消息提示)、layer.load
(加载层)等。
常用组件详细使用
弹层组件(layer.open)
弹层是 Layer UI 最核心的功能,支持多种类型(页面层、iframe 层、加载层、tips 层等),通过 type
参数区分。
参数类型 | 说明 | 示例代码 |
---|---|---|
type: 0 |
页面层(直接在弹层中展示 HTML 内容) | ```javascript |
layer.open({ type: 0, '页面层', content: '
| `type: 2` | iframe 层(嵌入外部页面) | ```javascript
layer.open({
type: 2, 'iframe 层',
content: 'https://www.example.com',
area: ['800px', '600px'],
maxmin: true // 开启最大化最小化按钮
});
``` |
| `type: 3` | 加载层(配合 `layer.load` 使用) | ```javascript
var loadIndex = layer.load(2, {shade: [0.3, '#000']}); // 0-2种风格,shade遮罩
setTimeout(function(){
layer.close(loadIndex); // 关闭加载层
}, 2000);
``` |
| `type: 4` | tips 层(指向元素的上/下/左/右弹出提示) | ```javascript
layer.tips('这是一个tips提示', '#btn', {
tips: [1, '#3595CC'], // 1表示上,2右,3下,4左
time: 3000 // 3秒后自动关闭
});
``` |
**关键参数说明**: :弹层标题,支持字符串、HTML 或数组(如 `['标题', 'background-color:#f00']` 可设置标题样式)。
- `content`:内容,支持字符串(HTML、URL)、DOM 元素或 jQuery 对象。
- `area`:弹层尺寸,格式 `['宽度', '高度']`,支持 `auto`(如 `['auto', 'auto']`)。
- `maxmin`:是否显示最大化/最小化按钮(仅 `type: 2` 有效)。
- `shade`:遮罩层,格式 `[透明度, 遮罩色]`,默认 `[0.3, '#000']`。
- `closeBtn`:关闭按钮样式,`0` 不显示,`1` 默认样式,`2` 简约样式。
#### 2. 消息提示组件(layer.msg)
用于操作成功/失败等场景提示,支持图标、动画和自定义样式。
```javascript
// 基础提示(默认2秒关闭)
layer.msg('操作成功');
// 带图标提示(0:错误,1:成功,2:问号,3:锁,4:笑脸)
layer.msg('提交失败', {icon: 0, time: 3000});
// 带回调提示(关闭后执行)
layer.msg('请稍后', {
icon: 16,
time: 0, // 不自动关闭
btn: ['确定'],
yes: function(index){
layer.close(index);
console.log('点击了确定');
}
});
询问框组件(layer.confirm)
用于确认操作,支持自定义按钮和回调。

layer.confirm('确定删除该数据吗?', { btn: ['确定', '取消'], icon: 3, // 问号图标 '提示' }, function(index){ // 点击确定回调 layer.close(index); layer.msg('已删除', {icon: 1}); }, function(index){ // 点击取消回调 layer.close(index); });
选项卡组件(layer.tab) 展示,需配合 HTML 结构使用。
layer.tab({ area: ['600px', '300px'], tab: [{ '选项卡1', content: '内容1' }, { '选项卡2', content: '内容2' }] });
样式与事件扩展
自定义弹层样式
通过 style
参数可自定义弹层样式,
layer.open({ type: 0, content: '自定义样式内容', style: 'border-radius: 10px; background-color: #f8f9fa;' });
事件监听
弹层支持 success
(打开成功回调)、end
(关闭后回调)等事件:
layer.open({ type: 0, content: '内容', success: function(layero, index){ console.log('弹层已打开,索引:', index); $(layero).find('.layui-layer-btn0').click(function(){ console.log('点击了确定按钮'); }); }, end: function(){ console.log('弹层已关闭'); } });
注意事项
- 依赖顺序:必须先引入 jQuery,再引入 Layer UI,否则会报错。
- 版本兼容:Layer UI 3.x 版本仅支持 jQuery 1.8+,旧版项目需注意版本匹配。
- 组件销毁:非自动关闭的弹层(如
layer.open
)需手动调用layer.close(index)
关闭,避免内存泄漏。 - 移动端适配:默认移动端弹层会全屏显示,可通过
resize
事件调整尺寸:$(window).resize(function(){ layer.full(layer.index); // 重新适配弹层 });
相关问答 FAQs
问题1:Layer UI 如何实现弹层中的表单提交?
解答:在弹层 success
回调中绑定表单提交事件,注意关闭弹层和重载页面,示例:
layer.open({ type: 1, content: $('#formHtml'), // 表单的DOM元素 area: ['500px', '300px'], success: function(){ $('#submitBtn').click(function(){ var formData = $('#myForm').serialize(); $.post('/api/submit', formData, function(res){ if(res.code === 0){ layer.msg('提交成功', {icon: 1}); layer.closeAll(); // 关闭所有弹层 location.reload(); // 重载页面 }else{ layer.msg(res.msg, {icon: 2}); } }); }); } });
问题2:Layer UI 如何与 Vue 或 React 等框架结合使用?
解答:由于 Layer UI 依赖 jQuery,需在框架中通过 ref
或 useEffect
获取 DOM 元素,并在组件挂载后初始化,以 Vue 为例:
export default { mounted() { this.$nextTick(() => { this.openLayer(); }); }, methods: { openLayer() { layer.open({ type: 1, content: this.$refs.layerContent.innerHTML, area: ['400px', '300px'] }); } }, template: ` <div> <div ref="layerContent" style="display:none;"> <p>这是Vue组件中的内容</p> </div> <button @click="openLayer">打开弹层</button> </div> ` };
注意:在框架中使用时,需确保 Layer UI 的 layer
对象在全局可访问(如挂载到 window
)。
通过以上方法,可灵活运用 Layer UI 快速构建交互友好的前端界面,开发者可根据实际需求选择组件和参数组合,实现多样化功能。