jquery弹出层插件layer

2015-06-07 00:01:00
zengde
来源:
http://layer.layui.com/
转贴 991
摘要:layer是一款近年来口碑极佳的web弹层组件,她具备全方位的解决方案,致力于服务各水平段的开发人员,您的页面会轻松地拥有丰富友好的操作体验。 在与同类组件的比较中,layer总是能轻易获胜。她尽可能地在以更少的代码展现更强健的功能,且格外注重性能的提升、易用和实用性,正因如此,越来越多的开发者将媚眼投上了layer(已被1520970人次关注)。layer兼容了包括IE6在内的所有主流浏览器。 她数量可观的接口,使得您可以自定义太多您需要的风格,每一种弹层模式各具特色,广受欢迎。当然,这种“王婆卖瓜”的陈述听起来总是有点难受,因此你需要进一步了解她是否真的如你所愿。

一些唠叨

layer是一款近年来口碑极佳的web弹层组件,她具备全方位的解决方案,致力于服务各水平段的开发人员,您的页面会轻松地拥有丰富友好的操作体验。

在与同类组件的比较中,layer总是能轻易获胜。她尽可能地在以更少的代码展现更强健的功能,且格外注重性能的提升、易用和实用性,正因如此,越来越多的开发者将媚眼投上了layer(已被 loading…人次关注)。layer兼容了包括IE6在内的所有主流浏览器。 她数量可观的接口,使得您可以自定义太多您需要的风格,每一种弹层模式各具特色,广受欢迎。当然,这种“王婆卖瓜”的陈述听起来总是有点难受,因此你需要进一步了解她是否真的如你所愿。

layer遵循LGPL协议, 将永久性提供无偿服务。历经三年,截至到2015年5月23日,已运用在 10万余家web平台,其中包括中国联通、蚂蚁短租、慕课网、phpyun等等知名网站,如果您有大型项目也在使用layer,您可以联系作者,以便在此展现案例,也为您的品牌推广尽一些绵薄之力。Say

特别说明:事件需自己绑定,以下只展现调用代码。

//初体验 layer.alert('内容')

//第三方扩展皮肤 layer.alert('内容', { icon: 1, skin: 'layer-ext-moon' //该皮肤由layer.seaning.com友情扩展。关于皮肤的扩展规则,去这里查阅 })

//询问框 layer.confirm('您是如何看待前端开发?', { btn: ['重要','奇葩'], //按钮 shade: false //不显示遮罩 }, function(){ layer.msg('的确很重要', {icon: 1}); }, function(){ layer.msg('奇葩么么哒', {shift: 6}); });

//提示层 layer.msg('玩命提示中');

//墨绿深蓝风 layer.alert('墨绿风格,点击确认看深蓝', { skin: 'layui-layer-molv' //样式类名 }, function(){ layer.alert('偶吧深蓝style', { skin: 'layui-layer-lan', shift: 4 //动画类型 }); });

//捕获页 layer.open({ type: 1, shade: false, title: false, //不显示标题 content: $('.layer_notice'), //捕获的元素 cancel: function(index){ layer.close(index); this.content.show(); layer.msg('捕获就是从页面已经存在的元素上,包裹layer的结构',{time: 5000}); } });

//页面层 layer.open({ type: 1, skin: 'layui-layer-rim', //加上边框 area: ['420px', '240px'], //宽高 content: 'html内容' });

//自定页 layer.open({ type: 1, skin: 'layui-layer-demo', //样式类名 closeBtn: false, //不显示关闭按钮 shift: 2, shadeClose: true, //开启遮罩关闭 content: '内容' });

//tips层 layer.tips('Hi,我是tips', '吸附元素选择器,如#id');

//iframe层 layer.open({ type: 2, title: 'layer mobile页', shadeClose: true, shade: 0.8, area: ['380px', '90%'], content: 'http://layer.layui.com/mobile/' //iframe的url });

//iframe窗 layer.open({ type: 2, title: false, closeBtn: false, shade: [0], area: ['340px', '215px'], offset: 'rb', //右下角弹出 time: 2000, //2秒后自动关闭 shift: 2, content: ['test/guodu.html', 'no'], //iframe的url,no代表不显示滚动条 end: function(){ //此处用于演示 layer.open({ type: 2, title: '很多时候,我们想最大化看,比如像这个页面。', shadeClose: true, shade: false, maxmin: true, //开启最大化最小化按钮 area: ['640px', '450px'], content: 'http://www.layui.com' }); } });

//加载层 var index = layer.load(0, {shade: false}); //0代表加载的风格,支持0-2

//loading层 var index = layer.load(1, { shade: [0.1,'#fff'] //0.1透明度的白色背景 });

//小tips layer.tips('我是另外一个tips,只不过我长得跟之前那位稍有些不一样。', '吸附元素选择器', { tips: [1, '#3595CC'], time: 4000 });

//prompt层 layer.prompt({ title: '输入任何口令,并确认', formType: 1 //prompt风格,支持0-2 }, function(pass){ layer.prompt({title: '随便写点啥,并确认', formType: 2}, function(text){ layer.msg('演示完毕!您的口令:'+ pass +' 您最后写下了:'+ text); }); });

//tab层 layer.tab({ area: ['600px', '300px'], tab: [{ title: 'TAB1', content: '内容1' }, { title: 'TAB2', content: '内容2' }, { title: 'TAB3', content: '内容3' }] });

//相册层 $.getJSON('test/photos.json?v='+new Date, function(json){ layer.photos({ photos: json //格式见API文档手册页 }); });

一往而深

layer历经三年考验,已经清楚地懂得了人们最需要的是什么,因此这一版的核心是做减法,不仅剔除了部分冗余的API,对包括layer.ext.js在内的代码也进行了大量瘦身( 所以如果你使用的是1.85,请不要覆盖升级),layer.js相比1.8.5减少了将近300行代码,但是这并不意味着功能的削减,事实上,layer已经变得更强大!1.9的使命是告诉大家,选择layer是完全正确的,没有哪个类似组件会如此玩命地维护和改进。应当有理由相信,layer1.9是一个里程碑式的跨进!

那么,我们将再演示一些例子,其中的大部分你可能都在一睹为快已经体验了。我们所呈现的例子毕竟有限,因此更推荐您直接阅读API文档。

//信息框-例1 layer.alert('见到你真的很高兴', {icon: 6});

//信息框-例2 layer.confirm('你确定你很帅么?', {icon: 3}, function(index){ layer.close(index); alert('自恋狂'); });

//信息框-例3 layer.msg('这是最常用的吧');

//信息框-例4 layer.msg('不开心。。', {icon: 5});

//信息框-例4 layer.msg('玩命卖萌中', function(){ //关闭后的操作 });

//页面层-自定义 layer.open({ type: 1, title: false, closeBtn: false, shadeClose: true, skin: 'yourclass', content: '自定义HTML内容' });

//页面层-佟丽娅 layer.open({ type: 1, title: false, closeBtn: false, area: ['516px', '620px'], skin: 'layui-layer-nobg', //没有背景色 shadeClose: true, content: $('#tong') });

//iframe层-父子操作 layer.open({ type: 2, area: ['700px', '530px'], fix: false, //不固定 maxmin: true, content: 'test/iframe.html' });

//iframe层-多媒体 layer.open({ type: 2, title: false, area: ['630px', '360px'], shade: 0.8, closeBtn: false, shadeClose: true, content: 'http://player.youku.com/embed/XMjY3MzgzODg0' }); layer.msg('点击遮罩任意处关闭');

//iframe层-禁滚动条 layer.open({ type: 2, area: ['360px', '500px'], skin: 'layui-layer-rim', //加上边框 content: ['http://layer.layui.com/mobile', 'no'] });

//加载层-默认风格 layer.load(); //此处演示关闭 setTimeout(function(){ layer.closeAll('loading'); }, 2000);

//加载层-风格2 layer.load(1); //此处演示关闭 setTimeout(function(){ layer.closeAll('loading'); }, 2000);

//加载层-风格3 layer.load(2); //此处演示关闭 setTimeout(function(){ layer.closeAll('loading'); }, 2000);

//加载层-风格4 layer.msg('加载中', {icon: 16});

//打酱油 layer.msg('尼玛,打个酱油', {icon: 4});

//tips层-上 layer.tips('上', '#id或者.class', { tips: [1, '#0FA6D8'] //还可配置颜色 });

//tips层-右 layer.tips('默认就是向右的', '#id或者.class');

//tips层-下 layer.tips('下', '#id或者.class', { tips: 2 });

//tips层-左 layer.tips('左边么么哒', '#id或者.class', { tips: [4, '#78BA32'] });

//tips层-不销毁之前的 layer.tips('不销毁之前的', '#id或者.class', { tipsMore: true });

//默认prompt layer.prompt(function(val){ layer.msg('得到了'+val); });

//屏蔽浏览器滚动条 layer.open({ content: '浏览器滚动条已锁', scrollbar: false });

//弹出即全屏 var index = layer.open({ type: 2, content: 'http://www.layui.com', area: ['300px', '195px'], maxmin: true }); layer.full(index);

//正上方 layer.msg('灵活运用offset', { offset: 0, shift: 6 });

//还该列举什么呢 layer.msg('等我想想…');

一劳永逸

事实上layer提供的丰富的接口支撑,已经足够让你的弹层变得千变万化,请恕我无法为您逐一演示。真心希望layer可以帮助你在某些方面变得一劳永逸。如果您觉得文档和代码有不当之处,迫切地希望您能反馈,你可以通过SAY社区和加群的方式进入layer的圈子,许多和你一样的小伙伴将会和你一起,走过这段美妙的旅程。与此同时,个人的力量始终有限,layer也非常需要更多的你来共同完善她!


快速上手

第一步:部署

下载layer后,把它部署到你项目中的任何一个目录(当然,我们推荐放在前端相关目录里),你不能去挪动layer里面的文件结构,因为它们是不可拆散的组合。就像这样:

layer的目录结构

第二步:引入

亲爱的,你不必去管那些文件是干嘛的,你只需要认准一个文件:layer.js 没错,当你试图在页面呈现layer的时候,你应该这样去做:

<!doctype html>
<html>
<head>
<title>开始使用layer</title>
</head>
<body>
<button id="test1">小小提示层</button>
你必须先引入jQuery1.8或以上版本
<script src="jQuery的路径"></script>
<script src="layer.js的路径"></script>
<script>
$('#test1').on('click', function(){
    layer.msg('Hello layer');
});
</script>
当然,你也可以写在外部的js文件
</body>
</html>       
        

第三步:使用

是时候目睹layer的挫样了,由于她是基于jQuery,你可以选择用jQuery的api方式去抒写。当你想弹出一个layer实例的时候,你首先应该绑定事件,就像上面的那个例子。

<!doctype html>
<html>
<head>
<title>开始使用layer</title>
</head>
<body>
你必须先引入jQuery1.8或以上版本
<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>'
    });
});
//弹出一个iframe层
$('#parentIframe').on('click', function(){
    layer.open({
        type: 2,
        title: 'iframe父子操作',
        maxmin: true,
        shadeClose: true, //点击遮罩关闭层
        area : ['800px' , '520px'],
        content: 'test/iframe.html'
    });
});
//弹出一个loading层
$('#test4').on('click', function(){
    var ii = layer.load();
    //此处用setTimeout演示ajax的回调
    setTimeout(function(){
        layer.close(ii);
    }, 1000);
});
//弹出一个tips层
$('#test5').on('click', function(){
    layer.tips('Hello tips!', '#test5');
});
</script>
当你对此建立了一定的初始,你应该去详看API手册了。
</body>
</html>