javascript實現的運動框架詳解
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #mytest { width:100px; height:100px; background-color:black; } </style> <script type="text/javascript"> function Move(obj,attr,iTarget) { clearInterval(obj.timer); obj.timer=setInterval(function() { var cur=0; if(attr=="opacity") { if('v' == '\v') { cur=parseInt(getStyle(obj,attr)); } else { cur=Math.round(parseFloat(getStyle(obj,attr))*100); } } else { cur=parseInt(getStyle(obj,attr)); } var speed=(iTarget-cur)/10; speed=speed>0?Math.ceil(speed):Math.floor(speed); if(iTarget==cur) { clearInterval(obj.timer); } else { cur+=speed; if(attr=="opacity") { obj.style.filter="alpha(opacity:"+cur+")"; //for IE obj.style.opacity=cur/100; //for FF } else { obj.style[attr]=cur+"px"; } } },30); } function getStyle(obj,name) { if(obj.currentStyle) { return obj.currentStyle[name];//for IE } else { return getComputedStyle(obj,false)[name];//for FF } } window.onload=function() { var mytest=document.getElementById("mytest"); Move(mytest,"width",200); } </script> </head> <body> <div id="mytest">螞蟻部落歡迎您</div> </body> </html>
在以上程式碼可以以緩衝的形式將div的寬度設定為200px。當然是用move函式幾乎可以設定一個元素的任何屬性。下面簡單解釋要一下如何實現此效果:
一.實現原理:
原來非常的簡單,通過定時器函式setInterval()不斷的呼叫一個函式以實現不間斷的以不同的速度改變元素的屬性值,最後達預定屬性值。這樣就實現了緩衝效果。
二.程式碼註釋:
1.function Move(obj,attr,iTarget){},宣告一個函式,此函式實現了運動框架效果,此函式具有三個引數,obj是要操作的物件,attr表示要操作的屬性值例如"width",iTarget表示要達到的目標屬性值。
2.clearInterval(obj.timer),作用是關閉上一個上一個定時器,可以防止對對同一個元素同時使用多個定時器。
3.obj.timer=setInterval(function(){},1000),定時器反覆呼叫函式。
4.var cur=0,用來儲存當前屬性的值。
5.if(attr=="opacity"),判斷要操作的屬性是否是透明度。
6.if('v' == '\v'){},由於IE8和IE8以下瀏覽器對透明度的處理和其他標準瀏覽器不一樣,所以這裡需要進行判斷。
7. cur=Math.round(parseFloat(getStyle(obj,attr))*100),針對在FF中opacity屬性值為浮點數值問題,將屬性值 四捨五入、轉換成浮點型。乘以100,使opacity屬性值與IE統一為百分數。
8.var speed=(iTarget-cur)/10,建立遞減的速度speed變數。實現屬性值的變速改變。
9.speed=speed>0?Math.ceil(speed):Math.floor(speed),取整,解決瀏覽器忽略小於1px的數值 導致運動結束時,離目標值Itarget少幾個畫素的問題。
10.if(iTarget==cur){}如果達到指定屬性值,就停止定時器。
11.cur+=speed,屬性值遞增。
12.if(attr=="opacity"){},透明度關於不同瀏覽器的相容為。
13.function getStyle(obj,name){},獲取指定兌現的執行屬性的屬性值。
相關文章
- JavaScript運動框架JavaScript框架
- 原生JavaScript之完美運動框架JavaScript框架
- 詳解動態規劃01揹包問題--JavaScript實現動態規劃JavaScript
- 詳解動態規劃01揹包問題–JavaScript實現動態規劃JavaScript
- 詳解動態規劃最長公共子序列--JavaScript實現動態規劃JavaScript
- Go Web 服務框架實現詳解GoWeb框架
- JavaScript運動框架程式碼例項JavaScript框架
- JavaScript模擬拋物運動的程式碼實現JavaScript
- Spring Data JPA框架的Repository自定義實現詳解Spring框架
- 詳解動態規劃最少硬幣找零問題–JavaScript實現動態規劃JavaScript
- 詳解動態規劃最少硬幣找零問題--JavaScript實現動態規劃JavaScript
- 【JavaScript框架封裝】實現一個類似於JQuery的動畫框架的封裝JavaScript框架封裝jQuery動畫
- Javascript實現運算子過載JavaScript
- Spring框架系列(12) - Spring AOP實現原理詳解之JDK代理實現Spring框架JDK
- Spring框架系列(11) - Spring AOP實現原理詳解之Cglib代理實現Spring框架CGLib
- JavaScript滑動門特效詳解JavaScript特效
- 多圖詳解萬星 Restful 框架原理與實現REST框架
- Spring框架系列(9) - Spring AOP實現原理詳解之AOP切面的實現Spring框架
- JavaScript自定義滾動條詳解JavaScript
- JavaScript 手動實現instanceof的方法JavaScript
- JavaScript中的this詳解JavaScript
- 前端框架Astro實現最小化JavaScript前端框架ASTJavaScript
- Spring框架系列(10) - Spring AOP實現原理詳解之AOP代理的建立Spring框架
- Android 動畫框架實現Android動畫框架
- JavaScript this詳解JavaScript
- JavaScript 動態進度條效果詳解JavaScript
- JavaScript自動更新時間效果詳解JavaScript
- 好程式設計師技術教程分享JavaScript運動框架程式設計師JavaScript框架
- 詳解智慧運維一體化建設實現路徑運維
- 在.Net框架中 C# 實現多執行緒的同步方法詳解框架C#執行緒
- 詳解 dotenv 的使用與實現
- iOS 中的 GCD 實現詳解iOSGC
- JavaScript左右滑動切換的選項卡詳解JavaScript
- javascript怎麼實現算術加法運算JavaScript
- 關於laravel 框架實現路由自動注入解決方法Laravel框架路由
- JDK動態代理實現原理詳解(原始碼分析)JDK原始碼
- 詳解移動端網頁設計實現內滾動的四種解決方案網頁
- 從零實現一個簡易的jQuery框架之二—核心思路詳解jQuery框架
- JavaScript動態圓形鐘錶效果詳解JavaScript