《Layui宇宙版教程》提供2000人的QQ群进行交流学习,QQ群号:1046961650,或通过手机QQ扫描二维码进入:
1.18.44 layer.closeAll(type)关闭所有层
如果不想获取index而实现关闭弹层时,可以使用closeAll方法。如果不指定层类型的话,它会销毁当前页面中所有的layer层。当然,如果只想关闭某个类型的层,那么可以使用如下代码:
layer.closeAll(); //疯狂模式,关闭所有层
layer.closeAll('dialog'); //关闭信息框
layer.closeAll('page'); //关闭所有页面层
layer.closeAll('iframe'); //关闭所有的iframe层
layer.closeAll('loading'); //关闭加载层
layer.closeAll('tips'); //关闭所有的tips层
测试代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="layui/css/layui.css">
<script src="js/jquery3.5.1.js"></script>
</head>
<body>
<input type="button" value="closeAll" id="closeAll">
<form class="layui-form" action="">
<div class="layui-form-item" style="width: 500px;margin: 400px;"">
<label class=" layui-form-label">输入框</label>
<div class="layui-input-block">
<input type="text" id="username" name="username" required lay-verify="required" placeholder="请输入标题" autocomplete="off"
class="layui-input">
</div>
</div>
<div class="layui-form-item" style="width: 500px;margin: 400px;"">
<label class=" layui-form-label">输入框</label>
<div class="layui-input-block">
<input type="text" id="password" name="password" required lay-verify="required" placeholder="请输入标题" autocomplete="off"
class="layui-input">
</div>
</div>
</form>
<script src="layui/layui.all.js"></script>
<script>
var form = layui.form;
var layer = layui.layer;
layer.open({
type: 4,
tips: [2, 'red'],
content: ['账号不能为空', '#username'],
tipsMore: true,
shade: false,
fixed: false
});
layer.open({
type: 4,
tips: [2, 'red'],
content: ['密码不能为空', '#password'],
tipsMore: true,
shade: false,
fixed: false
});
$("#closeAll").click(function() {
layer.closeAll();
});
</script>
</body>
</html>
1.18.45 layer.style(index, cssStyle)重新定义层content中的样式
该方法对loading层和tips层无效。参数index为层的索引,cssStyle允许传入任意的css属性:
layer.style(index, {
width: '1000px',
top: '10px'
});
测试代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="layui/css/layui.css">
<script src="js/jquery3.5.1.js"></script>
</head>
<body>
<script src="layui/layui.all.js"></script>
<script>
var layer = layui.layer;
var index = layer.open({
type: 1,
content: "我是弹出层1",
shade: false
});
setTimeout(function() {
layer.style(index, {
width: '800px',
backgroundColor: 'green',
});
}, 3000);
</script>
</body>
</html>
1.18.46 layer.title(title, index)改变层的标题
使用方式:layer.title('标题变了', index)
测试代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="layui/css/layui.css">
<script src="js/jquery3.5.1.js"></script>
</head>
<body>
<script src="layui/layui.all.js"></script>
<script>
var layer = layui.layer;
var index = layer.open({
type: 1,
content: "我是弹出层1",
shade: false
});
setTimeout(function() {
layer.title("zzzzzzzzzzzzzzzzzzzzzzzzzzzz", index)
}, 3000);
</script>
</body>
</html>
1.18.47 layer.getChildFrame(selector, index)获取iframe页的DOM
当试图在当前页获取iframe页的DOM元素时,可以用此方法。selector即iframe页的选择器
文件iframe.html代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
function testMethod() {
document.getElementById("divX").innerText = document.getElementById("divX").innerText + "__testMethod方法添加的文本__";
}
</script>
</head>
<body>
<div id="divX" style="background-color: red;color:white">我是Div,我在另外一个页面中!</div>
</body>
</html>
运行文件代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="layui/css/layui.css">
<script src="js/jquery3.5.1.js"></script>
</head>
<body>
<script src="layui/layui.all.js"></script>
<script>
layui.use('layer', function() {
var layer = layui.layer;
var index = layer.open({
type: 2,
content: 'iframe.html',
success: function(layero, index) {
var body = layer.getChildFrame('body', index);
$(body).find("div").append("__这条信息来自于父页面!");
var iframeWin = window[layero.find('iframe')[0]['name']]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
iframeWin.testMethod();
}
});
});
</script>
</body>
</html>
1.18.48 layer.getFrameIndex(windowName)获取特定iframe层的索引
一般用于在iframe页关闭自身时用到。
此方法在前面章节已经介绍完毕。
1.18.49 layer.iframeAuto(index)指定iframe层自适应
调用该方法时,iframe层的高度会重新进行适应
文件iframe.html测试代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
begin
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
end!
</body>
</html>
运行文件代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="layui/css/layui.css">
<script src="js/jquery3.5.1.js"></script>
</head>
<body>
<script src="layui/layui.all.js"></script>
<script>
layui.use('layer', function() {
var layer = layui.layer;
var index = layer.open({
type: 2,
content: 'iframe.html',
success: function(layero, index) {}
});
});
</script>
</body>
</html>
运行效果如图1-xx所示。
出现垂直滚动条,可以使用iframeAuto(index)方法设置高度自适应。
测试代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="layui/css/layui.css">
<script src="js/jquery3.5.1.js"></script>
</head>
<body>
<script src="layui/layui.all.js"></script>
<script>
layui.use('layer', function() {
var layer = layui.layer;
var index = layer.open({
type: 2,
content: 'iframe.html',
success: function(layero, index) {
layer.iframeAuto(index);
}
});
});
</script>
</body>
</html>
运行后没有垂直滚动条,iframe高度自适应了,如图1-xx所示。
1.18.50 layer.iframeSrc(index, url)重置特定iframe url
使用方式:layer.iframeSrc(index, 'http://sentsin.com')
文件iframe1.html代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
begin
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
end!
</body>
</html>
文件iframe2.html代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
newbegin
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
newend!
</body>
</html>
运行文件代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="layui/css/layui.css">
<script src="js/jquery3.5.1.js"></script>
</head>
<body>
<script src="layui/layui.all.js"></script>
<script>
var layer = layui.layer;
var index = layer.open({
type: 2,
content: 'iframe1.html',
success: function(layero, index) {
layer.iframeAuto(index);
}
});
setTimeout(function() {
layer.iframeSrc(index, "iframe2.html");
}, 3000);
</script>
</body>
</html>
1.18.51 layer.setTop(layero)置顶当前窗口
非常强大的一个方法,虽然一般很少用,但是当页面有很多很多layer窗口,需要像Window窗体那样点击某个窗口,该窗体就置顶在上面,那么setTop可以来轻松实现。
测试代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="layui/css/layui.css">
<script src="js/jquery3.5.1.js"></script>
</head>
<body>
<script src="layui/layui.all.js"></script>
<script>
var layer = layui.layer;
layer.open({
type: 2,
shade: false,
area: '500px',
content: 'http://www.layui.com',
zIndex: layer.zIndex, //重点1
success: function(layero) {
layer.setTop(layero); //重点2
}
});
layer.open({
type: 2,
shade: false,
area: '500px',
content: 'http://www.layui.com',
zIndex: layer.zIndex, //重点1
success: function(layero) {
layer.setTop(layero); //重点2
}
});
layer.open({
type: 2,
shade: false,
area: '500px',
content: 'http://www.layui.com',
zIndex: layer.zIndex, //重点1
success: function(layero) {
layer.setTop(layero); //重点2
}
});
</script>
</body>
</html>
1.18.52 layer.full()、layer.min()、layer.restore()手工执行最大小化
文件iframe.html代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="layui/css/layui.css">
<script src="js/jquery3.5.1.js"></script>
</head>
<body>
<input type="button" value="full" id="full"><br />
<input type="button" value="min" id="min"><br />
<input type="button" value="restore" id="restore"><br />
<script src="layui/layui.all.js"></script>
<script>
$("#full").click(function() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.full(index);
});
$("#min").click(function() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.min(index);
});
$("#restore").click(function() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.restore(index);
});
</script>
</body>
</html>
运行文件代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="layui/css/layui.css">
<script src="js/jquery3.5.1.js"></script>
</head>
<body>
<script src="layui/layui.all.js"></script>
<script>
var index = layer.open({
type: 2,
content: 'iframe.html',
shade: false,
maxmin: true
});
</script>
</body>
</html>
1.18.53 layer.prompt(options, yes)输入层
options不仅可支持传入基础参数,还可以传入prompt专用的属性。当然,也可以不传。yes回调方法携带value表单值,index索引,elem表单元素。
prompt层新定制的成员如下
{
formType: 1, //输入框类型,支持0(文本)默认1(密码)2(多行文本)
value: '', //初始时的值,默认空字符
maxlength: 140, //可输入文本的最大长度,默认500
}
测试代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="layui/css/layui.css">
<script src="js/jquery3.5.1.js"></script>
</head>
<body>
<input type="button" value="button1" id="button1"><br />
<input type="button" value="button2" id="button2"><br />
<input type="button" value="button3" id="button3"><br />
<input type="button" value="button4" id="button4"><br />
<script src="layui/layui.all.js"></script>
<script>
$(document).ready(function() {
$("#button1").click(function() {
layer.prompt(function(value, index, elem) {
alert(value); //得到value
layer.close(index);
});
});
$("#button2").click(function() {
layer.prompt({
formType: 0,
value: '初始值',
title: '请输入值',
area: ['800px', '350px'] //自定义文本域宽高
}, function(value, index, elem) {
alert(value); //得到value
layer.close(index);
});
});
$("#button3").click(function() {
layer.prompt({
formType: 1,
value: '初始值',
title: '请输入值',
area: ['800px', '350px'] //自定义文本域宽高
}, function(value, index, elem) {
alert(value); //得到value
layer.close(index);
});
});
$("#button4").click(function() {
layer.prompt({
formType: 2,
value: '初始值',
title: '请输入值',
area: ['800px', '350px'] //自定义文本域宽高
}, function(value, index, elem) {
alert(value); //得到value
layer.close(index);
});
});
});
</script>
</body>
</html>
1.18.54 layer.tab(options)tab层
测试代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="layui/css/layui.css">
<script src="js/jquery3.5.1.js"></script>
</head>
<body>
<script src="layui/layui.all.js"></script>
<script>
layer.tab({
area: ['600px', '300px'],
tab: [{
title: 'TAB1',
content: '内容1'
}, {
title: 'TAB2',
content: '内容2'
}, {
title: 'TAB3',
content: '内容3'
}]
});
</script>
</body>
</html>
运行效果如图1-xx所示。
1.18.55 layer.photos(options)相册层
相册层,也可以称之为图片查看器。它的出场动画从layer内置的动画类型中随机展现。photos支持传入json和直接读取页面图片两种方式。
测试代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="layui/css/layui.css">
<script src="js/jquery3.5.1.js"></script>
</head>
<body>
<script src="layui/layui.all.js"></script>
<script>
layer.photos({
photos: {
"title": "", //相册标题
"id": 123, //相册id
"start": 1, //初始显示的图片序号,默认0
"data": [ //相册包含的图片,数组格式
{
"alt": "图片名",
"pid": 1, //图片id
"src": "4.png", //原图地址
"thumb": "" //缩略图地址
},
{
"alt": "图片名",
"pid": 2, //图片id
"src": "5.png", //原图地址
"thumb": "" //缩略图地址
}
]
},
anim: 5, //0-6的选择,指定弹出图片动画类型,默认随机。
tab: function(pic, layero) {
alert(pic); //当前图片的一些信息
}
});
</script>
</body>
</html>
运行效果如图1-xx所示。
官方网址:
中有若干常用使用案例,可以进行参考。