菜鸟科技网

Layer UI具体怎么用?

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

Layer UI具体怎么用?-图1
(图片来源网络,侵删)

环境准备与基础引入

使用 Layer UI 需要先搭建基础环境,确保项目中已引入 jQuery(版本需与 Layer UI 兼容,建议 jQuery 1.8-1.11 或 2.x),然后通过以下方式引入 Layer UI 的核心文件:

  1. 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),若需自定义主题,可下载源码后修改样式文件。

  2. 本地文件引入
    下载 Layer UI 源码(官网或 GitHub),将 dist 目录中的 layer.csslayer.js 放入项目,按顺序引入 jQuery 和 Layer UI 文件。

    Layer UI具体怎么用?-图2
    (图片来源网络,侵删)

核心概念:模块化调用

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: '

这是一个页面层内容
', area: ['300px', '200px'] });

| `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 UI具体怎么用?-图3
(图片来源网络,侵删)
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('弹层已关闭');
  }
});

注意事项

  1. 依赖顺序:必须先引入 jQuery,再引入 Layer UI,否则会报错。
  2. 版本兼容:Layer UI 3.x 版本仅支持 jQuery 1.8+,旧版项目需注意版本匹配。
  3. 组件销毁:非自动关闭的弹层(如 layer.open)需手动调用 layer.close(index) 关闭,避免内存泄漏。
  4. 移动端适配:默认移动端弹层会全屏显示,可通过 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,需在框架中通过 refuseEffect 获取 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 快速构建交互友好的前端界面,开发者可根据实际需求选择组件和参数组合,实现多样化功能。

分享:
扫描分享到社交APP
上一篇
下一篇