當前位置:首頁 » 操作系統 » js動畫演算法

js動畫演算法

發布時間: 2024-09-17 21:12:18

⑴ js實現勻速下落動畫怎麼實現

/*
data:2022-11-17
author:lfp
move運動函數
dom--需要運動的對象
json--{width:100,height:100,left:100,top:100}
callback--回調函數 可調用自己 實現非同步動畫效果
*/
//主函數
function move(dom,json,callback){
//讓每一次動畫都是新的開始,防止出現動畫一直不停的運行
if(dom.timer)clearInterval(dom.timer);
var i=0;
var start=0;
//在對象中增加timer 便於控制他停止
dom.timer=setInterval(function(){
i++;
//循環每一個目標屬性添加動畫方法
for(var attr in json){
//獲取當前attr的屬性值 已經去除了px 還有 如果初始值是auto 用零代替
var cur=getStyle(dom,attr);
if(i==1)start=cur;
//拿到該屬性的目標值
var target=json[attr];
//設置分成10次增加增量 你可以根據需要修改
var speed=(target-start)/10;
console.log(speed+"====="+cur)
//如果沒有達到目標值就一直加
if(Math.abs(cur-target)>1){
dom.style[attr]=cur+speed+"px";
}else{
//達到目標值了就停止或者其他情況也停止
clearInterval(dom.timer);
//等停止了動畫再回調函數進行另外的操作
if(callback)callback.call(dom);
};
};
},45);
};
//配套函數
function getStyle(dom,attr){
var value="";
if(window.getComputedStyle){
value=window.getComputedStyle(dom,false)[attr];
}else{
value=dom.currentStyle[attr];
};
value=parseInt(value);
return value || 0;//如果你再樣式中沒有設置初始的值就會出現NaN 所以要用0來補充
};
function $(id){
//return document.getElementById(id);
return document.querySelector("#"+id);
};

熱點內容
資料庫時區 發布:2024-11-24 18:28:30 瀏覽:614
板的塑性演算法 發布:2024-11-24 18:17:59 瀏覽:29
酷狗緩存亂碼 發布:2024-11-24 18:12:42 瀏覽:509
aes演算法模式 發布:2024-11-24 17:47:19 瀏覽:612
linux查看埠是否佔用 發布:2024-11-24 17:42:15 瀏覽:467
手機電影天堂的文件夾 發布:2024-11-24 17:39:08 瀏覽:690
吉林金稅盤安全伺服器地址 發布:2024-11-24 17:39:00 瀏覽:277
360無法訪問網路 發布:2024-11-24 17:32:48 瀏覽:558
普通員工解壓拓展注意什麼細節 發布:2024-11-24 17:32:06 瀏覽:435
安裝密碼鎖為什麼要在裡面纏膠帶 發布:2024-11-24 17:27:59 瀏覽:981