layer.js


1、、基础参数

  我们提到的基础参数主要指调用方法时用到的配置项,如:layer.open({content: ‘’})layer.msg(‘’, {time: 3})等,其中的content和time即是基础参数,以键值形式存在,基础参数可合理应用于任何层类型中,您不需要所有都去配置,大多数都是可选的。而其中的layer.open、layer.msg就是内置方法。注意,从2.3开始,无需通过layer.config来加载拓展模块

(1)、type - 基本层类型

  类型:Number,默认:0

  layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)。若你采用layer.open({type: 1})方式调用,则type为必填项(信息框除外)

(2)、title - 标题

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

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

(3)、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
});        
**(4)、skin - 样式类名**   类型:String,默认:''   skin不仅允许你传入layer内置的样式class名,还可以传入您自定义的class名。这是一个很好的切入点,意味着你可以借助skin轻松完成不同的风格定制。目前layer内置的skin有:layui-layer-lan、layui-layer-molv,未来我们还会选择性地内置更多,但更推荐您自己来定义。 **(5)、area - 宽高**   类型:String/Array,默认:'auto'   在默认状态下,layer是宽高都自适应的,但当你只想定义宽度时,你可以area: '500px',高度仍然是自适应的。当你宽高都要定义时,你可以area: ['500px', '300px'] **(6)、offset - 坐标**   类型:String/Array,默认:垂直水平居中   offset默认情况下不用设置。但如果你不想垂直水平居中,你还可以进行以下赋值: ![](http://img.blog.csdn.net/20161215194647384?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjc2MjYzMzM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center) **(7)、icon - 图标。信息框和加载层的私有参数**   类型:Number,默认:-1(信息框)/0(加载层)   信息框默认不显示图标。当你想显示图标时,默认皮肤可以传入0-6,如果是加载层,可以传入0-2。 **(8)、btn - 按钮**   类型:String/Array,默认:'确认'   信息框模式时,btn默认是一个确认按钮,其它层类型则默认不显示,加载层和tips层则无效。当您只想自定义一个按钮时,你可以btn: '我知道了',当你要定义两个按钮时,你可以btn: ['yes', 'no']。当然,你也可以定义更多按钮,比如:btn: ['按钮1', '按钮2', '按钮3', …],按钮1和按钮2的回调分别是yes和cancel,而从按钮3开始,则回调为btn3: function(){},以此类推。 **(9)、btnAlign - 按钮排列**   类型:String,默认:r   你可以快捷定义按钮的排列位置,btnAlign的默认值为r,即右对齐。btnAlign: 'l',按钮左对齐;btnAlign: 'c',按钮居中对齐。 **(10)、closeBtn - 关闭按钮**   类型:String/Boolean,默认:1   layer提供了两种风格的关闭按钮,可通过配置1和2来展示,如果不显示,则closeBtn: 0 **(11)、shade - 遮罩**   类型:String/Array/Boolean,默认:0.3   即弹层外区域。默认是0.3透明度的黑色背景('#000')。如果你想定义别的颜色,可以shade: [0.8, '#393D49'];如果你不想显示遮罩,可以shade: 0 **(12)shadeClose - 是否点击遮罩关闭**   类型:Boolean,默认:false   如果你的shade是存在的,那么你可以设定shadeClose来控制点击弹层外区域关闭。 **(13)、time - 自动关闭所需毫秒**   类型:Number,默认:0   默认不会自动关闭。当你想自动关闭时,可以time: 5000,即代表5秒后自动关闭,注意单位是毫秒(1秒=1000毫秒) **(14)、id - 用于控制弹层唯一标识**   类型:String,默认:空字符   设置该值后,不管是什么类型的层,都只允许同时弹出一个。一般用于页面层和iframe层模式 **(15)anim - 动画**   类型:Number,默认:0   我们的出场动画全部采用CSS3。这意味着除了ie6-9,其它所有浏览器都是支持的。目前anim可支持的动画类型有0-6 ,(请注意,3.0之前的版本用的 shift 参数) **(16)maxmin - 最大最小化。**   类型:Boolean,默认:false   该参数值对type:1和type:2有效。默认不显示最大小化按钮。需要显示配置maxmin: true即可 **(17)fixed - 固定**   类型:Boolean,默认:true   即鼠标滚动时,层是否固定在可视区域。如果不想,设置fixed: false即可 **(18)、resize - 是否允许拉伸**   类型:Boolean,默认:true   默认情况下,你可以在弹层右下角拖动来拉伸尺寸。如果对指定的弹层屏蔽该功能,设置 false即可。该参数对loading、tips层无效 **(19)、scrollbar - 是否允许浏览器出现滚动条**   类型:Boolean,默认:true   默认允许浏览器滚动,如果设定scrollbar: false,则屏蔽 **(20)、maxWidth - 最大宽度**   类型:,默认:360   请注意:只有当area: 'auto'时,maxWidth的设定才有效。 **(21)、zIndex - 层叠顺序**   类型:,默认:19891014(贤心生日 0.0)   一般用于解决和其它组件的层叠冲突。 **(22)、move - 触发拖动的元素**   类型:String/DOM/Boolean,默认:'.layui-layer-title'   默认是触发标题区域拖拽。如果你想单独定义,指向元素的选择器或者DOM即可。如move: '.mine-move'。你还配置设定move: false来禁止拖拽 **(23)、moveOut - 是否允许拖拽到窗口外**   类型:Boolean,默认:false   默认只能在窗口内拖拽,如果你想让拖到窗外,那么设定moveOut: true即可 **(24)、moveEnd - 拖动完毕后的回调方法**   类型:Function,默认:null   默认不会触发moveEnd,如果你需要,设定moveEnd: function(){}即可。 **(25)、tips - tips方向和颜色**   类型:Number/Array,默认:2   tips层的私有参数。支持上右下左四个方向,通过1-4进行方向设定。如tips: 3则表示在元素的下面出现。有时你还可能会定义一些颜色,可以设定tips: [1, '#c00'] **(26)、tipsMore - 是否允许多个tips**   类型:Boolean,默认:false   允许多个意味着不会销毁之前的tips层。通过tipsMore: true开启 **(27)、success - 层弹出后的成功回调方法**   类型:Function,默认:null   当你需要在层创建完毕时即执行一些语句,可以通过该回调。success会携带两个参数,分别是当前层DOM当前层索引。 **(28)、yes - 确定按钮回调方法**   类型:Function,默认:null   该回调携带两个参数,分别为当前层索引、当前层DOM对象。
layer.open({
  content: '测试回调',
  yes: function(index, layero){
    //do something
    layer.close(index); //如果设定了yes回调,需进行手工关闭
  }
}); 
**(29)、cancel - 右上角关闭按钮触发的回调**   类型:Function,默认:null   该回调同样只携带当前层索引一个参数,无需进行手工关闭。如果不想关闭,return false即可,
//只有当点击confirm框的确定时,该层才会关闭
cancel: function(index){ 
  if(confirm('确定要关闭么')){
    layer.close(index)
  }
  return false; 
}   
**(30)、end - 层销毁后触发的回调**   类型:Function,默认:null   无论是确认还是取消,只要层被销毁了,end都会执行,不携带任何参数。 **(31)、full/min/restore -分别代表最大化、最小化、还原 后触发的回调**   类型:Function,默认:null   携带一个参数,即当前层DOM **2、实例**
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>layer-更懂你的web弹窗解决方案</title>
  <script src="layer/jquery-1.10.2.min.js"></script>
  <script src="layer/layer.js"></script>
  <link rel="stylesheet" href="layer/skin/default/layer.css" />
  <style>
      div.conten{
          width: 100%;
          border: 2px solid #C9C5C5;
          margin-bottom: 10px;
          box-shadow: 5px 5px #CCCCCC;
          text-align: center;
      }
      button.bt{
          width: 100px;
          height: 40px;
          line-height: 40px;
          background-color:#2D93CA;
          border-radius: 10px;
          color:white;
          text-align: center;
          font-weight: bold;
          font-size: 15px;
      }
      .layer_notice{
          margin-bottom: 10px;
          text-align: center;
          width:200px;
          color: #999999;
          margin: 0px auto;
      }
      .layer-photos-demo{
          text-align: center;
          width:500px;
          color: #999999;
          margin: 0px auto;
          border: 2px solid #C9C5C5;
          margin-bottom: 10px;
          box-shadow: 5px 5px #CCCCCC;
      }
      body .demo-class .layui-layer-demo{background:#333;}
  </style>
</head>
<body>
<div class="conten">
        <button onclick="common(1)" class="bt">普通信息框</button>
        <button onclick="common(2)" class="bt">图标</button>
        <button onclick="common(3)" class="bt">询问框</button>
        <button onclick="common(4)" class="bt">提示层</button>
        <button onclick="common(5)" class="bt">墨绿深蓝风</button>
</div>
<div class="conten">
        <button onclick="common(6)" class="bt">捕获页</button>
        <button onclick="common(7)" class="bt">页面层</button>
        <button onclick="common(8)" class="bt">自定页</button>
        <button onclick="common(9)" class="bt" >tips层</button>
        <button onclick="common(10)" class="bt">iframe层</button>
</div>
<div class="conten">
        <button onclick="common(11)" class="bt">iframe窗</button>
        <button onclick="common(12)" class="bt">加载层</button>
        <button onclick="common(13)" class="bt">loading层</button>
        <button onclick="common(14)" class="bt">小tips</button>
        <button onclick="common(15)" class="bt">prompt层</button>
</div>
<div class="conten">
        <button onclick="common(16)" class="bt">tap层</button>
        <button onclick="common(17)" class="bt">相册层</button>
</div>
<div class=" layer_notice">傲不可长,欲不可纵,乐不可极,志不可满。</div>
<div id="layer-photos-demo" class="layer-photos-demo">
  <img layer-pid="图片id,可以不写" layer-src="img/1.jpg" src="img/11.jpg" alt="图片名">
  <img layer-pid="图片id,可以不写" layer-src="img/2.jpg" src="img/22.jpg" alt="图片名">
  <img layer-pid="图片id,可以不写" layer-src="img/4.jpg" src="img/44.jpg" alt="图片名">
  <img layer-pid="图片id,可以不写" layer-src="img/5.jpg" src="img/55.jpg" alt="图片名">
  <img layer-pid="图片id,可以不写" layer-src="img/7.jpg" src="img/77.jpg" alt="图片名">
</div>
<script>
function common(n){
        if(n==1){       
        //layer.alert(content, options, yes) - 普通信息框
                layer.alert('有了回调', {title:'提示'},function(index){
                   layer.alert('加了个图标', {icon: 1},function(index){
                         layer.alert('只想简单的提示',function(index){
                             layer.close(index);//没有close就需要手动关闭
                         });
                   });
                });       
        }else if(n==2){
            //图标
        layer.alert('图标0', {icon: 0},function(index){
                layer.alert('图标'+index, {icon: 1},function(index){
                    layer.alert('图标'+index, {icon: 2},function(index){
                        layer.alert('图标'+index, {icon: 3},function(index){
                            layer.alert('图标'+index, {icon: 4},function(index){
                                layer.alert('图标'+index, {icon: 5},function(index){
                                    layer.alert('图标'+index, {icon: 6},function(index){
                                        layer.close(index);
                                    })
                                })
                            })
                        })
                    })
                })
            })
        }else if(n==3){
            //layer.confirm(content, options, yes, cancel) - 询问框
                layer.confirm('您是如何看待前端开发?', {
                     btn: ['重要','奇葩'], //按钮
                     icon: 3, 
                     title:'提示'
                    }, function(){
                         layer.msg('的确很重要', {icon: 1});
                    }, function(){
                         layer.msg('也可以这样', {
                             time: 20000, //20s后自动关闭
                             btn: ['明白了', '知道了']
                         });
                });
        }else if(n==4){
            //layer.msg(content, options, end) - 提示框,3秒后自动消失
                layer.msg('玩命提示中',{
                        icon: 1,
                        time: 2000 //2秒关闭(如果不配置,默认是3秒)
                       }, function(){
                         layer.msg('呵呵');
                });
        }else if(n==5){
            //墨绿深蓝风
                layer.alert('墨绿风格,点击确认看深蓝', {
                   skin: 'layui-layer-molv', //样式类名
                   closeBtn: 0//layer提供了两种风格的关闭按钮
                }, function(){
                  layer.alert('深蓝style', {
                     skin: 'layui-layer-lan',
                     closeBtn: 0,//layer提供了两种风格的关闭按钮
                     anim: 4 //动画类型
                  });
                });
        }else if(n==6){
            //捕获页
                layer.open({
                  type: 1,
                  shade: false,
                  area: ['420px', '240px'], //宽高
                  title: false, //不显示标题
                  content: $('.layer_notice'), //捕获的元素
                  cancel: function(){
                    layer.msg('捕获就是从页面已经存在的元素上,包裹layer的结构', {
                            time: 5000, 
                            icon:6
                    });
                  }
                });
        }else if(n==7){
            //页面层
                layer.open({
                  type: 1,
                  skin: 'layui-layer-rim', //加上边框
                  area: ['420px', '240px'], //宽高
                  content: 'html内容'
                });
        }else if(n==8){
            //自定页
                layer.open({
                  type: 1,
                  skin: 'layui-layer-demo', //样式类名
                  closeBtn: 0, //不显示关闭按钮
                  anim: 2,//anim可支持的动画类型有0-6
                  shadeClose: true, //开启遮罩关闭
                  content: '内容'
                });
        }else if(n==9){
            //tips层
                layer.tips('Hi,我是tips', '.layer_notice',{tips:2});
        }else if(n==10){
            //iframe层
                layer.open({
                  type: 2,
                  title: 'layer mobile页',
                  shadeClose: true,//是否点击遮罩关闭
                  shade:[0.8,'#393D49'],//遮罩
                  area: ['380px', '90%'],
                  content: 'http://blog.csdn.net/qq_27626333/article/details/53674829' //iframe的url
                }); 
        }else if(n==11){
            //iframe窗
                layer.open({
                  type: 2,
                  title: false,
                  closeBtn: 0, //不显示关闭按钮
                  shade: [0],//不显示遮罩
                  area: ['340px', '215px'],
                  offset: 'rb', //右下角弹出
                  time: 2000, //2秒后自动关闭
                  anim: 2,
                  content: ['http://blog.csdn.net/qq_27626333/article/details/53674829', 'no'], //iframe的url,no代表不显示滚动条
                  end: function(){ //此处用于演示
                layer.open({
                  type: 2,
                  title: '很多时候,我们想最大化看,比如像这个页面。',
                  shadeClose: true,
                  shade: false,
                  maxmin: true, //开启最大化最小化按钮
                  area: ['893px', '600px'],
                  content: 'http://blog.csdn.net/qq_27626333/article/details/53674829'
                    });
                  }
                });
        }else if(n==12){
            //layer.load(icon, options) - 加载层
                var index = layer.load(2, {time: 10*1000}); //又换了种风格,并且设定最长等待10秒 
                //关闭
                //layer.close(index);   
        }else if(n==13){
            //loading层
                var index = layer.load(1, {
                              shade: [0.1,'#fff'],//0.1透明度的白色背景
                              time:1000
                            });
        }else if(n==14){
            //小tips
                layer.tips('我是另外一个tips,只不过我长得跟之前那位稍有些不一样。', '.layer_notice', {
                  tips: [1, '#3595CC'],
                  time: 4000
                });
        }else if(n==15){
            //layer.prompt(options, yes) - 输入层
            //formType: 1, //输入框类型,支持0(文本)默认1(密码)2(多行文本)
              //value: '', //初始时的值,默认空字符
              //maxlength: 140, //可输入文本的最大长度,默认500
              //yes携带value表单值、index索引、elem表单元素
                layer.prompt({title: '输入任何口令,并确认', formType: 1}, function(pass, index){
                  layer.close(index);
                  layer.prompt({title: '随便写点啥,并确认', formType: 2}, function(text, index){
                     layer.close(index);
                     layer.msg('演示完毕!您的口令:'+ pass +'您最后写下了:'+text);
                  });
                });
        }else if(n==16){
            //layer.tab(options) - tab层
                layer.tab({
                  area: ['600px', '300px'],
                  tab: [{
                    title: 'TAB1', 
                    content: '内容1'
                  }, {
                    title: 'TAB2', 
                    content: '内容2'
                  }, {
                    title: 'TAB3', 
                    content: '内容3'
                  }]
                });
        }else if(n==17){
            //相册层
                layer.photos({
                  photos: '#layer-photos-demo',
                  anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机(请注意,3.0之前的版本用shift参数)
                }); 
        }
}
</script>
</body>
</html>




山水子农 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
坚持原创技术分享,您的支持将鼓励我继续创作!