弹层组件-layer

layer是Layui的一个弹层组建,功能强大,总之我很喜欢,下面介绍这个组件的基本用法。

首先如果只需要使用layer而不想使用Layui可以单独下载layer组件包,页面引入jquery1.8以上任意版本,和laye.js

通过简单的例子能加深理解和学习,首先引入基本的css和js

<link rel="stylesheet" href="css/reset.css">
<script src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
<script src="layer/layer.js"></script>

例1:默认

实现例1只需要简单几行代码

<button id="func1">初体验</button>
<script>
  $("#func1").on(‘click‘,function(){
    layer.alert(‘内容‘);  //alert里面的内容可以根据需要改写
   });
</script>

例2: 图标

<button id="func2" >皮肤</button>
<script>
    $("#func2").on(‘click‘,function(){
       layer.alert(‘内容‘,{
          icon:1,
          skin:‘layer-ext-moon‘
          //该皮肤由layer.seaning.com友情扩展。关于皮肤的扩展规则,去这里查阅          //信息框默认不显示图标,当你想显示图标时,默认皮肤可以传入0-6如果是加载层,可以传入0-2
       });
    });
</script>

总结:

layer.alert(content, options, yes) - 普通信息框------------------------------------------------------------

它的弹出似乎显得有些高调,一般用于对用户造成比较强烈的关注,类似系统alert,但却比alert更灵便。它的参数是自动向左补齐的。通过第二个参数,可以设定各种你所需要的基础参数,但如果你不需要的话,直接写回调即可。如:

//eg1
layer.alert(‘只想简单的提示‘);
//eg2
layer.alert(‘加了个图标‘, {icon: 1}); //这时如果你也还想执行yes回调,可以放在第三个参数中。
//eg3
layer.alert(‘有了回调‘, function(index){
  //do something
  layer.close(index);
});       

icon - 图标。信息框和加载层的私有参数

类型:Number,默认:-1(信息框)/0(加载层)

信息框默认不显示图标。当你想显示图标时,默认皮肤可以传入0-6如果是加载层,可以传入0-2。如:

//eg1
layer.alert(‘酷毙了‘, {icon: 1});
//eg2
layer.msg(‘不开心。。‘, {icon: 5});
//eg3
layer.load(1); //风格1的加载

例3: 询问框

点击重要:点击奇葩:

<button id="func3" >询问框</button>
<script>
          $("#func3").on(‘click‘,function(){
            // 询问框
            layer.confirm(‘您是如何看待前端开发?‘,{
                btn:[‘重要‘,‘奇葩‘] //按钮
            },function(){
                layer.msg(‘的确重要‘,{icon:1});  //layer.msg为内置方法  提示层
            },function(){
                layer.msg(‘也可以这样‘,{
                    time:2000,//2秒自动关闭
                    btn:[‘明白了‘,‘知道了‘]
                });
            });
        });
</script>

总结:

layer.confirm(content, options, yes, cancel) - 询问框------------------------------------------------------------

类似系统confirm,但却远胜confirm,另外它不是和系统的confirm一样阻塞你需要把交互的语句放在回调体中。同样的,它的参数也是自动补齐的。

//eg1
layer.confirm(‘is not?‘, {icon: 3, title:‘提示‘}, function(index){
  //do something
  layer.close(index);
});
//eg2
layer.confirm(‘is not?‘, function(index){
  //do something
  layer.close(index);
});       

例4: 提示层

<button id="func4" >提示层</button>
<script>
     $("#func4").on(‘click‘,function(){
         //提示层
        layer.msg(‘玩命提示中‘);
    });
</script>

总结:

layer.msg(content, options, end) - 提示框------------------------------------------------------------

我在源码中有了相对较大的篇幅来定制了这个msg,目的是想将其打造成露脸率最高的提示框。而事实上我的确也在大量地使用它。因为它简单,而且足够得自觉,它不仅占据很少的面积,而且默认还会3秒后自动消失所有这一切都决定了我对msg的爱。因此我赋予了她许多可能在外形方面,它坚持简陋的变化,在作用方面,他坚持零用户操作。而且它的参数也是机会自动补齐的。

//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
});   

例5:风格多样化

<button id="func5" >蓝色风格</button>
<script>
    $("#func5").on(‘click‘,function(){
        //墨绿深蓝风
         layer.alert(‘墨绿风格,点击确认看深蓝‘, {
                skin: ‘layui-layer-molv‘ //样式类名
                ,closeBtn: 0
          }, function(){
                layer.alert(‘偶吧深蓝style‘, {
                    skin: ‘layui-layer-lan‘
                    ,closeBtn: 0
                    ,shift: 4 //动画类型
                });
           });
    });
</script>

总结:

skin - 样式类名------------------------------------------------------------

类型:String,默认:‘‘

skin不仅允许你传入layer内置的样式class名,还可以传入您自定义的class名。这是一个很好的切入点,意味着你可以借助skin轻松完成不同的风格定制。目前layer内置的skin有:layui-layer-lanlayui-layer-molv,未来我们还会选择性地内置更多,但更推荐您自己来定义。以下是一个自定义风格的简单例子

//单个使用
layer.open({
  skin: ‘demo-class‘
});
//全局使用。即所有弹出层都默认采用,但是单个配置skin的优先级更高
layer.config({
  skin: ‘demo-class‘
})
//CSS
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;}
…
加上body是为了保证优先级。你可以借助Chrome调试工具,定义更多样式控制层更多的区域。    

例6:捕捉页

  

<button id="func6" >捕捉页</button>
<script>
    $("#func6").on(‘click‘,function(){
             //捕获页
            layer.open({
                type: 1,
                shade: false,
                title: false, //不显示标题
                content: $(‘.layer_notice‘), //捕获的元素
                cancel: function(index){
                    layer.close(index);
                    this.content.show();
                    layer.msg(‘捕获就是从页面已经存在的元素上,包裹layer的结构‘, {time: 2000, icon:6});
                }
            });
    });
</script><div class="layer_notice"></div>

总结:

layer.open(options) - 原始核心方法------------------------------------------------------------

基本上是露脸率最高的方法,不管是使用哪种方式创建层,都是走layer.open(),创建任何类型的弹层都会返回一个当前层索引,上述的options即是基础参数,另外,该文档统一采用options作为基础参数的标识例子:

var index = layer.open({
  content: ‘test‘
});
//拿到的index是一个重要的凭据,它是诸如layer.close(index)等方法的必传参数。       

content - 内容------------------------------------------------------------

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

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

/!*
 如果是页面层
 */
layer.open({
  type: 1,
  content: ‘传入任意的文本或html‘ //这里content是一个普通的String
});
layer.open({
  type: 1,
  content: $(‘#id‘) //这里content是一个DOM
});
//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
});        

type - 基本层类型------------------------------------------------------------

类型:Number,默认:0

layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)。

若你采用layer.open({type: 1})方式调用,则type为必填项(信息框除外)

shade - 遮罩------------------------------------------------------------

类型:String/Array/Boolean,默认:0.3

即弹层外区域。默认是0.3透明度的黑色背景(‘#000‘)。如果你想定义别的颜色,可以shade: [0.8, ‘#393D49‘];如果你不想显示遮罩,可以shade: 0

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

类型:Function,默认:null

该回调同样只携带当前层索引一个参数,无需进行手工关闭。如果不想关闭,return false即可,如;

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

例7:页面层

<button id="func7" >页面层</button>
<script>
    $("#func7").on(‘click‘,function(){
        //页面层
            layer.open({
                type: 1,
                skin: ‘layui-layer-rim‘, //加上边框
                area: [‘420px‘, ‘240px‘], //宽高
                content: ‘html内容‘
            });
    });
</script>

总结:

area - 宽高---------------------------------------------------------------------

类型:String/Array,默认:‘auto‘

在默认状态下,layer是宽高都自适应的,但当你只想定义宽度时,你可以area: ‘500px‘,高度仍然是自适应的。当你宽高都要定义时,你可以area: [‘500px‘, ‘300px‘]

例8:自定义

<button id="func8" >自定义</button>
<script>
    $("#func8").on(‘click‘,function(){
        //自定页
            layer.open({
                type: 1,
                skin: ‘layui-layer-demo‘, //样式类名
                closeBtn: 0, //不显示关闭按钮
                shift: 2,
                area: [‘420px‘, ‘240px‘], //宽高
                shadeClose: true, //开启遮罩关闭
                content: ‘内容‘
            });
    });
</script>

总结:

closeBtn - 关闭按钮


类型:String/Boolean,默认:1

layer提供了两种风格的关闭按钮,可通过配置12来展示,如果不显示,则closeBtn: 0

shade - 遮罩


类型:String/Array/Boolean,默认:0.3

即弹层外区域。默认是0.3透明度的黑色背景(‘#000‘)。如果你想定义别的颜色,可以shade: [0.8, ‘#393D49‘];如果你不想显示遮罩,可以shade: 0

shadeClose - 是否点击遮罩关闭

类型:Boolean,默认:false

如果你的shade是存在的,那么你可以设定shadeClose来控制点击弹层外区域关闭。

例9:tips层

<button id="func9">tips层</button><button id="tips">tips</button><script>
$("#func9").on(‘click‘,function(){
     //tips层
     layer.tips(‘Hi,我是tips‘, $("#tips"));
 });</script>

例10:小tips层

<button id="func14">小tips</button>
<button id="tips2">tips2</button>
<script>
    $("#func14").on(‘click‘,function(){
       //小tips
        layer.tips(‘我是另外一个tips,只不过我长得跟之前那位稍有些不一样。‘, $(‘#tips2‘), {
                tips: [1, ‘#3595CC‘],
                time: 4000
            });
     });
</script>

总结:

layer.tips(content, follow, options) - tips层--------------------------------------

type:4的深度定制。也是我本人比较喜欢的一个层类型,因为它拥有和msg一样的低调和自觉,而且会智能定位,即灵活地判断它应该出现在哪边。默认是在元素右边弹出

//eg1
layer.tips(‘只想提示地精准些‘, ‘#id‘);
//eg 2
$(‘#id‘).on(‘click‘, function(){
  var that = this;
  layer.tips(‘只想提示地精准些‘, that); //在元素的事件回调体中,follow直接赋予this即可
});
//eg 3
layer.tips(‘在上面‘, ‘#id‘, {
  tips: 1
});

tips - tips方向和颜色----------------------------------------------------------

类型:Number/Array,默认:2

tips层的私有参数。支持四个方向,通过1-4进行方向设定。如tips: 3则表示在元素的下面出现。有时你还可能会定义一些颜色,可以设定tips: [1, ‘#c00‘]

例11:iframe层

<button id="func10">iframe层</button>
<script>
    $("#func10").on(‘click‘,function(){
             //iframe层
                layer.open({
                    type: 2,
                    title: ‘layer mobile页‘,
                    shadeClose: true,
                    shade: 0.8,
                    area: [‘380px‘, ‘90%‘],
                    content: ‘http://m.baidu.com‘ //iframe的url
                });
    });
</script>

例12:iframe窗

<button id="func11">iframe窗</button>
<script>
    $("#func11").on(‘click‘,function(){
             //iframe窗
            layer.open({
                type: 2,
                title: false,
                closeBtn: 0, //不显示关闭按钮
                shade: [0],
                area: [‘340px‘, ‘215px‘],
                offset: ‘auto‘, //右下角弹出
                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: [‘1150px‘, ‘650px‘],
                        content: ‘http://www.baidu.com‘
                    });
                }
            });
     });
</script>

总结:

offset - 坐标------------------------------------------------------------------------------------

类型:String/Array,默认:垂直水平居中

offset默认情况下不用设置。但如果你不想垂直水平居中,你还可以进行以下赋值:

备注
offset: ‘100px‘ 只定义top坐标,水平保持居中
offset: [‘100px‘, ‘50px‘] 同时定义top、left坐标
offset: ‘t‘ 快捷设置顶部坐标
offset: ‘r‘ 快捷设置右边缘坐标
offset: ‘b‘ 快捷设置底部坐标
offset: ‘l‘ 快捷设置左边缘坐标
offset: ‘lt‘ 快捷设置左上角
offset: ‘lb‘ 快捷设置左下角
offset: ‘rt‘ 快捷设置右上角
offset: ‘rb‘ 快捷设置右下角

end - 层销毁后触发的回调----------------------------------------------------------

类型:Function,默认:null

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

例13:加载层

<button id="func12">加载层</button>
<script>
    $("#func12").on(‘click‘,function(){
     //加载层
        var index = layer.load(0, {shade: false}); //0代表加载的风格,支持0-2
    });
</script>

例14:loading层

<button id="func13">loading层</button>
<script>
    $("#func13").on(‘click‘,function(){
         //loading层
        var index = layer.load(1, {
               shade: [0.1,‘#fff‘] //0.1透明度的白色背景
         });
     });
</script>

layer.load(icon, options) - 加载层-------------------------------

type:3的深度定制。load并不需要你传太多的参数,但如果你不喜欢默认的加载风格,你还有选择空间。icon支持传入0-2如果是0,无需传。另外特别注意一点:load默认是不会自动关闭的,因为你一般会在ajax回调体中关闭它。

//eg1
var index = layer.load();
//eg2
var index = layer.load(1); //换了种风格
//eg3
var index = layer.load(2, {time: 10*1000}); //又换了种风格,并且设定最长等待10秒
//关闭
layer.close(index);     

例15:prompt层

<button id="func15">prompt层</button>
<script>
    $("#func15").on(‘click‘,function(){
         //prompt层
          layer.prompt({
                    title: ‘输入任何口令,并确认‘,
                    formType: 1 //prompt风格,支持0-2
                    }, function(pass){
                    layer.prompt({title: ‘随便写点啥,并确认‘, formType: 2}, function(text){
                    layer.msg(‘演示完毕!您的口令:‘+ pass +‘ 您最后写下了:‘+ text);
                    });
           });
    });
</script>

layer.prompt(options, yes) - 输入层

prompt的参数也是向前补齐的。options不仅可支持传入基础参数,还可以传入prompt专用的属性。当然,也可以不传。yes携带value 表单值index 索引elem 表单元素

//prompt层新定制的成员如下
{
  formType: 1, //输入框类型,支持0(文本)默认1(密码)2(多行文本)
  value: ‘‘, //初始时的值,默认空字符
  maxlength: 140, //可输入文本的最大长度,默认500
}

//例子1
layer.prompt(function(value, index, elem){
  alert(value); //得到value
  layer.close(index);
});

//例子2
layer.prompt({
  formType: 2,
  value: ‘初始值‘,
  title: ‘请输入值‘,
  area: [‘800px‘, ‘350px‘] //自定义文本域宽高
}, function(value, index, elem){
  alert(value); //得到value
  layer.close(index);
});

例16:tab层

<button id="func16">tab层</button>
<script>
    $("#func16").on(‘click‘,function(){
             //tab层
                layer.tab({
                    area: [‘600px‘, ‘300px‘],
                    tab: [{
                        title: ‘TAB1‘,
                        content: ‘内容1‘
                    }, {
                        title: ‘TAB2‘,
                        content: ‘内容2‘
                    }, {
                        title: ‘TAB3‘,
                        content: ‘内容3‘
                    }]
                });
    });
</script>
时间: 2024-10-13 00:03:49

弹层组件-layer的相关文章

layer是一款近年来备受青睐的web弹层组件

layer是一款近年来备受青睐的web弹层组件,她具备全方位的解决方案,致力于服务各水平段的开发人员,您的页面会轻松地拥有丰富友好的操作体验. 在与同类组件的比较中,layer总是能轻易获胜.她尽可能地在以更少的代码展现更强健的功能,且格外注重性能的提升.易用和实用性,正因如此,越来越多的开发者将媚眼投上了layer(已被2370889人次关注).layer兼容了包括IE6在内的所有主流浏览器. 她数量可观的接口,使得您可以自定义太多您需要的风格,每一种弹层模式各具特色,广受欢迎.当然,这种“王

jQuery Layer 弹层组件

layer是一款近年来口碑非常不错的web弹层组件,她具备全方位的解决方案,致力于服务各个水平段的开发人员,您的页面会轻松地拥有丰富友好的操作体验. 在与同类组件的比较中,layer总是能轻易获胜.她尽可能地在以更少的代码展现更强健的功能,且格外注重性能的提升.易用和实用性,正因如此,越来越多的开发者将媚眼投上了layer.layer兼容了包括IE6在内的所有主流浏览器. 她数量可观的接口,使得您可以自定义太多您需要的风格,每一种弹层模式各具特色,皆广受欢迎.当然,这种"王婆卖瓜"的陈

HTML5 本地存储+layer弹层组件制作记事本

什么是 HTML5 Web 存储? 使用HTML5可以在本地存储用户的浏览数据. 早些时候,本地存储使用的是 cookie.但是Web 存储需要更加的安全与快速. 这些数据不会被保存在服务器上,但是这些数据只用于用户请求网站数据上.它也可以存储大量的数据,而不影响网站的性能. 数据以 键/值 对存在, web网页的数据只允许该网页访问使用. 保存数据:localStorage.setItem(key,value); 读取数据:localStorage.getItem(key); 删除单个数据:l

layer弹层之美

layer是一款近年来备受青睐的web弹层组件,她具备全方位的解决方案,致力于服务各水平段的开发人员,您的页面会轻松地拥有丰富友好的操作体验. 官网:http://layer.layui.com/ //初体验 layer.alert('内容') //询问框 layer.confirm('您是如何看待前端开发?', { btn: ['重要','奇葩'] //按钮 }, function(){ layer.msg('的确很重要', {icon: 1}); }, function(){ layer.m

layer 1.9.2 发布,国产 Web 弹层不懈的前行者

快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中. <HTML开发Mac OS App 视频教程> 土豆网同步更新:http://www.tudou.com/plcover/VHNh6ZopQ4E/ 百度网盘同步:http://pan.baidu.com/s/1jG1Q58M 分享  [中文纪录片]互联网时代   http://pan.baidu.com/s/1qWkJfcS 官方QQ群:(申请加入,说是我推荐的) App实践出真知 4

layer ----- 弹层

模块加载名称:layer,layer独立组件官网:layer.layui.com layer可以独立使用,也可以通过Layui模块化使用.按照实际需求来选择.只使用layer,你可以去layer独立组件官网下载组件包.你需要在你的页面引入jQuery1.8以上的任意版本,并引入layer.js.如果你使用的是Layui,那么你直接在官网下载layui框架即可,无需引入jQuery和layer.js,但需要引入layui.css和layui.js ,解压后可放在extend下, , layer提供

layer 1.9 发布,国产 Web 弹层不懈的追求者

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

jquery layer弹窗弹层插件 小巧强大

/* 先去官网下载最新的js  http://sentsin.com/jquery/layer/ ①引用jquery ②引用layer.min.js */ 触发弹层的事件可自由绑定,如: $('#id').on('click', function(){ layer.msg('test'); }); 下面主要贴出上述例子的调用代码: [信息框]: layer.alert('白菜级别前端攻城师贤心', 8); //风格一 layer.msg('前端攻城师贤心'); //风格二 //当然,远远不止这两

手机端弹出层:Layer Mobile API文档手册v1.2

原文地址:http://sentsin.com/jquery/layer/ 参数 即核心接口:layer.open(options) 中的options: type 类型:Number 默认:0,设置弹层的类型,0表示信息框,1表示页面层,2表示加载层 content 类型:String 必选参数,控制弹层内容 title 类型:String或Array 默认:空,控制层的标题,值为字符串或者数组,例子: [javascript] view plain copy print? layer.ope