type |
弹层类型。 可选值有:
- `0` dialog 信息框(默认),*同时只能存在一个层*
- `1` page 页面层,*可同时存在多个层*
- `2` iframe 内联框架层,*可同时存在多个层*
- `3` loading 加载层,*同时只能存在一个层*
- `4` tips 贴士层,*可配置同时存在多个层*
`layer` 弹层由以上 5 种类型构成。 不同的类型代表不同的弹出形态,`layer` 提供的所有的弹出方式均由此衍生。
|
number |
`0`
|
title |
弹层标题。其值支持以下可选类型:
- 若为 `string` 类型 : 则表示为弹层的标题文本,如:
```
title: '标题'
```
- 若为 `array` 类型 : 则可设置标题文本和标题栏 CSS 样式:
```
title: ['标题', 'font-size: 18px;']
```
- 若为 `boolean` 类型 : 则可设为 `false` 不显示标题栏。
```
title: false // 不显示标题栏
```
|
string array boolean |
`信息`
|
[content](#options.content)
|
弹层内容。 可传入的值比较灵活,支持以下使用场景:
- 若 `type: 1`(页面层): 则 `content` 可传入值如下:
```
// 普通字符
layer.open({
type: 1,
content: '传入任意文本或 HTML'
});
// 捕获页面已存在的 DOM 元素或 jQuery 对象
layer.open({
type: 1,
content: $('#id') // 捕获层
});
```
注意: 若采用捕获层,则捕获的元素必须存放在 `` 根节点下,否则可能被父级容器的相对定位所影响。
- 若 `type: 2`(iframe 层): 则 `content` 可传入值如下:
```
// iframe URL
layer.open({
type: 2,
content: 'http://cn.bing.com' // URL
});
// 是否屏蔽 iframe 滚动条
layer.open({
type: 2,
// 数组第二个成员设为 no,即屏蔽 iframe 滚动条
content: ['http://cn.bing.com', 'yes']
});
```
- 若为其他弹层类型,传入普通字符即可。
相关效果可参考:[#示例](#demo-page)
|
[area](#options.area)
|
设置弹层的宽高,其值支持以下可选类型:
- 若为 `array` 类型,则可同时设置宽高
- `area: ['520px', '320px']` 固定宽度和高度
- `area: ['auto', '320px']` 宽度自动,高度固定
- `area: ['520px', 'auto']` 宽度固定,高度自动
- 若为 `string` 类型,则可定义宽度和宽高均自适应:
- `area: '520px'` 宽度固定,高度自适应
- `area: 'auto'` 宽度和高度均自适应
|
array string |
`auto`
|
maxWidth |
弹层的最大宽度。当 `area` 属性设置宽度自适应时有效。
|
number |
`360`
|
maxHeight |
弹层的最大高度。当 `area` 属性设置高度自适应时有效。
|
number |
- |
[offset](#options.offset)
|
弹层的偏移坐标。 支持以下可选值:
- `offset: 'auto'` 坐标始终垂直水平居中
- `offset: '16px'` 只设置垂直坐标,水平保持居中
- `offset: ['16px', '16px']` 设置垂直和水平坐标
- `offset: 't'` 上边缘
- `offset: 'r'` 右边缘
- `offset: 'b'` 下边缘
- `offset: 'l'` 左边缘
- `offset: 'rt'` 右上角
- `offset: 'rb'` 右下角
- `offset: 'lt'` 左上角
- `offset: 'lb'` 左下角
当设置边缘坐标时,可配合 `anim` 属性实现抽屉弹出效果。
|
string array |
`auto`
|
[anim](#options.anim)
|
弹层的出场动画。支持以下可选值:
- `anim: 0` 平滑放大。默认
- `anim: 1` 从上掉落
- `anim: 2` 从最底部往上滑入
- `anim: 3` 从左滑入
- `anim: 4` 从左翻滚
- `anim: 5` 渐显
- `anim: 6` 抖动
边缘抽屉动画 2.8+:
- `anim: 'slideDown'` 从上边缘往下
- `anim: 'slideLeft'` 从右边缘往左
- `anim: 'slideUp'` 从下边缘往上
- `anim: 'slideRight'` 从左边缘往右
抽屉动画一般配合 `offset` 属性实现边缘弹出。[#详见示例](#demo-more)
|
number string |
`0`
|
isOutAnim |
是否开启弹层关闭时的动画。
|
boolean |
`true`
|
maxmin |
是否开启标题栏的最大化和最小化图标。
|
boolean |
`false`
|
[closeBtn](#options.closeBtn)
|
是否开启标题栏的关闭图标,或设置关闭图标风格。
- `closeBtn: 0` 不显示关闭图标
- `closeBtn: 1` 关闭图标默认风格
- `closeBtn: 2` 关闭图标风格二
|
number |
`1`
|
[icon](#options.icon)
|
提示图标。 信息框和加载层的私有参数。
- 若为信息框,支持传入 `0-6` 的可选值。 默认为 `-1`,即不显示图标。
- 若为加载层,支持传入 `0-2` 的可选值
```
// eg1
layer.alert('成功提示', {icon: 1});
// eg2
layer.msg('开心表情', {icon: 6});
// eg3
layer.load(1); // 加载层风格一
```
|
number |
`-1`
|
[btn](#options.btn)
|
自定义按钮。 页面层默认不开启。 按钮可无限数量,每一个按钮均会按照数组顺序生成对应的回调函数,如:
```
// eg1
layer.confirm('询问框?', {
btn: ['按钮1', '按钮2', '按钮3']
});
// eg2
layer.open({
content: 'test',
btn: ['按钮1', '按钮2', '按钮3'],
// 按钮1 的回调
btn1: function(index, layero, that){},
btn2: function(index, layero, that){
// 按钮2 的回调
// return false // 点击该按钮后不关闭弹层
},
btn3: function(index, layero, that){
// 按钮3 的回调
// return false // 点击该按钮后不关闭弹层
}
});
```
|
string |
- |
[btnAlign](#options.btnAlign)
|
按钮水平对其方式。支持以下可选值:
- `btnAlign: 'l'` 按钮左对齐
- `btnAlign: 'c'` 按钮水平居中对齐
- `btnAlign: 'r'` 按钮右对齐。默认值,不用设置
|
string |
`r`
|
[btnAsync](#options.btnAsync) 2.9.12+
|
异步按钮。开启之后,除 `layer.prompt` 的按钮外,按钮回调的返回值将支持 `boolean | Promise | JQueryDeferred` 类型,返回 `false` 或 `Promise.reject` 时阻止关闭。
注意,此时 `yes` 和 `btn1`(两者等效) 回调的默认行为发生了变化,即由触发时不关闭弹层变为关闭弹层。
```
var sleep = function (time) {
return $.Deferred(function (defer) {
setTimeout(function () {
defer.resolve();
}, time)
})
}
// 下面以 confirm 层为例
layer.confirm('一个询问框的示例?', {
btnAsync: true,
btn: ['确定', '关闭'] // 按钮
},
function (index, layero, that) {
var defer = $.Deferred();
// 注: that.loading() 仅 btnAsync 开启后支持,参数为 boolean 类型,表示打开或关闭按钮的加载效果。
that.loading(true);
sleep(1000).then(defer.resolve);
return defer.promise();
}
);
```
|
boolean |
`false`
|
[skin](#options.skin)
|
弹层的主题风格。通过赋值对应的 className,实现对主题样式的定制。除了默认主题风格,还支持以下可选主题:
- `layui-layer-molv` 墨绿主题
- `layui-layer-lan` 深蓝主题
- `layui-layer-win10` Windows 10 主题 2.8+
还可传入其他任意 className 来自定义主题。 参考:[#示例](#demo-skin)
|
string |
- |
[shade](#options.shade)
|
弹层的遮罩。 支持以下写法:
- `shade: 0.3` 设置遮罩深色背景的透明度
- `shade: [0.3, '#FFF']` 设置遮罩透明度和颜色值
- `shade: 0` 不显示遮罩
|
number array |
`0.3`
|
shadeClose |
是否点击遮罩时关闭弹层。当遮罩存在时有效。
|
boolean |
`false`
|
id |
弹层的唯一索引值。 一般用于页面层或 iframe 层弹出时的状态识别,设置该属性可防止弹层的重复弹出。
|
string |
- |
hideOnClose 2.8.3+ |
关闭弹层时,是否将弹层设置为隐藏状态(而非移除),当再次打开,直接显示原来的弹层。 若设为 `true`,则必须同时设置 `id` 属性方可有效。
|
boolean |
`false`
|
time |
弹层自动关闭所需的毫秒数。 如 `time: 3000` ,即代表 3 秒后自动关闭。 提示框、加载层、Tips 层三种弹出模式默认开启。
|
number |
`0`
|
fixed |
弹层是否固定定位,即始终显示在页面可视区域。
|
boolean |
`true`
|
zIndex |
弹层的初始层叠顺序值。
|
number |
`19891014`
|
resize |
是否允许拖拽弹层右下角拉伸尺寸。 该属性对加载层和 tips 层无效。
|
boolean |
`true`
|
scrollbar |
打开弹层时,是否允许浏览器出现滚动条。
|
boolean |
`true`
|
minStack 2.6+ |
点击标题栏的最小化时,是否从页面左下角堆叠排列。
|
boolean |
`true`
|
removeFocus 2.8+ |
是否移除弹层触发元素的焦点,避免按回车键时重复弹出。
|
boolean |
`true`
|
move |
绑定弹层的拖拽元素。 默认为触发弹层的标题栏进行拖拽。也可以设置 `move: false` 禁止拖拽。
用法参考:[#示例](#demo-page)
|
string DOM boolean |
- |
moveOut |
否允许拖拽到窗口外
|
boolean |
`false`
|
tips |
设置 tips 层的吸附位置和背景色,tips 层的私有属性。
- 若为 `number` 类型,则支持 `1-4` 的可选值,分别代表*上右下左*的吸附位置。如: `tips: 1`
- 若为 `array` 类型,则支持设置吸附位置和背景色,如:
```
tips: [1, '#000'] // 吸附在上的深色贴士层
```
|
number array |
`2`
|
tipsMore |
是否允许同时存在多个 tips 层,即不销毁上一个 tips。
|
boolean |
`false`
|
[回调函数](#options.callback)
|
[success](#options.success)
|
打开弹层成功后的回调函数。返回的参数如下:
```
layer.open({
type: 1,
content: '内容',
success: function(layero, index, that){
// 弹层的最外层元素的 jQuery 对象
console.log(layero);
// 弹层的索引值
console.log(index);
// 弹层内部原型链中的 this --- 2.8+
console.log(that);
}
});
```
|
[yes](#options.yes)
|
点击「确定」按钮的回调函数。返回的参数同 `success`
```
layer.open({
content: '内容',
yes: function(index, layero, that){
// do something
layer.close(index); // 关闭弹层
}
});
```
|
[cancel](#options.cancel)
|
点击标题栏关闭按钮的回调函数。返回的参数同 `success`
```
layer.open({
content: '内容',
cancel: function(index, layero, that){
if(confirm('确定要关闭么')){
layer.close(index);
}
return false; // 阻止默认关闭行为
}
});
```
|
[beforeEnd](#options.beforeEnd) 2.9.11+
|
弹层被关闭前的回调函数。如果返回 false 或者 Promise.reject,将会取消关闭操作。
```
layer.open({
content: '',
/** @type {(layero: JQuery, index: number) => boolean | JQueryDeferred | Promise} */
beforeEnd: function(layero, index, that){
return $.Deferred(function(defer){
var el = layero.find('#id');
var val = el.val().trim();
if(val){
layer.confirm('关闭后您填写的内容将不会得到保存,确定关闭吗?', function (i) {
layer.close(i);
defer.resolve(true)
});
}else{
defer.resolve(true)
}
}).promise();
}
});
```
|
[end](#options.end)
|
弹层被关闭且销毁后的回调函数。
```
layer.open({
content: '内容',
end: function(){
console.log('弹层已被移除');
}
});
```
|
[moveEnd](#options.moveEnd)
|
弹层拖拽完毕后的回调函数。
```
layer.open({
type: 1,
content: '内容',
moveEnd: function(layero){
console.log('拖拽完毕');
}
});
```
|
[resizing](#options.resizing)
|
弹层拉伸过程中的回调函数
```
layer.open({
type: 1,
content: '内容',
resizing: function(layero){
console.log('拉伸中');
}
});
```
|
[full](#options.full)
|
弹层最大化后的回调函数。返回的参数同 `success`
```
layer.open({
type: 1,
content: '内容',
full: function(layero, index, that){
console.log('弹层已最大化');
}
});
```
|
[min](#options.min)
|
弹层最小化后的回调函数。返回的参数同 `success`
```
layer.open({
type: 1,
content: '内容',
min: function(layero, index, that){
// do something
// return false; // 阻止默认最小化
}
});
```
|
[restore](#options.restore)
|
弹层被还原后的回调函数。返回的参数同 `success`
```
layer.open({
type: 1,
content: '内容',
restore: function(layero, index, that){
console.log('弹层已还原');
}
});
```
|