Layui 6 Layer 弹出层组件

在这里插入图片描述

1、概述

特殊:layer 单独使用。
在引入 layui.js 后,不需要加载 layer 模块 即可直接使用 全局变量 layer。

2、使用场景

作为独立组件使用 >

  • 不依赖 layui.css;(layer 内置了轻量级加载器,所以你根本不需要单独引入 css 等文件)
  • 不依赖 layui.js;
  • 依赖 jq;

作为 layui 模块化 使用

3、方法

.config()

  /**
  * @brief: layer 全局配置
  * @param {Object} opts
  * @return {*}
  */
 // layer.config(opts)
 
 layer.config({
   anim: 3, // 动画从左滑入
   skin: 'layui-layer-molv', //默认皮肤
   offset: ['100px', '50px'], // 自定义位置
   extend: 'myskin/style.css', // 使用功能拓展的皮肤
 })

【说明】
1、重要
权重很大,模块化加载 layer 时,必须用到它;
配置路径、加载模块;
设置弹层默认参数;
2、不重要
不怎么用到,但是要知道有这么个 api;
但不是经常用到;

【示例】全局layer 配置?

.ready()

【场景】由于我们的 layer 内置了轻量级加载器,所以你根本不需要单独引入 css 等文件。

【解决】 但是加载总是需要过程的。当你在页面一打开就要执行弹层时,你最好是将弹层放入 ready 方法中。

【总结】虽然 layer 内置了加载器,但加载卡顿时,会造成样式后出来,所以会有弹出层样式闪动现象。这时就需要使用 layer.ready()

layer.ready(function () {
  // 在layer初始化就绪后,再执行 layer.msg()
  layer.msg('很高兴一开场就见到你')
})

【示例】layer 加载完成后执行

.open()

【简介】
露脸率最高的方法;
不管是使用哪种方式创建层,都是走 layer.open();

【语法】

/**
* @brief: 打开信息提示框;
* @param {Object} options, layer配置参数;
* @return {number} index 返回一个当前层的索引值
* #序号索引值 不是随机的;(按当前存在/未关闭 layer 从 1 开始自增赋值)1, 2, 3...)
* !序号索引值 作为 关闭层 api layer.close(index) 传入的参数(作为定位某个层的手段);
*/
// var index = layer.open(options)

【示例】layer 加载完成后执行

下面 api 打开不同样式的提示框。

.alert()

/**
* @brief: 普通信息框;(有些高调,一般用于对用户造成比较强烈的关注)
* 类似系统 alert,但却比 alert 更灵便。
* @param {String} text, 提示信息的内容;
* @param {Object} options, layer配置参数;
* @param {Function} callback(index), 点击“确定”按钮后执行的回调;
* index, 当前提示框 index 索引值;
* ! 参数自动向左补齐,第2,3参数都可略去;
* @return {*}
*/
//  layer.close(text[, options], callback(index))

// eg1: 纯文字提示
// layer.alert('只想简单的提示');

// eg2: 加了个图标
// layer.alert('加了个图标', { icon: 1 }); //这时如果你也还想执行yes回调,可以放在第三个参数中。

//eg3
layer.alert('有了回调', function (index) {
  //do something

  layer.close(index)
  console.log('alert框, yesCallback')
})

【示例】layer 加载完成后执行

.confirm()

/**
* @brief: 打开信息提示框;
* 类似系统 confirm,但却远胜 confirm,另外它 **不是和系统的 confirm 一样阻塞** 你需要把交互的语句放在回调体中。
* @param {String} text, 提示信息的内容;
* @param {Object} options, layer配置参数;
* @param {Function} callback(index), 点击“确定”按钮后执行的回调;
* index, 当前提示框 index 索引值;
* ! 参数自动向左补齐,第2,3参数都可略去;
* @return {*}
*/
//  layer.confirm(text[, options], callback(index))

//eg1
layer.confirm(
  'is not?',
  { icon: 3, title: '提示' },
  function (index) {
    //do something
    console.log('确认后的回调', '索引值', index)
    layer.close(index)
  },
  function (index) {
    console.log('取消后的回调', '索引值', index)
    layer.close(index)
  }
)

【示例】layer 加载完成后执行

.msg()

/**
* @brief: 轻提示弹窗;
* 使用频率很高;(轻提示);默认 3s 自动消失;
* @param {String} content, 提示文本内容;
* @param {Object} [, options], 配置参数项;
* @param {Function} [, end], 执行结束的回调;
* @return {*}
*/
// layer.msg(content[, options][, end])

//eg1
// layer.msg('只想弱弱提示');

// //eg2
// layer.msg('有表情地提示', { icon: 6 });

// //eg3
// layer.msg('关闭后想做些什么', function () {
//   //do something
// });

//eg
layer.msg(
  '同上',
  {
    icon: 1,
    time: 2000, // 2秒关闭(如果不配置,默认是3秒)
  },
  function () {
    //do something
    console.log('文字提示结束后,执行')
  }
)

【示例】layer 加载完成后执行

.load()

/**
* @brief: 新建加载层;
* ! 注意1:load 默认是不会自动关闭的,因为你一般会在 ajax 回调体中关闭它。
* ! 注意2:弹出层未关闭时,底部内部不允许点击。
* @param {number} [type], 配置参数项;对应3种不同的加载层动画;
* 值:
* 0(默认) 
* 1 
* 2 
* @return {*}
*/

【type 参数对应的加载动画】0,1,2 分别对应下图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
【示例】load 加载层

.tips()

/**
* @brief: 吸附弹出框(默认是在元素右边弹出,可 智能定位,即灵活地判断它应该出现在哪边)
* @param {String} content, 提示文本内容
* @param {String} follow, 吸附的容器
* #值:jq选择器
* #this:指向事件回调调用者元素;
* @param {Object} [, options], 配置参数项;
* @return {*}
*/
// layer.tips(content, follow[, options])

【示例1】

// 置为已评价提示语
$('.setEvaluate').mouseover(function () {
  // 鼠标引入时出现吸附提示框
  tips_index = layui.layer.tips(
    "<span style='color:black;font-size: 14px;'>只能将已完成状态的任务置为已评价</span>",
    this, // 吸附在当前事件调用者容器上
    { tips: [3, '#D3D3D3'], area: ['auto', 'auto'], time: 0 }
  )
})

渲染如下:
在这里插入图片描述

【示例】吸附弹出层

.close()

/**
* @brief: 关闭指定弹出层
* @param {Number} layerIndex, 关闭弹层的索引值
* #常规值:某个弹层的索引值
* #layer.index:获取的始终是最新弹出的某个层的索引值,值是由layer内部动态递增计算的
* !特殊:iframe 页面关闭自身
* var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
* parent.layer.close(index) // 再关闭
* @param {Function} [, callback], 关闭弹出层后执行的回调
* #layui 2.6.5、layer 3.4.0 新增
* @return {*}
*/
// layer.close(layerIndex [, callback]);

【示例】关闭某个弹出层

.closeAll()

/**
* @brief: 关闭(某个类型的)所有弹出层
* @param {Number} [type], 弹层类型
* 无参:关闭所有弹出层
* "dialog", 信息框
* "page", 页面层
* "iframe", iframe层
* "loading", 加载层
* "tips", tips层
* @return {*}
*/
// layer.closeAll([type]);

【示例】关闭所有弹出层

.style()

/**
* @brief: 重新给层设置样式
* !对 loading 层和 tips 层无效
* @param {Number} index, 某层的索引值
* @param {Object} options, 任意的(大驼峰)CSS样式名&键值对
* @return {*}
*/
// layer.style(index, options);
// 对loading层和tips层无效

【示例】单独给层设置样式

.title()

/**
* @brief: 改变层的标题
* @param {String} text, 层标题文字;
* @param {Number} index, 对应层索引值;
* @return {*}
*/
// layer.title(text, index)

【示例】层标题

.getChildFrame()

/**
* @brief: (当前页)获取 ifram页的 DOM元素
* !这里的 demo 需要服务端支持,否则会报跨域错误;
* @param {String} selector 选择器,即需要获取的iframe页的 元素的选择器
* @param {Number} index 弹出层索引值
* @return {*}
*/
// var body = layer.getChildFrame("body", index);
// 再做其它操作
body.find('input').val('Hello layer')

【示例】获取 iframe 页

.getFrameIndex()

// 用于在 iframe 页内部获取当前 iframe 弹层的索引,以便关闭自身。
var index = parent.layer.getFrameIndex(window.name) // 获取当前 iframe 层的索引
parent.layer.close(index) // 关闭当前 iframe 层

.iframeAuto(index)

可让 iframe 高度跟随内容自适应。

layer.open({
  type: 2, // iframe 层
  content: '/layer/test/iframe.html',
  area: '600px', // 弹层初始宽度
  success: function(layero, index, that){
    layer.iframeAuto(index); // 让 iframe 高度自适应
    that.offset(); // 重新自适应弹层坐标
  }
});

【示例】iframe 层高度自适应

.iframeSrc()

/**
 * @brief: 重新设置 iframe 层 URL
 * @param {number} index 打开弹层时返回的唯一索引
 * @param {string} url URL地址
 * @return {*}
 */

layer.iframeSrc(index, url)


// 示例
// 打开弹层
var index = layer.open({
  type: 2, // iframe 层
  content: '/layer/test/iframe.html'
}); 
// 重置 iframe 页面 URL
layer.iframeSrc(index, 'https://cn.bing.com/');

【示例】重新设置 iframe 层 URL

.setTop()

【语法】

// 多弹层模式的层叠顺序置顶
layer.open({
  type: 1, // 页面层
  shade: false,
  area: ['520px', '320px'],
  maxmin: true,
  content: '<div style="padding: 16px;">多弹层模式的层叠顺序置顶</div>',
  zIndex: layer.zIndex, // 重点 1 --- 初始设置当前最高层叠顺序,
  success: function(layero){
    layer.setTop(layero); // 重点 2 --- 保持选中窗口置顶
  }
});

【示例】置顶某个层

.full(), .min(), .restore()

【语法】

// 执行最大化
layer.full(index)

// 执行最小化
layer.min(index)

// 还原弹层
layer.restore(index)

【示例】最大最小还原层

4、基础参数

type

【键】设置弹窗基本类型。
【键值】{number}

  • 0 信息框(默认)
  • 1 页面层
  • 2 iframe层
  • 3 加载层
  • 4 tips层

【渲染】
0 信息框(默认)
在这里插入图片描述
1 页面层在这里插入图片描述
2 iframe层
在这里插入图片描述
3 加载层
在这里插入图片描述
4 tips层
在这里插入图片描述
【示例】不同弹窗类型

title

【键】设置标题内容和样式。
【键值】
{string} 纯文本,示例:‘我是标题’
{array} 数组参数(字符串内容+样式),示例:[‘标题文本’, ‘font-size: 32px; color: red;’]
{boolean} false 不显示标题
tip: !不显示是连带 “标题”位置全部消失
【示例】标题

content

【键】设置弹窗内容。
【键值】

{string} 普通 html 内容(会解析 html) , 示例:'<h2>content参数配置的:普通html内容</h2>'

{dom} jq选择器
!注意1:最好该元素要存放在 body 最外层(body内一级位置),否则可能被其他的相对元素所影响(下面的 p#contentdom)
!注意2:type: 2 时正常; type: 1 时会出现 [object, object]
!注意3:作为 dom 的弹窗内容默认应该是隐藏的

【示例】主体内容

skin

【键】设置样式类名。
全局使用:使用 layer.config({skin: ‘xxx’}) 可设置 layer 的皮肤。
【键值】
(默认值)例如 ‘layui-layer-molv’, ‘layui-layer-lan’
在这里插入图片描述
(自定义值)
1、自定义的 class 名(下面的 demo-class)(定义在上面的 style 标签内)

const opts = {
	skin: 'demo-class',
}

2、定义皮肤对应的样式;

/* skin 对应 自定义样式名 ----------------------start */
body .demo-class .layui-layer-title {
  /* 标题区域 */
  background: #c00;
  color: #fff;
  border: none;
}

body .demo-class .layui-layer-btn {
  /* 按钮区域上方的分割线 */
  border-top: 1px solid #e9e7e7;
}

body .demo-class .layui-layer-btn a {
  /* 确定按钮 */
  background: #333;
}

body .demo-class .layui-layer-btn .layui-layer-btn1 {
  /* 取消按钮 */
  background: #999;
}

#contentdom {
  width: 40px;
}
/* skin 对应 自定义样式名 ----------------------start */

3、渲染皮肤如下;
在这里插入图片描述

【注意】单个配置skin的优先级更高。

【示例】自定义皮肤

area

【键】设置弹出层区域尺寸。
【键值】
{string}
‘auto’ 默认状态下,layer 是宽高都自适应的;
‘600px’ 一个值,自定义宽度,高度自适应;
{array}
[‘600px’, ‘400px’] 宽高都自定义 (原先内容可能会溢出)

【示例】尺寸大小

maxWidth

【键】设置弹出层最大宽。
【键值】
{string|number} 360 默认最大宽度尺寸

【示例】最大宽

maxHeight

【键】设置弹出层最大宽。
【键值】
{string|number} 240 默认最大高度尺寸

【注意】
只有当 area 值为 ‘auto’ 时, maxWidth, maxHeight 的设定值才有效。
!且这里不需要 px 单位

【示例】最大高

offset

【键】弹出层偏移位置。
【键值】
{string}
(1)一个值;
‘auto’ (默认) 水平&垂直 都居中。
‘100px’ 只有一个值,只定义 top 坐标,水平保持居中。
(2)快捷值
‘t’ : 快捷设置顶部坐标;
‘r’ : 快捷设置右边缘坐标;
‘b’ : 快捷设置底部坐标;
‘l’ : 快捷设置左边缘坐标;
‘lt’ : 快捷设置左上角;
‘lb’ : 快捷设置左下角;
‘rt’ : 快捷设置右上角;
‘rt’ : 快捷设置右下角;

{array}
(3)2个值;
[‘100px’, ‘50px’]

【示例】最大高

icon

【键】设置 信息框 & 加载层 图标。
【键值】{|number}

  • -1 不显示图标;
  • 0 "黄色-叹号"图标;
  • 1 "绿色-对号"图标;
  • 2 "红色-叉号"图标;
  • 3 "黄色-问号"图标;
  • 4 "灰色-锁"图标;
  • 5 "橙色-苦脸"图标;
  • 6 "绿色-笑脸"图标;

【渲染】
0:
在这里插入图片描述
1:
在这里插入图片描述

2:
在这里插入图片描述
3:
在这里插入图片描述
4:
在这里插入图片描述
5:

在这里插入图片描述
6:
在这里插入图片描述

【示例】最大宽

btn, yes/btn1, btn2, …

【键】type: 0 弹出层为信息框时,btn默认是一个确认按钮。
!其他层类型默认不显示;加载层和 tips 层则无效。
【键值】
{string} 定义一个按钮时,用字符串表示。例如:‘我知道了’
{array} 定义多个按钮时,用数组格式表示,字符串元素为按钮文字。例如:[‘yes’, ‘no’],[‘按钮 1’, ‘按钮 2’, ‘按钮 3’]

【按钮对应回调】
按钮 1 的回调是 yes/btn1: function(){ };
而从按钮 2 开始,则回调为 btn2: function(){},以此类推。
【示例】最大宽

btnAlign

【键】按钮对齐方式。
【键值】{string}

  • ‘l’ 按钮左对齐;
  • ‘c’ 按钮居中对齐;
  • ‘r’ 按钮右对齐;(默认值)

closeBtn

【键】关闭按钮风格。
【键值】{number}

  • 0:不显示
  • 1:风格1;(默认)样式为旋转45度的十字图标;
  • 2:风格2;定位在右上角的圆形关闭图标;

【渲染】
1:
在这里插入图片描述
2:
在这里插入图片描述
【示例】最大宽

cancel

【键】右上角关闭按钮触发的回调。
【键值】{function}

/**
* @brief: 右上角关闭按钮触发的回调
* @param {number} index 当前层索引参数
* @param {number} layero 当前层的 DOM 对象
*/
cancel: function(index, layero) {

}

【示例】最大宽

end

【键】层结束的回调。
!!无论是确认还是取消,只要层被销毁了,end 都会执行,不携带任何参数
【键值】{function} 回调无参

end: function () {
 console.log('层-结束的回调')
},

【示例】最大宽

shade

【键】配置遮罩。
【键值】
{number} 小数,设置遮罩透明度;

{array} 定义透明度和颜色。例如:[0.8, ‘#00f00’]。

【示例】遮罩样式

shadeClose

【键】是否点击遮罩关闭。
【键值】{boolean}
false (默认)点击遮罩不关闭。
true 关闭

【示例】点击遮罩关闭

time

【键】设置自动关闭弹出层所需的毫秒数。
tip:默认不会自动关闭,且自动关闭前手动关闭仍有用。
【键值】{number} 例如:4000。
【示例】层自动关闭

id

【键】用于控制弹层唯一标识。
!设置该值后,不管是什么类型的层,都只允许同时弹出一个
!一般用于页面层和 iframe 层模式。
【键值】{number} 默认 0,例如:2000。
【示例】层 id 值限制同时只能出现一个

anim

【键】弹出动画。
兼容:我们的出场动画全部采用 CSS3。这意味着除了 ie6-9,其它所有浏览器都是支持的。
!v3.0 之前的版本用的是 shift 参数。
【键值】{number}

  • -1:关闭;
  • 0:平滑放大(默认);
  • 1 从上滑落;
  • 2 从最底部往上滑入
  • 3 从左滑入;
  • 4 从左翻滚
  • 5 渐显;
  • 6 抖动;

【示例】层弹出动画

isOutAnim

【键】关闭动画。
版本:layer 3.0.3 新增。
!该参数值对 type:1 和 type:2 有效。
一般保持默认即可。
【键值】{boolean}
true (默认)默认情况下,关闭层时会有一个过度动画。
false 不想开启。

【示例】层弹出动画

fixed

【键】鼠标滚动时,层是否固定在可视区域。
【键值】{boolean}
true (默认)层是固定的,页面滚动,层不动。
false 不固定后,层随页面滚动而滚动。
【示例】层弹出动画

resize

【键】层是否允许拉伸。
!该参数对 loading, tips 层无效
【键值】{boolean}
true (默认)可以在弹层右下角拖动来拉伸尺寸(仅右下角可用)。
false 不允许,屏蔽该功能。
【示例】层弹出动画

scrollbar

【键】是否允许浏览器出现滚动条。
!该参数对 loading, tips 层无效
【键值】{boolean}
true (默认)层打开后,允许浏览器滚动。
false 弹窗打开后,不允许浏览器出现滚动条。
【示例】层弹出动画

zIndex

【键】设置层层叠顺序。
!!实际渲染的值会比设置的值大1
【键值】{number} 例如:1212

【示例】层弹出动画
渲染:
在这里插入图片描述

move

【键】触发层拖拽的元素。(指向元素的 选择器|DOM)
【键值】
{string} ‘.layui-layer-title’ 默认是触发标题区域拖拽。
{boolean} false 禁止拖拽。
{HTMLElement} div dom元素
【示例】层弹出动画

moveOut

是否允许拖拽到窗口外。
false (默认)只能在窗口内拖拽。

moveEnd

/**
* @brief: 拖动完毕后的回调方法
* @param {dom} layero 为当前层的 DOM 对象
* @return {function}
*/
moveEnd: function (layero) {
 console.log('弹层拖动完毕')
 console.log(layero.html())
},

tips

【键】tips 层的私有参数。
【键值】
{number} 支持 上, 右, 下, 左 四个方向 (1, 2, 3, 4)
{array} [1, ‘#c00’],还可以定义一些颜色。
【示例】层弹出动画

tipsMore

是否允许多个 tips。
false(默认)不允许多个 tips。
【示例】层弹出动画

success

/**
* @brief: 层创建完毕时执行的回调
* @param {HTMLElement} layero 当前层 DOM对象
* @param {number} index 当前层的索引值
*/
success: function (layero, index) {
 console.log(layero.html())
 setTimeout(function () {
   layer.close(index)
 }, 2000)
},

【示例】层弹出动画

maxmin

【键】是否开启标题栏的最大化和最小化图标。。
【键值】{boolean}
false (默认)不允许最大最小化。
true 开启~,见下。
在这里插入图片描述
【示例】最大最小化

回调

  • end 结束的回调;(涉及到 btn 配置项)
  • full 最大化后 触发的回调;
  • min 最小化后 触发的回调;
  • restore 还原后触发的回调;
  • minStack 是否默认堆叠在左下角

【示例】层弹出动画

5、其它层

见文档,暂未用到 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值