详解Layer弹出层样式


Posted in Javascript onAugust 21, 2017

前言:学习layer弹出框,之前项目是用bootstrap模态框,后来改用layer弹出框,在文章的后面,我会分享项目的一些代码(我自己写的)。

layer至今仍作为layui的代表作,她的受众广泛并非偶然,而是这五年多的坚持,不断完善和维护、不断建设和提升社区服务,使得猿们纷纷自发传播,乃至于成为今天的Layui最强劲的源动力。目前,layer已成为国内最多人使用的web弹层组件,GitHub自然Stars3000+,官网累计下载量达30w+,大概有20万Web平台正在使用layer。 具体请移步layer官网,http://www.layui.com/doc/modules/layer.html

这篇博客会引用官网的一些内容,主要是写写layer的一些难点。比如如何用layer打开一个新的网页,content直接为一个网址就可以了,但是在你的项目中,这个网址又是啥??HTML的直接路径? 相对路径??都不是!! layer如何获取父界面的元素,比如我点击新增按钮,在layer框编辑后提交,是如何关闭当前layer框,额,关闭layer框很简单,但是如何关闭后根据父界面的form表单向后台发起Ajax请求,,刷新信息。即:layer子界面如何调用父界面的方法。

如果你不想使用Layui,而只是想使用layer,你可以去layer独立组件官网下载组件包。你需要在你的页面引入jQuery1.8以上的任意版本,并引入layer.js。

<script src="jQuery的路径"></script>
<script src="layer.js的路径"></script>
<script>
//弹出一个页面层
$('#test2').on('click', function(){
 layer.open({
 type: 1,
 area: ['600px', '360px'],
 shadeClose: true, //点击遮罩关闭
 content: '\<\div style="padding:20px;">自定义内容\<\/div>'
 });
});
</script>

title - 标题

类型:String/Array/Boolean,默认:'信息'

title支持三种类型的值,若你传入的是普通的字符串,如title :'我是标题',那么只会改变标题文本;若你还需要自定义标题区域样式,那么你可以title: ['文本', 'font-size:18px;'],数组第二项可以写任意css样式;如果你不想显示标题栏,你可以title: false

content - 内容

类型:String/DOM/Array,默认:''

content可传入的值是灵活多变的,不仅可以传入普通的html内容,还可以指定DOM,更可以随着type的不同而不同。譬如:

/!*
 如果是页面层
 */
layer.open({
 type: 1, 
 content: '传入任意的文本或html' //这里content是一个普通的String
});
layer.open({
 type: 1,
 content: $('#id') //这里content是一个DOM,注意:最好该元素要存放在body最外层,否则可能被其它的相对元素所影响
});
//Ajax获取
$.post('url', {}, function(str){
 layer.open({
 type: 1,
 content: str //注意,如果str是object,那么需要字符拼接。
 });
});
/!*
 如果是iframe层
 */
layer.open({
 type: 2, 
 content: 'http://sentsin.com' //这里content是一个URL,如果你不想让iframe出现滚动条,你还可以content: ['http://sentsin.com', 'no']
}); 
/!*
 如果是用layer.open执行tips层
 */
layer.open({
 type: 4,
 content: ['内容', '#id'] //数组第二项即吸附元素选择器或者DOM
});

   btn - 按钮

类型:String/Array,默认:'确认'

信息框模式时,btn默认是一个确认按钮,其它层类型则默认不显示,加载层和tips层则无效。当您只想自定义一个按钮时,你可以btn: '我知道了',当你要定义两个按钮时,你可以btn: ['yes', 'no']。当然,你也可以定义更多按钮,比如:btn: ['按钮1', '按钮2', '按钮3', …],按钮1的回调是yes,而从按钮2开始,则回调为btn2: function(){},以此类推。如:

//eg1  
layer.confirm('纳尼?', {
 btn: ['按钮一', '按钮二', '按钮三'] //可以无限个按钮
 ,btn3: function(index, layero){
 //按钮【按钮三】的回调
 }
}, function(index, layero){
 //按钮【按钮一】的回调
}, function(index){
 //按钮【按钮二】的回调
});
//eg2
layer.open({
 content: 'test'
 ,btn: ['按钮一', '按钮二', '按钮三']
 ,yes: function(index, layero){
 //按钮【按钮一】的回调
 }
 ,btn2: function(index, layero){
 //按钮【按钮二】的回调
 //return false 开启该代码可禁止点击该按钮关闭
 }
 ,btn3: function(index, layero){
 //按钮【按钮三】的回调
 //return false 开启该代码可禁止点击该按钮关闭
 }
 ,cancel: function(){ 
 //右上角关闭回调
 //return false 开启该代码可禁止点击该按钮关闭
 }
});

success - 层弹出后的成功回调方法

类型:Function,默认:null

当你需要在层创建完毕时即执行一些语句,可以通过该回调。success会携带两个参数,分别是当前层DOM当前层索引。如:

layer.open({
 content: '测试回调',
 success: function(layero, index){
  console.log(layero, index);
 }
});

yes -确定按钮回调方法

类型:Function,默认:null

该回调携带两个参数,分别为当前层索引、当前层DOM对象。如:

layer.open({
 content: '测试回调',
 yes: function(index, layero){
  //do something
  layer.close(index); //如果设定了yes回调,需进行手工关闭
 }
});

cancel - 右上角关闭按钮触发的回调

类型:Function,默认:null

该回调携带两个参数,分别为:当前层索引参数(index)、当前层的DOM对象(layero),默认会自动触发关闭。如果不想关闭,return false即可,如;

cancel: function(index, layero){
 if(confirm('确定要关闭么')){ //只有当点击confirm框的确定时,该层才会关闭
  layer.close(index)
 }
 return false;
}

end - 层销毁后触发的回调

类型:Function,默认:null

无论是确认还是取消,只要层被销毁了,end都会执行,不携带任何参数。

layer.ready(callback) - 初始化就绪

由于我们的layer内置了轻量级加载器,所以你根本不需要单独引入css等文件。但是加载总是需要过程的。当你在页面一打开就要执行弹层时,你最好是将弹层放入ready方法中,如:

//页面一打开就执行弹层
layer.ready(function(){
 layer.msg('很高兴一开场就见到你');
}); 
layer.close(index) - 关闭特定层(比较重要)

关于它似乎没有太多介绍的必要,唯一让你疑惑的,可能就是这个index了吧。事实上它非常容易得到。

//当你想关闭当前页的某个层时
var index = layer.open();
var index = layer.alert();
var index = layer.load();
var index = layer.tips();
//正如你看到的,每一种弹层调用方式,都会返回一个index
layer.close(index); //此时你只需要把获得的index,轻轻地赋予layer.close即可
//如果你想关闭最新弹出的层,直接获取layer.index即可
layer.close(layer.index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
//当你在iframe页面关闭自身时
var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
parent.layer.close(index); //再执行关闭 
layer.getChildFrame(selector, index) - 获取iframe页的DOM

当你试图在当前页获取iframe页的DOM元素时,你可以用此方法。selector即iframe页的选择器   

layer.open({
  type: 2,
  content: 'test/iframe.html',
  success: function(layero, index){
   var body = layer.getChildFrame('body', index);
   var iframeWin = window[layero.find('iframe')[0]['name']]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
   console.log(body.html()) //得到iframe页的body内容
   body.find('input').val('Hi,我是从父页来的')
  }
 });

     layer.getFrameIndex(windowName) - 获取特定iframe层的索引

此方法一般用于在iframe页关闭自身时用到。

//假设这是iframe页
var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
parent.layer.close(index); //再执行关闭

 封装好的Layer弹出框与关闭layer弹出框的方法(代码周一给出, 现在手头没有代码)

总结

以上所述是小编给大家介绍的详解Layer弹出层样式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
ext form 表单提交数据的方法小结
Aug 08 Javascript
JavaScript中也使用$美元符号来代替document.getElementById
Jun 19 Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
Nov 08 Javascript
JavaScript中的比较操作符&gt;、=、
Dec 31 Javascript
js实现同一页面多个不同运动效果的方法
Apr 10 Javascript
js读取并解析JSON类型数据的方法
Nov 14 Javascript
js基本算法:冒泡排序,二分查找的简单实例
Oct 08 Javascript
React Native 截屏组件的示例代码
Dec 06 Javascript
Vue CLI 3搭建vue+vuex最全分析(推荐)
Sep 27 Javascript
vue指令之表单控件绑定v-model v-model与v-bind结合使用
Apr 17 Javascript
vue实现登录页面的验证码以及验证过程解析(面向新手)
Aug 02 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
Sep 27 Javascript
JS数组操作之增删改查的简单实现
Aug 21 #Javascript
JS实现评价的星星功能
Aug 20 #Javascript
详解A标签中href=&quot;&quot;的几种用法
Aug 20 #Javascript
Cropper.js 实现裁剪图片并上传(PC端)
Aug 20 #Javascript
Bootstrap 模态框(Modal)带参数传值实例
Aug 20 #Javascript
mui 打开新窗口的方式总结及注意事项
Aug 20 #Javascript
ES6扩展运算符的用途实例详解
Aug 20 #Javascript
You might like
YII路径的用法总结
2014/07/09 PHP
php array_multisort 对数组进行排序详解及实例代码
2016/10/27 PHP
php实现微信模板消息推送
2018/03/30 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
详解Laravel服务容器的绑定与解析
2019/11/05 PHP
JQuery 表单中textarea字数限制实现代码
2009/12/07 Javascript
js 跳出页面的frameset框架示例介绍
2013/12/23 Javascript
js中的setInterval和setTimeout使用实例
2014/05/09 Javascript
简介JavaScript中valueOf()方法的使用
2015/06/05 Javascript
JS实现的Select三级下拉菜单代码
2015/08/20 Javascript
jQuery实现的手机发送验证码倒计时效果代码分享
2015/08/24 Javascript
JavaScript Split()方法
2015/12/18 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
React实现双向绑定示例代码
2016/09/19 Javascript
JavaScript实现Fly Bird小游戏
2016/12/15 Javascript
JavaScript中使用参数个数实现重载功能
2017/09/01 Javascript
浅谈JS函数节流防抖
2017/10/18 Javascript
Vue中Axios从远程/后台读取数据
2019/01/21 Javascript
JavaScript常用事件介绍
2019/01/21 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
[02:04]2016国际邀请赛中国区预选赛VG.R晋级之路
2016/07/01 DOTA
使用python制作一个为hex文件增加版本号的脚本实例
2019/06/12 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
Python txt文件常用读写操作代码实例
2020/08/03 Python
html5 css3实例教程 一款html5和css3实现的小机器人走路动画
2014/10/20 HTML / CSS
美国最大网上鞋店:Zappos
2016/07/25 全球购物
英国领先的男士美容护发用品公司:Mankind
2016/08/31 全球购物
春节活动策划方案
2014/01/24 职场文书
中介公司区域经理岗位职责范本
2014/03/02 职场文书
有创意的广告词
2014/03/18 职场文书
物流专业专科生职业生涯规划书
2014/09/14 职场文书
2014物价局民主生活会对照检查材料思想汇报
2014/09/24 职场文书
销售经理岗位职责
2015/01/31 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书
TV动画《政宗君的复仇》第二季制作决定PV公布
2022/04/02 日漫