相关JQuery函数封装

news/2024/7/11 1:15:47 标签: jquery, web开发, 函数

web开发过程中,有些时候任务重,事情多,很多动画效果大多不会再自己来实现,大部分都会使用自己曾经已经做好的动画效果。而为了使用起来快捷,大多都会将动画效果封装为函数,想要动画效果时便调用该动画效果的封装函数,在函数中传入相关参数就可以。因此,在这里为大家提供一些函数的封装。
一、获取DOM方法。由于通过类名获取DOM元素属于HTML5,因此具有兼容性,若想要兼容,则可以调用该方法。

//obj:标签/类名/ID名
function $(obj){
    if(obj.charAt(0)=="."){//判断是否是类名,若是类名,则返回数组
        var classname=obj.slice(1);
        var arr=[];
        var all=document.getElementsByTagName("*");
        for(var i=0;i<all.length;i++){
            if(all[i].className==classname){
                arr.push(a[i]);
            }
        }
        return arr;
    }else if(obj.charAt(0)=="#"){//判断是否为ID名
        return document.getElementById(obj.slice(1));
    }else{//若不是类名或ID名,则为标签
        return document.getElementsByTagName(obj);
    }
}

二、横向缓动效果。使用于横向轮播图。

//缓速框架,使得DOM元素缓动到指定位置,水平方向
function animationX(obj,target,time){//obj:DOM元素   target:目标位置    time:间隔时间  
    clearInterval(obj.timer);
    obj.timer=setInterval(function(){
        var speed=(target-obj.offsetLeft)/10;//缓动速度
        speed=speed>0?Math.ceil(speed):Math.floor(speed);
        obj.style.left=obj.offsetLeft+speed+"px";
        if(obj.offsetLeft==target){
            clearInterval(obj.timer);
        }
    },time)
}

三、垂直缓动效果。适用于垂直轮播图。

//缓速框架,使得DOM元素缓动到指定位置,垂直方向
function animationY(obj,target,time){
    clearInterval(obj.timer);
    obj.timer=setInterval(function(){
        var speed=(target-obj.offsetTop)/10;
        speed=speed>0?Math.ceil(speed):Math.floor(speed);
        obj.style.top=obj.offsetTop+speed+"px";
        if(obj.offsetTop==target){
            clearInterval(obj.timer);
        }
    },time)
}

四、多属性缓动。

function animation(obj,json,fn){//obj:元素,json:属性列表,fn:回调函数
                clearInterval(obj.timer);
                obj.timer = setInterval(function(){
                    var flag = true;
                    //json里面有几个属性就要执行几次
                    var target=0;//记录目标位置
                    var leader=0;//记录当前位置
                    var speed =0;//记录速度
                    for(var key in json){                       
                        if(key=='opacity'){
                            target = Math.round(json['opacity']*100)//0-100
                            leader = getStyle(obj,'opacity')*100//0-100
                        }
                        else{
                            target = parseInt(json[key]);
                            leader = parseInt(getStyle(obj,key));
                        }
                        speed = (target-leader)/10;
                        speed = speed>0?Math.ceil(speed):Math.floor(speed);
                        leader = leader + speed;//0-100
                        if(key=='opacity'){
                            obj.style.opacity = leader/100;
                            obj.style.filter = "alpha(opacity="+leader+")";
                        }
                        else if(key=="zIndex"){
                            obj.style.zIndex = json['zIndex'];
                        }
                        else{
                            obj.style[key] = leader+"px";
                        }

                        if(leader!=target){
                            flag = false                        
                        }
                    }   
                    if(flag){
                        clearInterval(obj.timer);
                        if(fn){
                            fn();
                        }
                    }           

                },20)
            }
//获取任意属性值
function getStyle(obj,attr){//obj:目标元素,attr:属性
    if(window.getComputedStyle){
        return window.getComputedStyle(obj,null)[attr];
    }else{
        return obj.currentStyle[attr];
    }
}

五、获取浏览器可视区域宽高

function client(){
    return{
        "width":window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,
        "height":window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight
    }
}

六、获取卷曲的宽高

function scroll(){
    return{
        "top":document.documentElement.scrollTop+document.body.scrollTop,
        "left":document.documentElement.scrollLeft+document.body.scrollLeft
    }
}

七、事件监听

function addEvent(obj,type,fn){
    if(obj.addEventListener){
        obj.addEventListener(type,fn);
    }else{
        obj.attachEvent("on"+type,fn);
    }
}

http://www.niftyadmin.cn/n/1202851.html

相关文章

攻和防谁更厉害?AI技术在恶意软件检测中的应用和对抗

AI技术的发展为网络安全带来新机遇的同时&#xff0c;黑客也在逐渐利用AI漏洞建立对抗样本以躲避攻击&#xff0c;双方在各自领域的更多尝试也将是AI技术发展的一场新博弈。那么&#xff0c;在应用中&#xff0c;如何利用AI检测技术与恶意软件展开对抗&#xff1f; 腾讯安全技术…

关于Ajax

Ajax(Asynchronous Javascript And XML)是做一个请求&#xff0c;同时利用JS的一个内置对象XHR来实现&#xff0c;因此&#xff0c;Ajax和Jquery一样&#xff0c;并不是一门新的语言。只是通过Ajax,可以从服务器请求数据&#xff0c;将数据动态的渲染到页面上。说到服务器&…

全新版本仿网易云音乐来啦

前言 在前端技术领域中&#xff0c;我们可以切身感受得到技术的更新、变革的速度是非常快的&#xff0c;所以工程师们都会需要时常关注和学习一些新技术、新标准。 因为在工作中负责项目的技术栈相比于业界来说&#xff0c;算比较落后了&#xff0c;所以自己动手来开发一个音乐…

HTML5的相关内容

随着技术的不断发展&#xff0c;如今HTML已经发展到了H5&#xff0c;HTML5新增的标签使得开发人员节省了很多代码量、工作量。虽然目前&#xff0c;很多浏览完还未完全兼容适应H5&#xff0c;但现在&#xff0c;几乎每人人手一部手机或是Ipad&#xff0c;而HTML5也广泛的适用于…

【ocp-12c】最新Oracle OCP-071考试题库(41题)

41、(8-14) choose two View the Exhibit and examine the structure of the ORDERS table. The columns ORDER_MODE and ORDER_TOTAL have the default values direct and 0 respectively. Which two INSERT statements are valid? (Choose two.) A) INSERT INTO (SELECT ord…

移动端web开发

如今&#xff0c;走在路上&#xff0c;望一望四周均会发现&#xff0c;十个人当中有九个是低头族。科技的发展改善了人们的生活品质&#xff0c;手机由曾经的老人机、按键机到如今的智能手机&#xff0c;还有即将普及的全面屏时代。手机的普及&#xff0c;手机APP也随着盛行&am…

java中两个Integer类型的值相比较的问题

转载自&#xff1a; https://www.cnblogs.com/xh0102/p/5280032.html 两个Integer类型整数进行比较时&#xff0c;一定要先用intValue()方法将其转换为int数之后再进行比较&#xff0c;因为直接使用比较两个Integer会出现问题。 总结&#xff1a; 当给Integer直接赋值时&#x…

web响应式开发

人们在浏览网页时&#xff0c;不仅仅是使用电脑来浏览&#xff0c;还有些是通过Ipad、手机等设备浏览。而Ipad、电脑、手机的屏幕大小不同且每一款手机、IPad的屏幕也有大小区别&#xff0c;网页在这些设备的显示也必定会有所区别。显而易见&#xff0c;电脑屏幕最大&#xff0…