• (原创)封装的原生弹出层一


    刚刚在博客园开通博客,试了一下,还不错,比我之前那个自己买的空间快多了,(主要是那个虚拟主机商太狗血了,辛苦做了一年的博客就这样被他扼杀了...恨啊),所以还是来这边第三方博客写东西吧。。。

    最近抽空余的时间写了个弹出层的插件,功能不算强大,当练手,以下为示例:

    不设任何options参数的box(默认高200px,宽300px)

    普通设定高宽的box

    高宽自适应内容高宽的box

    不带预载动画的box

    延迟自动消失的box

    title自定义的box

    不带标题栏的的box

    不带标题栏关闭按钮的box

    带按钮和回调参数的box

    调用 Hongru.box.open(con,options)函数,参数con为弹出层主要内容,可以是html代码。options为一个object,可选参数目前有
    {
    300 //自定义,弹出层主体(除边框和标题栏的宽度),为0时自适应。
    height:200//自定义,弹出层主体(除边框和标题栏的高度),为0时自适应。
    isPre:1 //true or false,是否有预加载背景图,
    time:0 //延迟自动关闭时间,秒为单位,0时不触发
    title:''  //自定义title
    isBar:1 //true or false,是否有标题栏
    isShut:1 //是否有关闭按钮
    }
    另 Hongru.box.ask(con,options,surecall,cancelcall)为带按钮的提示框,带回调函数前两个参数同上,后两个参数分别为‘确认’和‘取消’的回调函数
    其中加入了透明度渐变和大小渐变,透明度渐变主体函数如下:
    alphaAnim:function(obj,destination,direction){
    			var opacity = Math.round(obj.style.opacity*100);
    			if(opacity == destination){
    				clearInterval(obj.animing);
    				if(direction == -1){
    					obj.style.display='none';
    					obj == box?Hongru.box.alpha(mask,-1,0):content.innerHTML=box.style.backgroundImage='';
    				}else{
    					curOptions = {_width,height:_height,isPre:isPreload}
    					obj == mask?this.alpha(box,1,100):Hongru.box.fill(_content,curOptions);
    				}
    			}else{
    				var n=Math.ceil((opacity+((destination-opacity)*.5))); n=n==1?0:n;
    				obj.style.opacity=n/100; 
    				obj.style.filter='alpha(opacity='+n+')';
    			}
    		},
    
    box大小渐变函数体如下:
    sizeAnim:function(obj,width,otherW,wFlag,height,otherH,hFlag){
    			var objW = obj.offsetWidth-otherW, objH = obj.offsetHeight-otherH;
    			if(objW == width && objH == height){
    				clearInterval(obj.sizing); 
    				box.style.backgroundImage='none'; 
    				content.style.display='block';
    			}else{
    				if(objW!=width){
    					var n = objW+((width-objW)*.5); 
    					obj.style.width = wFlag?Math.ceil(n)+'px':Math.floor(n)+'px';
    					}
    				if(objH!=height){
    					var n = objH+((height-objH)*.5); 
    					obj.style.height = hFlag?Math.ceil(n)+'px':Math.floor(n)+'px';
    					}
    				this.pos();
    				
    			}
    		},
    
    好了,废话不多说了,附上源文件打包下载:狠狠点击这里
    如果觉得不错,请移驾点下 下面 的推荐
  • 相关阅读:
    保留两位小数 只能数字或小数 只能有一个小数点并且第一位不能为小数点的正则表达式
    Vue数据改变页面不更新 使用this.$set()强制更新的用法
    给对象新增属性
    vue-element的<el-tooltip>气泡提示失效问题
    vue刷新更新子组件
    watch监控对象
    vue-element-admin的api的js文件 get, post, put, delelt传参
    git 还原到某个版本
    在64位Win7系统中配置jsp开发环境以及一些问题解决方案
    在64位Win7系统中配置Apache+Mysql+PHP环境以及一些问题解决方案
  • 原文地址:https://www.cnblogs.com/hongru/p/1832579.html
Copyright © 2020-2023  润新知