国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

原生js封裝運動框架的示例講解

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

昨天我們說了一下原生JS中常用的兼容性寫法,今天我們來說一下運動框架.

正常情況下我們要寫一個運動的效果會用到tween.js這么一個插件,這個東西不是一般人寫出來的,因為里面涉及的運動效果都是經過一堆數學的函數運算出來的,我們平常人是寫不出來的,所有我們就自己封裝一個運動框架,有什么問題改起來也方便,下面我們就開始封裝.

首先,我們先寫一個div,設置一些簡單的樣式,我們就拿這個div舉例子

如下代碼:

#div{  width: 100px;  height: 100px;  background: gold;  position: absolute;  left:0;  top:0;  opacity: 1;}

然后我們就開始寫js代碼了,如下:

window.onload=function() {  var oDiv = document.getElementById("div");  var timer;

寫一個函數,方便以后用的時候直接調用就好了,首先先傳入幾個參(要運動的對象,變動的屬性,終點距離,運動總時間,回調函數)----今天的只是簡單的封裝一下,你也寫可以傳入一個json

 

function move(obj,name, target, dur,fn) {// 總步數=總時間÷計時器設定的時間  var count = parseInt(dur / 30);// 起始位置  var start = parseFloat(setStyle(obj,name));// 總距離=傳入的距離-起始距離  var dis = target - start;// 每步運動的距離=總距離÷總步數  var spen = dis / count;// 定義起始步數  var n = 0;  timer = setInterval(function () {  n++;// 把當前運動的位置保存  var cur=start + n * spen;// 判斷屬性是不是透明度,透明度不用加單位  if(name=='opacity'){    obj.style[name]=cur;// 兼容IE低版本,IE的透明度是1到100    obj.style.filter='alpha('+cur*100+')';  }else {    obj.style[name] = start + n * spen + "px";  }// 判斷運動是否完成  if (n == count) {// 完成后清除定時器,停止運動    clearInterval(timer);// 判斷用戶是否傳入回調函數    fn && fn();  }; }, 30);};

 然后自己隨便寫一些調用回調函數,測試一下:

oDiv.onclick=function(){    move(oDiv,"left",600,1000,function(){      move(oDiv,'top',400,1000,function(){        move(oDiv,"width",300,1000,function(){          move(oDiv,"opacity",0,1000);        });      });    });  };// 獲取非行間樣式  function setStyle(obj,name){// 考慮兼容性問題    if(obj.currentStyle){//不兼容火狐和谷歌      return obj.currentStyle[name];    }else{      return getComputedStyle(obj,false)[name];//不兼容IE    };  };};

好了,今天就先封裝到這里了,這只是簡單的封裝一下,明天我們會改進一下,比如參數太多、參數順序不能亂的問題,還有多次點擊計時器出現的Bug的問題,如果你有好的方法歡迎評論區留言,程序員之間就是要相互學習的,明天見,老鐵們!

以上這篇原生js封裝運動框架的示例講解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 仁怀市| 化德县| 抚顺市| 西充县| 壶关县| 沐川县| 明星| 靖州| 沂水县| 中西区| 宁城县| 墨脱县| 桑日县| 莱芜市| 东兰县| 迁西县| 丰原市| 晋江市| 宜章县| 那坡县| 丹棱县| 五莲县| 宁陕县| 屏南县| 桃源县| 香港| 财经| 堆龙德庆县| 三门峡市| 永泰县| 元朗区| 昌都县| 商城县| 专栏| 芜湖市| 宁阳县| 库尔勒市| 固原市| 衡阳县| 林甸县| 龙门县|