封装一个运动函数

 1 //支持 缓冲 + 多物体 + 链式 + 完美
 2 //obj:运动的对象
 3 //json:存储多个attr和target
 4 //callback :回调函数  代表一个功能  当一个函数作为参数时,这样的函数叫做回调函数
 5 function startMove(obj,json,callback){
 6     clearInterval( obj.timer );//在运动之前先清空定时器
 7     obj.timer = setInterval( function(){
 8         var flag = true;//假设值为true时  可以停止定时器了
 9         for( var attr in json ){
10             //获取实际样式值
11             var current = 0;
12             if( attr == "opacity" ){
13                 current = getStyle( obj , attr )*100;
14             }else if( attr == "zIndex" ){
15                 current = parseInt( getStyle( obj , attr ) );
16             }else{
17                 current = parseInt( getStyle( obj , attr ) );
18             }
19             //获取速度
20             var speed = (json[attr] - current)/10;
21             speed = speed > 0 ? Math.ceil( speed ) : Math.floor( speed );
22
23             if( json[attr] != current ){
24                 flag = false;//假设不成立
25             }
26             //设置样式继续发生变化
27             if( attr == "opacity" ){
28                 obj.style[attr] = (current + speed)/100;
29             }else if( attr == "zIndex" ){
30                 obj.style[attr] = json[attr];
31             }else{
32                 obj.style[attr] = current + speed + "px";
33             }
34         }
35
36         //循环结束后 如果flag的值还是true  就可以停止定时器了
37         if( flag ){//判断结束条件 并设置样式
38             clearInterval( obj.timer );
39             //上一个动作完成了  开始进入到下一个动作
40             //下一个动作不确定  此处有一个功能 是可变的
41             if( callback ){//如果用户传递了该参数 就执行下一个动作
42                 callback();
43             }
44         }
45     },30 )
46 }
47
48 //封装一个获取非行内元素样式值的函数
49 function getStyle( obj ,attr ){
50     if( getComputedStyle ){
51         return getComputedStyle( obj,false )[attr];
52     }else{
53         return obj.currentStyle[attr];
54     }
55 }

//支持 缓冲 + 多物体 + 链式 + 完美//  obj : 运动的对象  // json :存储多个attr和target//callback :代表一个功能    一个函数  当一个函数作为参数时,这样的函数叫做回调函数//回调 :回头再调用function startMove(obj,json,callback){//{ width:3,height:200 }clearInterval( obj.timer );obj.timer = setInterval( function(){var flag = true;//假设值为true时  可以停止定时器了for( var attr in json ){//获取实际样式值var current = 0;if( attr == "opacity" ){current = getStyle( obj , attr )*100;}else if( attr == "zIndex" ){current = parseInt( getStyle( obj , attr ) );}else{current = parseInt( getStyle( obj , attr ) );}//获取速度var speed = (json[attr] - current)/10;speed = speed > 0 ? Math.ceil( speed ) : Math.floor( speed );if( json[attr] != current ){flag = false;//假设不成立}//设置样式继续发生变化if( attr == "opacity" ){obj.style[attr] = (current + speed)/100;}else if( attr == "zIndex" ){obj.style[attr] = json[attr];}else{obj.style[attr] = current + speed + "px";}}//循环结束后 如果flag的值还是true  就可以停止定时器了if( flag ){//判断结束条件 并设置样式clearInterval( obj.timer );//上一个动作完成了  开始进入到下一个动作//下一个动作不确定  此处有一个功能 是可变的if( callback ){//如果用户传递了该参数 就执行下一个动作callback();}}},30 )}
//封装一个函数 功能是获取非行内元素样式值function getStyle( obj ,attr ){if( getComputedStyle ){return getComputedStyle( obj,false )[attr];}else{return obj.currentStyle[attr];}}

原文地址:https://www.cnblogs.com/youy67/p/10546985.html

时间: 2024-08-01 00:42:59

封装一个运动函数的相关文章

jquer和封装的运动函数对比

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>图片切换----->> jquer和封装的运动函数对比 </title> <style type="text/css"> #parent{ margin:500px 500px 0 500px; position:

自己封装一个readline函数实现服务器客户端回射

实现的功能:一次只能读取一行,客户端输入之后,一回车,马上字符串传到服务器端并显示在终端,然后服务器端将字符串又传回给客户端. 服务器端可以接收多个客户端的连接请求,并fork一个子进程来进行服务. (1)封装一个只能访问套接字描述符的readline函数 (2)服务器端启动SO_REUSEADDR套接字选项,以便服务器端不必等待TIME_WAIT状态 这是服务器端代码: 1 #include<unistd.h> 2 #include<sys/types.h> 3 #include

js 封装一个动画函数

//动画函数---任意一个元素移动到指定的目标位置 //element为元素 target为位置 function carToon(element, target) { //设置一个定时器让他循环去增加 element.timeid = setInterval(function () { //拿到当前的位置(纯数字) var current = element.offsetLeft; //每次要移动的像素current var step = 10; //注意 这里是判断到底往那边走 如果当前的位

自己封装一个MySignal函数,方便以后直接copy.

传统的signal可能会有信号未决或者信号重入或多或少的问题,毕竟这个函数已经很多年了. 所以推荐使用sigaction函数,但是sigaction函数相对signal较为复杂,而且每次要写一大堆.因此对于习惯使用signal这种简单方便的函数我们不妨自己包一下sigaction! int MySigaction(int signo, void (*func)(int)) { struct sigaction act, oact; act.sa_handler = func; sigemptys

封装一个分页函数

<?php  /**   * 分页链接生成函数   * @param int $page 当前访问的页码   * @param int $total_page 总页数   * @return string 拼接好的url地址   */ function showPage($page,$total_page){  //拼接"首页"链接 $html = '<a href="?page=1">[首页]</a>';  //拼接"上一页

封装一个Ajax工具函数

/*封装一个ajax工具函数*/ window.$ = {}; /*通过$定义一个ajax函数*/ /* * 1. type   string   请求的方式  默认是get * 2. url    string   请求地址  接口地址 * 3. async  boolean  默认的是true * 4. data   object   {}请求数据 * * 5.success function  成功回调函数 * 6.error   function  失败的回调函数 * */ $.ajax

数组的方法(连接,截取,删除,插入,替换,以及封装一个函数)

连接两个数组:concat,形成一个新数组 数组1.concat(数组2,数组1) 返回值:数组 var arr1=[1,2], arr2=[3,4], arr3; arr3=arr1.concat(arr2,arr1); console.log(arr3); 另外方法,截取<是来是>__.slice(start,end) ___.slice(start,end)功能:从已有的数组中返回选定的元素 参数 如果参数有一个是负数,则用数组长度加上该数来确定相应的位置 start(必须)规定从何处开

封装一个通过类名获取对象的函数

由于HTML DOM 的getElementsByClassName()不兼容ie9以下浏览器,所以需要封装一个通过类名获取对象的函数getElementsByClass().参数class是要获取的class类名,parent是其父级的id,确定范围用的,可选.

使用原生JS实现一个风箱式的demo,并封装了一个运动框架

声明,该DEMO依托于某个培训机构中,非常感谢这个培训结构.话不多说,现在开始改demo的制作. 首先,在前端的学习过程中,轮播图是我们一定要学习的,所以为了更加高效的实现各种轮播图,封装了一个运动的框架. 1 function getStyle(obj,attr) { 2 if(obj.currentStyle){ 3 return obj.currentStyle[attr];//为了获取IE下的属性值 4 }else{ 5 return window.getComputedStyle(ob