日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

原生JS封装时间运动函数

發(fā)布時間:2024/4/17 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 原生JS封装时间运动函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

/*講時間運動之前先給大家復習一下運動函數(shù)

通常大家都會寫運動框架,一個定時器(Timer),一個步長(step 就是每次運動的距離),一個當前位置(current)一個目標位置(target),然后判斷一下當前位置加上步長和目標位置的關系就可以了

就可以了。

簡寫就是這樣唄*/

var obj=document.getElementById("div");

/*想要獲取元素當前的位置,是要獲取CSS的,obj.style.left="25"px;這樣是OK的,沒有問題,

但是如果你這么寫 var left=obj.style.left;是獲取不到的,CSS的獲取,需要用到方法*/

?

function getCSS(obj,attr){

/*window.getComputedStyle 兼容標準瀏覽器? 谷歌 火狐 蘋果瀏覽器

currentStyle 是兼容IE的*/

return window.getComputedStyle?getComputedStyle(obj)[attr]:obj.currentStyle[attr];

?

}

/*attr 是要改變的元素屬性(left或者top);

step的正負決定運動方向*/

function move(obj,target,step,attr)

{

var timer=null,current=0;

clearInterval(timer);

?

timer=setInterval(function(){

?current=parseFloat(getCSS(obj,attr));//去掉單位px

? if((current+step-target)*step<0) //運動向下或者向上都滿足這個條件

{? ?

? obj.style[attr]=current+step+"px";

}

else{

?obj.style[attr]=target+"px";

?clearInterval(timer);

}

},1000/60);

}

?

時間運動函數(shù)

function getCSS(obj,attr){
return window.getComputedStyle?window.getComputedStyle(obj)[attr]:obj.currentStyle[attr];
}

function $(id){return document.getElementById(id);}
/*時間運動主要依賴一個公式 變化的時間/總時間=變化的位移/總位移
當比值為1的時候,運動就結(jié)束了唄!
變化的時間=當前時間-初始的時間
變化的位置=當前位置-初始位置
每次移動的位移=(變化的時間/總時間)*總位移
*/

function move(obj,attr,time,target)
{
var current=parseFloat(getCSS(obj,attr));//獲取當前位置
var startTime=new Date();//獲取當前時間
var offset=target-current;//總偏移量,總位移
var changeTime=0;//變化的時間
obj.timer=null;
clearInterval(obj.timer);//使用定時器之前清除一下,只是一個良好的習慣,避免多次產(chǎn)生定時器

obj.timer=setInterval(function(){
changeTime=(new Date()-startTime);//變化的時間
var t=changeTime/time;//變化的時間/總時間
if(t>=1){

obj.style[attr]=target+"px";
clearInterval(obj.timer);

}

else{
obj.style[attr]=current+t*offset+"px";

}
},1000/60);

}

?

經(jīng)過測試都是沒問題的?

?

轉(zhuǎn)載于:https://www.cnblogs.com/liveoutfun/p/8733155.html

總結(jié)

以上是生活随笔為你收集整理的原生JS封装时间运动函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。