zoukankan      html  css  js  c++  java
  • 一个好用的jquery弹出层layer

    插件官方地址:http://xu.sentsin.com/jquery/layer/

    layer API之键值(仅在需要时配置,未配置的会用默认)
    键值对 描述 备注
    skin : 0 层的皮肤编号,值为整数型。 目前默认只提供一种皮肤,当你按照样式规则新增皮肤时,你需配置该参数。
    shade : [0.5 , '#000' , true] 控制遮罩。0.5:遮罩透明度,'#000':遮罩颜色,true:是否遮罩(否:false)  
    shadeClose : false 用来控制点击遮罩区域是否关闭层。(是:true) 实用
    fix : true, 层是否固定。否:false 实用
    move : ['.xubox_title' , true] 控制层拖拽。'.xubox_title':拖拽绑定事件所在元素选择器(默认为标题栏),true:是否允许拖拽(否:false)  
    type : 0, 层的类型。0:信息框(默认),1:页面层,2:iframe层,3:加载层,4:小tips层 重要参数,在调用不同层类型时必须设置
    title : ['信息' , true] 控制标题栏。'信息':标题栏文字,true:是否显示标题栏(否:false)  
    offset : ['220px' , '50%'] 控制层坐标。'220px':纵坐标,'50%':横坐标 较重要参数
    area : ['310px' , 'auto'] 控制层宽高。'310px':宽,'auto':高 重要参数
    closeBtn : [0 , true] 控制层右上角关闭按钮。0:关闭按钮风格(1:风格2),true:是否显示关闭按钮(否:false)  
    time : 0 自动关闭等待秒数,整数值 实用
    border : [10 , 0.3 , '#000', true] 10:边框大小,0.3:边框透明度,'#000':边框颜色,true:是否显示边框(否:false) 通过它您可以任意配置边框,如果你觉得她碍眼,你完全可以不输出她。
    zIndex : 19891014 控制层堆叠顺序(z-index)。整数值,默认是贤心的生日。 合理设置它,可以避免与其它插件的z-index冲突
    maxWidth : 400 最大宽度。整数值。 当宽度设为auto时才有用。
    fadeIn : [300 , false] 控制层的渐显。300:渐显频率,false:是否开启渐显(默认不开启,true:开启) 这效果,有人爱、有人厌。
    dialog : {
        btns : 1,
        btn : ['确定','取消'],
        type : 3,
        msg : '',
        yes : function(index){ },
        no : function(index){ }
    }
                            

    信息框层模式私有参数。

    btns : 按钮的个数。提供了0-2的选择

    btn : [按钮一的值 , 按钮二的值]

    type : 图标类型,提供了0-10的选择,可以试一试每一个图标,有你喜欢的吗?

    msg : 信息框内容,重要参数

    yes :按钮一的回调

    no :按钮二的回调

    很常用
    page : {dom : '#xulayer'} 页面层模式私有参数。dom:需要弹出的html片段所对应的选择器(class 或 id,推荐用id,确保唯一。) 当你设置了type:1时,dom是必须要设置的,否则无法捕获元素。很常用。
    iframe : {src : 'http://xu.sentsin.com'} iframe层模式私有参数。src:要打开的网址 使用率非常高,尤其是对于喜欢用iframe的同学。
    loading : {type : 0} 加载层私有属性。type:loading图标类型(提供了0-3的选择,试试吧,看看有无你喜欢的) 配合ajax,在执行之前使用,ajax请求成功后,必须用加载层私有方法将其关闭:LAYER.loadClose();
    tips : {
        msg : '',
        follow : ''
    }          
                            
    tips小提示层私有属性。msg:提示内容,follow:触发事件对应的选择器 tips的界面似乎戳了点,不过将就着用吧,实在不行就去layer.css改一下。
    success : function(layer){} 层弹出成功后的回调函数 层展现后,你想必需要做一些其它的事件处理吧,那么,写在这里面
    close : function(index){} 层右上角关闭按钮的回调函数。 想一下,有时点击关闭你是否需要做别的行为处理,那么,你应该写在这里面
    end : function(){} 层被彻底关闭后执行的回调函数。 你认为她跟close回调相似?那你错了,close绑定的是关闭按钮的click事件,而end,只是单纯的一个回调,当设置了自动关闭时,它可能会派上用场不是?
    layer API之内置方法
    方法名 描述 备注
    layer.alert() layer对象下的方法,对单个按钮信息框层的重新封装,layer.alert(alertMsg , alertType, alertTit , alertYes),四个参数,alertMsg:信息内容(文本),alertType:提示图标(整数,0-10的选择),alertTit:标题(文本),alertYes:按钮的回调函数 如:layer.alert('前端攻城师贤心')
    layer.confirm() layer对象下的方法,对询问框的重新封装,layer.confirm(conMsg , conYes , conTit , conNo),四个参数,conMsg:信息内容(文本),conYes:按钮一回调,conTit:标题(文本),conNo:按钮二的回调 如:
    layer.confirm('确定删除',function(){ 
    layer.msg('删除成功!') 
    });
    
    layer.msg() layer对象下的方法,对无标题栏信息框层的重新封装,layer.msg(msgText , msgTime , msgType , maxWidth),四个参数,msgText:信息内容(文本),msgTime:自动关闭所需等待秒数(默认2秒),msgType:提示图标(整数,0-10的选择),maxWidth:最大宽度 如:layer.msg('嗨,伙计,我是layer')
    layer.tips() layer对象下的方法,对tips层的重新封装,layer.tips(html , follow , time , maxWidth),四个参数,html:信息内容(文本),follow:触发事件对应的选择器,time:自动关闭所需等待秒数,maxWidth:最大宽度 如:
    $('.demo').click(function(){
    	layer.tips('这是小提示',this);
    });
    
    layer.load() layer对象下的方法,对加载层的重新封装,layer.load(loadTime , loadgif , loadShade),三个参数,loadTime:自动关闭所需等待秒数,loadgif:加载图标(整数,0-3的选择),loadShade:是否遮罩(true 或 false) 如:layer.load(3);
    LAYER.getIndex(index) LAYER对象下的方法,开启页面层模式(type:1时)后才有用,用于获取layer的当前索引,从而协助通过非layer元素触发事件所执行的关闭方法 如:
    success : function(){
        $('#test').click(function(){
            var index = LAYER.getIndex(this);
            LAYER.close(index);
        });
    }
    
    LAYER.getChildFrame(selector) LAYER对象下的方法,获取子iframe中的DOM 非常实用,父窗口操作iframe中内容时可以大显神威。如:LAYER.getChildFrame('body').html() //得到iframe的body的全部html元素
    LAYER.getFrameIndex() LAYER对象下的方法,得到iframe层的索引,子iframe操作父窗口时使用
    $('#a').click(function(){
    	var index = parent.LAYER.getFrameIndex();
    	parent.LAYER.close(index);	
    });
    
    LAYER.close(index) LAYER对象下的方法,用于在执行回调后关闭层 如:
    yes : function(index){
       LAYER.close(index);
       layer.msg('已删除');
    }
    
    LAYER.loadClose() LAYER对象下的方法,用于关闭加载层,仅loading私有  
    LAYER.shift(type , rate) layer弹出时内置动画,type:动画类型,供四种中选择,左上:'left-top',右上:'right-top',左下:'left-bottom',右下:'right-bottom' 。 rate:动画频率,毫秒 如:
    success : function(){
       LAYER.shift('right-bottom' , 400);
    }
    
    LAYER.loadClose() LAYER对象下的方法,用于关闭加载层,仅loading私有  
    LAYER.autoArea(index) 用来处理在层中宽高改变时,重新自适应层宽高。 如:
    success : function(){
        $('#test').click(function(){
           $(this).append('</div>新增的元素</div>');
            var index = LAYER.getIndex(this);
            LAYER.autoArea(index);
        });
    }

    下面是一些示例:

    自己写的一段可用的代码:

    $("#btnId").click(function(){//btnId为触发弹出层的按钮ID
      $.layer({
        type : 1,
        title : ['新增图片内容' , true],
        offset : ['30px' , '50%'],
        area : ['855px','350px'],
        page : {dom : '#tt'},
        success : function(layer){
          //加载层成功,绑定确定和关闭按钮
          $('#div2Sure').unbind('click').bind('click',function(){
            var index = LAYER.getIndex(this);
            LAYER.close(index);
          });
          $('#div2Close').unbind('click').bind('click',function(){
            var index = LAYER.getIndex(this);
            LAYER.close(index);
          });
        }
      });
    });

    官网上的示例:

    //信息框一
    $.layer({
        area : ['auto','auto'],
        dialog : {msg:'白菜级别前端攻城师贤心',type : 8}	
    });
    //信息框二
    $.layer({
        shade : ['',false],
        area : ['auto','auto'],
        title : ['',false],
        dialog : {msg:'前端攻城师贤心'}	
    });
    //询问框
    $.layer({
        shade : ['',false],
        area : ['auto','auto'],
        dialog : {
            msg:'您是如何看待前端开发?',
            btns : 2, 
            type : 4,
            btn : ['重要','奇葩'],
            yes : function(){
                layer.msg('您选择了重要。',2,1);
            },
            no : function(){
                layer.msg('奇葩!!!',2,4);
            }
        }
    });
    //页面层一
    $.layer({
        shade : ['',false],
        type : 1,
        area : ['auto','auto'],
        offset : ['300px',''],
        border : [10 , 0.5 , '#628C1C', true],
        page : {dom : '.layer_notice'},
        close : function(index){
            LAYER.close(index);
            $('.layer_notice').show();	
        }
    });
    //页面层二
    $.layer({
        type : 1,
        title : ['',false],
        fix : false,
        offset:['50px' , ''],
        area : ['auto','auto'],
        shadeClose : true,
        page : {dom : '#tong'}
    });
    $('#tong').live('click',function(){
        var index = LAYER.getIndex(this); 
        LAYER.close(index);
    });
    //iframe层
    $.layer({
        type : 2,
        closeBtn : [0,false],
        time : 5,
        iframe : {
            src : 'http://player.youku.com/player.php/sid/XMjY3MzgzODg0/v.swf'
        },
        title : ['' , false],
        area : ['500px','300px'],
        success : function(){ //层加载成功后进行的回调
            LAYER.shift('right-bottom',1000); //浏览器右下角弹出
        },
        end : function(){ //层彻底关闭后执行的回调
            $.layer({
                type : 2,
                offset : ['100px' , ''],
                iframe : {
                    src : 'http://xu.sentsin.com/about/'
                },	
                area : ['960px','500px']
            })
        }
    });
    //加载层
    $.layer({
        type : 3,
        time : 2
    });
    //小tips层
    $('.class').click(function(){
    	layer.tips('我爱你,你爱我吗?' , this , 3);
    });
    信息框一:
    layer.alert('一个很普通的信息框');
    信息框二:
    $.layer({
        area : ['auto','auto'],
        title : ['',false],
        dialog:{msg:'信息框演示二'}
    });
    信息框三:
    layer.confirm('信息框演示三',function(index){
        LAYER.close(index);
        layer.msg('信息框演示三');
    });
    信息框四:
    $.layer({
        fix : false,
        move : ['',false],
        shade : ['' , '' , false],
        area : ['auto','auto'],
        dialog:{msg:'这是一个既不能固定,又不能拖拽的层'}
    });
    信息框之变脸:
    var i = 0;
    $.layer({
        dialog:{type:0,msg:'<a href="javascript:;" id="setface">点击我,试试变脸</a>'},
        success : function(layer){
            $('#setface').unbind('click').bind('click',function(){
                var index = LAYER.getIndex(this);
                i++;
                layer.find('.xubox_msgico').removeClass('xubox_msgtype'+(i-1)).addClass('xubox_msgtype'+i);
                i > 10 && LAYER.close(index);
            });
        },
        end : function(){
            i = 0;
        }
    });
    信息框六:
    layer.msg('2秒后自动关闭');

    一:页面层之仿百度登录:
    $.layer({
        type : 1,
        title : ['',false],
        closeBtn : ['',false],
        border : ['','','',false],
        area : ['455px','371px'],
        page : {dom : '#baidu'}
    });
    $('#baidu').live('click',function(){
        var index = LAYER.getIndex(this); 
        LAYER.close(index);
    });
    二、页面层之图片:
    $.layer({
        type : 1,
        title : ['',false],
        fix : false,
        offset:['50px' , ''],
        area : ['515px','615px'],
        page : {dom : '#tong'}
    });
    $('#tong').live('click',function(){
        var index = LAYER.getIndex(this); 
        LAYER.close(index);
    });
    三、页面层之淘宝:
    $.layer({
        type : 1,
        title : ['',false],
        offset:['150px' , ''],
        border : ['','','',false],
        area : ['503px','395px'],
        page : {dom : '#taobao'}
    });
    $('#taobao').live('click',function(){
        var index = LAYER.getIndex(this); 
        LAYER.close(index);
    });
    一:iframe层之从左下角弹出
    $.layer({
        type : 2,
        title : ['',false],
        iframe : {src : 'http://pic10.nipic.com/20101023/145234_134017065776_2.gif'},
        area : ['350px' , '466px'],
        success : function(){
            LAYER.shift('left-bottom',400);	
        }
    });
    二:iframe层之正中央
    $.layer({
        type : 2,
        title : ['天之痕三个人的时光-半抱琵琶版',true],
        iframe : {src : 'http://www.tudou.com/v/Rvy0IbYmBrQ/&resourceId=0_04_05_99/v.swf'},
        area : ['750px' , '466px'],
        offset : ['100px','']
    });
    三:iframe层之子父操作
    $.layer({
        type : 2,
        title : ['iframe子父操作测试',true],
        iframe : {src : 'iframe.html'},
        area : ['200px' , '206px'],
        offset : ['150px',''],
        close : function(index){
            alert('您得到了子窗口的所有文本:' + LAYER.getChildFrame('body').text());
            LAYER.close(index);
        }
    }); 
    子窗口操作父窗口:
    $('#a').click(function(){
    	var index = parent.LAYER.getFrameIndex();
    	parent.LAYER.close(index);	
    }); 
    加载层一:
    $.layer({
        type : 3,
        time : 2
    }); 或:layer.load(3,2);
    加载层二:					
    $.layer({
        type : 3,
        time : 2,
        shade : ['','','',false],
        border : [0,'','','',false],
        loading : {type : 3}
    });
    一:tips小提示层
    layer.tips('嗨,朋友,更多效果你自己慢慢发现吧。',this);
    二:渐显弹出layer
    $.layer({
        area : ['','auto'],
        fadeIn : [500,true],
        dialog : {msg : '嗨,朋友,更多效果你自己慢慢发现吧。'}
    });
  • 相关阅读:
    Spring如何处理线程并发问题?
    什么是spring?
    如何通过sql语句完成分页?
    哪一个List实现了最快插入?
    请说出作用域public,private,protected,以及不写时的区别?
    使用什么命令查看用过的命令列表?
    静态变量和实例变量的区别?
    使用什么命令查看磁盘使用空间? 空闲空间呢?
    什么是 Mybatis?
    是否可以继承String类?
  • 原文地址:https://www.cnblogs.com/tengzhouboy/p/2811918.html
Copyright © 2011-2022 走看看