• tool.js


    //尝试创建一个可以执行简单动画的函数
    /*
     * 参数:
     * 	obj:要执行动画的对象
     * 	attr:要执行动画的样式,比如:left top width height
     * 	target:执行动画的目标位置
     * 	speed:移动的速度(正数向右移动,负数向左移动)
     *  callback:回调函数,这个函数将会在动画执行完毕以后执行
     */
    function move(obj, attr, target, speed, callback) {
    	//关闭上一个定时器
    	clearInterval(obj.timer);
    
    	//获取元素目前的位置
    	var current = parseInt(getStyle(obj, attr));
    
    	//判断速度的正负值
    	//如果从0 向 800移动,则speed为正
    	//如果从800向0移动,则speed为负
    	if(current > target) {
    		//此时速度应为负值
    		speed = -speed;
    	}
    
    	//开启一个定时器,用来执行动画效果
    	//向执行动画的对象中添加一个timer属性,用来保存它自己的定时器的标识
    	obj.timer = setInterval(function() {
    
    		//获取box1的原来的left值
    		var oldValue = parseInt(getStyle(obj, attr));
    
    		//在旧值的基础上增加
    		var newValue = oldValue + speed;
    
    		//判断newValue是否大于800
    		//从800 向 0移动
    		//向左移动时,需要判断newValue是否小于target
    		//向右移动时,需要判断newValue是否大于target
    		if((speed < 0 && newValue < target) || (speed > 0 && newValue > target)) {
    			newValue = target;
    		}
    
    		//将新值设置给box1
    		obj.style[attr] = newValue + "px";
    
    		//当元素移动到0px时,使其停止执行动画
    		if(newValue == target) {
    			//达到目标,关闭定时器
    			clearInterval(obj.timer);
    			//动画执行完毕,调用回调函数
    			callback && callback();
    		}
    
    	}, 30);
    }
    
    /*
     * 定义一个函数,用来获取指定元素的当前的样式
     * 参数:
     * 		obj 要获取样式的元素
     * 		name 要获取的样式名
     */
    function getStyle(obj, name) {
    
    	if(window.getComputedStyle) {
    		//正常浏览器的方式,具有getComputedStyle()方法
    		return getComputedStyle(obj, null)[name];
    	} else {
    		//IE8的方式,没有getComputedStyle()方法
    		return obj.currentStyle[name];
    	}
    
    }
    
    //定义一个函数,用来向一个元素中添加指定的class属性值
    /*
     * 参数:
     * 	obj 要添加class属性的元素
     *  cn 要添加的class值
     * 	
     */
    function addClass(obj, cn) {
    
    	//检查obj中是否含有cn
    	if(!hasClass(obj, cn)) {
    		obj.className += " " + cn;
    	}
    
    }
    
    /*
     * 判断一个元素中是否含有指定的class属性值
     * 	如果有该class,则返回true,没有则返回false
     * 	
     */
    function hasClass(obj, cn) {
    
    	//判断obj中有没有cn class
    	//创建一个正则表达式
    	//var reg = /b2/;
    	var reg = new RegExp("\b" + cn + "\b");
    
    	return reg.test(obj.className);
    
    }
    
    /*
     * 删除一个元素中的指定的class属性
     */
    function removeClass(obj, cn) {
    	//创建一个正则表达式
    	var reg = new RegExp("\b" + cn + "\b");
    
    	//删除class
    	obj.className = obj.className.replace(reg, "");
    
    }
    
    /*
     * toggleClass可以用来切换一个类
     * 	如果元素中具有该类,则删除
     * 	如果元素中没有该类,则添加
     */
    function toggleClass(obj, cn) {
    
    	//判断obj中是否含有cn
    	if(hasClass(obj, cn)) {
    		//有,则删除
    		removeClass(obj, cn);
    	} else {
    		//没有,则添加
    		addClass(obj, cn);
    	}
    
    }
    
  • 相关阅读:
    Postman请求Https接口与认证
    HTML实用
    ORM实例教程_转
    web跨域问题CORS
    gin入门
    swagger应用
    k8s之容器
    腾讯高级工程师:如何从头开始写游戏服务器框架_转
    tensorflow入门
    sublime Text 3实用功能和常用快捷键收集
  • 原文地址:https://www.cnblogs.com/TomHe789/p/12734881.html
Copyright © 2020-2023  润新知