详解Layer弹出层样式
前言:学习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。
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){ //按钮【按钮二】的回调 //returnfalse开启该代码可禁止点击该按钮关闭 } ,btn3:function(index,layero){ //按钮【按钮三】的回调 //returnfalse开启该代码可禁止点击该按钮关闭 } ,cancel:function(){ //右上角关闭回调 //returnfalse开启该代码可禁止点击该按钮关闭 } });
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){ //dosomething layer.close(index);//如果设定了yes回调,需进行手工关闭 } });
cancel-右上角关闭按钮触发的回调
类型:Function,默认:null
该回调携带两个参数,分别为:当前层索引参数(index)、当前层的DOM对象(layero),默认会自动触发关闭。如果不想关闭,returnfalse即可,如;
cancel:function(index,layero){ if(confirm('确定要关闭么')){//只有当点击confirm框的确定时,该层才会关闭 layer.close(index) } returnfalse; }
end-层销毁后触发的回调
类型:Function,默认:null
无论是确认还是取消,只要层被销毁了,end都会执行,不携带任何参数。
layer.ready(callback)-初始化就绪
由于我们的layer内置了轻量级加载器,所以你根本不需要单独引入css等文件。但是加载总是需要过程的。当你在页面一打开就要执行弹层时,你最好是将弹层放入ready方法中,如:
//页面一打开就执行弹层 layer.ready(function(){ layer.msg('很高兴一开场就见到你'); }); layer.close(index)-关闭特定层(比较重要)
关于它似乎没有太多介绍的必要,唯一让你疑惑的,可能就是这个index了吧。事实上它非常容易得到。
//当你想关闭当前页的某个层时 varindex=layer.open(); varindex=layer.alert(); varindex=layer.load(); varindex=layer.tips(); //正如你看到的,每一种弹层调用方式,都会返回一个index layer.close(index);//此时你只需要把获得的index,轻轻地赋予layer.close即可 //如果你想关闭最新弹出的层,直接获取layer.index即可 layer.close(layer.index);//它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的 //当你在iframe页面关闭自身时 varindex=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){ varbody=layer.getChildFrame('body',index); variframeWin=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页 varindex=parent.layer.getFrameIndex(window.name);//先得到当前iframe层的索引 parent.layer.close(index);//再执行关闭
封装好的Layer弹出框与关闭layer弹出框的方法(代码周一给出,现在手头没有代码)
总结
以上所述是小编给大家介绍的详解Layer弹出层样式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!