点了保存按钮页面没反应,用户不知道成没成功,这种体验缺口一个弹层就能补上。layer 是 layui 体系里最常用的弹层组件,单独一个 layer.js 加上 jQuery 就能跑,不用搬整套框架。

引入和最简单的提示

先引 jQuery,再引 layer.js,一行代码出提示:

layer.msg('保存成功'); layer.msg('加载中', {icon: 16, time: 2000});

icon 控制图标,1 是对勾 2 是叉 16 是转圈,time 单位毫秒到点自动消失,不想带图标传 0。加载遮罩也常用:layer.load(2) 出转圈,请求结束配 layer.closeAll('loading') 收掉,接口慢的时候别让用户连点。

确认框和页面层

layer.confirm('确定删除这条记录吗', {icon: 3, title: '提示'}, function(index){ layer.close(index); });

回调里的 index 是这层的编号,close 它就关了弹层,删除逻辑写在回调里。弹自己写好的 DOM 块用 type 1 加 content 指向选择器;弹内嵌页面用 type 2,content 写地址。后台系统里嵌个表单页,大概长这样:

layer.open({type: 2, title: '编辑', area: ['800px', '600px'], content: 'edit.html'});

area 定宽高,遮罩和关闭按钮都有默认值,多数情况不用挨个配,end 回调在弹层销毁后触发,刷新列表写在里面。

不弹和被挡住的处理

弹层完全不出现,九成是加载顺序:layer.js 必须在 jQuery 之后引入,控制台报 layer is not defined 就是这个原因。弹出来但被别的元素盖住,一般是页面里有人动过全局 z-index,层级比 layer 默认的还高,把那个元素调低即可。

场景取舍:成功失败提示用 msg,要用户做决定用 confirm,复杂表单和长内容用 open。组件再花哨也就这几类,别把一个提示写成三层弹窗套娃。