亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

Javascript 完美運動框架(逐行分析代碼,讓你輕松了運動的原理)

2024-05-06 16:15:14
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了Javascript 完美運動框架,逐行分析代碼,讓你輕松了運動的原理,需要的朋友可以參考下

大家一聽這名字就知道,有了這套框架 網上的效果基本都是可以實現的。實際上之前的運動框架還是有局限性的,就是不能讓好幾個值一塊運動。

那這個問題怎么解決呢? 我們先來看看之前的運動框架

 

 
  1. function getStyle(obj, name) { 
  2. if (obj.currentStyle) { 
  3. return obj.currentStyle[name]; 
  4. else { 
  5. return getComputedStyle(obj, null)[name]; 
  6.  
  7.  
  8. function startMove(obj, attr, iTarget) { 
  9. clearInterval(obj.time); 
  10. obj.time = setInterval(function() { 
  11. var cur = 0; 
  12.  
  13. if (attr == 'opacity') { 
  14. cur = Math.round(parseFloat(getStyle(obj, attr)) * 100); 
  15. else { 
  16. cur = parseInt(getStyle(obj, attr)); 
  17.  
  18. var speed = (iTarget - cur) / 6; 
  19.  
  20. speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed); 
  21.  
  22. if (cur == iTarget) { 
  23. clearInterval(obj.time); 
  24. else { 
  25. if (attr == 'opacity') { 
  26. obj.style.filter = 'alpha(opacity=' + cur + speed + ')'
  27. obj.style.opacity = (cur + speed) / 100; 
  28. else { 
  29. obj.style[attr] = cur + speed + 'px'
  30. }, 30); 

怎么修改呢? 實際上很簡單, 在過去的框架中,你每一次只能傳一個樣式,和一個值。那么現在把這些改成一個json對象。相信大家就明白了。

我們調用的時候就是startMove(oDiv,{width:200,height:200}); 如果需要的話就在加上回調函數。那么我們具體看看代碼是怎么修改的。

 

 
  1. function startMove(obj, json, fnEnd) 
  2. var MAX=18; 
  3. //每次調用就只有一個定時器在工作(開始運動時關閉已有定時器) 
  4. //并且關閉或者開啟都是當前物體的定時器,已防止與頁面上其他定時器的沖突,使每個定時器都互不干擾  
  5. clearInterval(obj.timer);  
  6. obj.timer=setInterval(function (){ 
  7.  
  8. var bStop=true// 假設:所有的值都已經到了 
  9.  
  10. for(var name in json) 
  11. var iTarget=json[name]; // 目標點 
  12.  
  13. //處理透明度,不能使用parseInt否則就為0了  
  14.  
  15. if(name=='opacity'
  16.  
  17. // *100 會有誤差 0000007 之類的 所以要用 Math.round() 會四舍五入 
  18. var cur=Math.round(parseFloat(getStyle(obj, name))*100);  
  19. else 
  20. var cur=parseInt(getStyle(obj, name)); // cur 當前移動的數值 
  21.  
  22. var speed=(iTarget-cur)/5; // 物體運動的速度 數字越小動的越慢 /5 : 自定義的數字 
  23.  
  24. speed=speed>0?Math.ceil(speed):Math.floor(speed); 
  25.  
  26. if(Math.abs(speed)>MAX)speed=speed>0?MAX:-MAX; 
  27.  
  28. if(name=='opacity'
  29. obj.style.filter='alpha(opacity:'+(cur+speed)+')'//IE 
  30. obj.style.opacity=(cur+speed)/100; //ff chrome 
  31. else 
  32. obj.style[name]=cur+speed+'px'
  33.  
  34. // 某個值不等于目標點  
  35. if(cur!=iTarget) 
  36. bStop=false
  37.  
  38. // 都達到了目標點 
  39. if(bStop) 
  40. clearInterval(obj.timer); 
  41.  
  42. if(fnEnd) //只有傳了這個函數才去調用 
  43. fnEnd(); 
  44. }, 20); 

為什么會有bstop的假設呢?

其實如果我這樣調用startMove(oDiv,{width:101,height:200}); 寬度變成101 已經完成運動了,高度沒有到, 但是我們可能已經關閉了當前的定時器。運動已經結束了,就會出現一個特殊情況下的bug。解釋一下:

實際上來說,需要所有的運動都到了才關閉定時器,反過來說,如果沒有不到的,那就關閉。在程序上就是定義一個布爾值,一開始為true,假設

所有的值都已經到了,如果說有一個值不等于目標點,bstop為false 。 在整個循環結束后,bstop 為ture 就說明所有運動都完成了,這個時候就關閉定時器。

那么這個運動框架基本已經完成了,適用css2 不適用css3。

總結:

運動框架的演變過程

startMove(iTarget) 運動框架

startMove(obj,iTarget) 多物體

startMove(obj,attr,iTarget) 任意值

startMove(obj,attr,iTarget,fn) 鏈式運動

startMove(obj,json,fn) 完美運動

O(∩_∩)O謝謝 ~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品国产综合久久久久久久久| 国产女人18毛片水18精品| 92福利视频午夜1000合集在线观看| 亚洲国产精品嫩草影院久久| 国产在线精品一区免费香蕉| 最新91在线视频| 国产精品久久99久久| 亚洲美腿欧美激情另类| 一区二区欧美亚洲| 中文欧美日本在线资源| 91精品视频免费| 国产视频久久久| 欧美成人在线免费| 国产精品一区二区三区免费视频| 国产精品久久激情| 欧美日本精品在线| 国产精品视频yy9099| 国产精品久久91| 欧美在线中文字幕| 在线看国产精品| 欧美成人精品影院| 欧美精品一本久久男人的天堂| 91国语精品自产拍在线观看性色| 欧美激情第99页| 国产精品v片在线观看不卡| 91chinesevideo永久地址| 久精品免费视频| 中文一区二区视频| 国产成人小视频在线观看| 九九精品视频在线观看| 91精品国产91久久久久久久久| 欧美激情精品久久久| 97成人精品视频在线观看| 亚洲人成自拍网站| 伊人亚洲福利一区二区三区| 清纯唯美日韩制服另类| 日韩欧美成人网| 国产精品一区av| 国产精品丝袜高跟| 欧美肥婆姓交大片| 亚洲www永久成人夜色| 中文字幕欧美日韩在线| 国产精品成人一区| 亚洲精品第一页| 欧美激情亚洲激情| 国产精品r级在线| 欧美另类暴力丝袜| 国产欧美日韩亚洲精品| 国产精品激情av电影在线观看| 欧美精品videofree1080p| 国产成人亚洲综合青青| 午夜精品免费视频| 在线a欧美视频| 久久精品国产v日韩v亚洲| 中文字幕欧美精品日韩中文字幕| 日韩高清不卡av| 日韩视频免费大全中文字幕| 精品亚洲精品福利线在观看| 欧美激情一区二区三区高清视频| 国产亚洲精品va在线观看| 日韩中文字幕视频在线观看| 欧美极品少妇xxxxⅹ喷水| 日韩av在线影院| 在线观看久久av| 精品久久久香蕉免费精品视频| 成人亚洲欧美一区二区三区| 国产三级精品网站| 日韩精品欧美国产精品忘忧草| 精品久久香蕉国产线看观看gif| 亚洲国产欧美在线成人app| 日韩成人av一区| 91精品久久久久久久久久久久久| 日韩av免费网站| 97avcom| 国产精品美女久久久久久免费| 国产精品高潮呻吟久久av黑人| 精品精品国产国产自在线| 综合国产在线视频| 日韩视频免费中文字幕| 欧美电影在线免费观看网站| 国产精品美女www爽爽爽视频| 久久精品在线播放| 午夜精品一区二区三区视频免费看| 日韩a**站在线观看| 日韩精品在线免费观看| 亚洲一区二区三区香蕉| 日本一区二区在线免费播放| 国产精品99蜜臀久久不卡二区| 亚洲自拍偷拍在线| 欧美另类精品xxxx孕妇| 日韩经典中文字幕在线观看| 精品国模在线视频| 永久555www成人免费| 国产一区二区视频在线观看| 国产一区在线播放| 97精品国产97久久久久久免费| 国产精品观看在线亚洲人成网| 亚洲一区二区久久久久久| 日韩在线小视频| 91麻豆国产语对白在线观看| 国产剧情日韩欧美| 亚洲人成在线电影| 粉嫩av一区二区三区免费野| 欧美一区二三区| 一区二区三区高清国产| 欧美壮男野外gaytube| 米奇精品一区二区三区在线观看| 亚洲精品日产aⅴ| 日韩国产欧美精品在线| www.日韩av.com| 国产精品网红福利| 国产99久久久欧美黑人| 亚洲福利视频网站| 久久久久久尹人网香蕉| 精品亚洲国产成av人片传媒| 亲爱的老师9免费观看全集电视剧| 亚洲精品久久在线| 久久久久久国产精品久久| 亚洲国产精品高清久久久| 国产成人精品久久| 日韩在线免费观看视频| 国产亚洲福利一区| 国产亚洲精品美女久久久久| 欧美成人激情视频免费观看| 日韩av在线免费观看| 欧美黑人狂野猛交老妇| 国产一区二区视频在线观看| 国产不卡在线观看| 91九色综合久久| 黑人狂躁日本妞一区二区三区| 日韩高清电影好看的电视剧电影| 亚洲国产精品电影在线观看| 久久亚洲综合国产精品99麻豆精品福利| 亚洲3p在线观看| 欧美性xxxx极品高清hd直播| 黄色一区二区三区| 免费不卡欧美自拍视频| 亚洲视频网站在线观看| 九色成人免费视频| 成人国内精品久久久久一区| 精品福利免费观看| 久久成人亚洲精品| 成人午夜一级二级三级| 亚洲另类欧美自拍| 日韩精品在线第一页| 亚洲美女性视频| 岛国精品视频在线播放| 欧美整片在线观看| 国产精品青青在线观看爽香蕉| 成人高清视频观看www| 丁香五六月婷婷久久激情| 欧美性受xxxx白人性爽| 国产日韩欧美在线观看| 中文字幕在线看视频国产欧美在线看完整| 欧美日韩中文字幕在线视频| 国产日产欧美精品| 91国偷自产一区二区三区的观看方式| 国产精品极品尤物在线观看| 国产精品自产拍在线观看中文| 尤物yw午夜国产精品视频| 日韩av在线精品| 欧美极品美女电影一区| 亚洲欧美精品中文字幕在线| 亚洲2020天天堂在线观看|