先來看乙個例子
旋轉
斜切
斜切
大家應該都能看的明白,這是用最原始的方法來實現動畫。
簡單易懂,但是這樣的話我們會寫很多重複的**,rotate.style.transform = 'scale(2)',這樣的**每個事件內部我們都要寫一遍。
一般遇到重複**的時候,就可以考慮下是否可以封裝函式了,我們先從最簡單的引數出發,這個函式大概需要3個引數,ele元素,prop動畫的動作,value,動畫的值。
所以我們可以先封裝這樣乙個帶有3個引數的函式。
v1.js
/**
* * @param element // 要操作的元素
* @param prop // 運動屬性
* @param value // 具體值
*/function csstransform(element, prop, value)
if(value !== undefined)
element.style.webkittransform = element.style.transform = transformvalue;
}} else
}
rotate.addeventlistener('touchstart', function() )
每次使用的時候直接呼叫這樣的乙個函式,傳入相應的值就可以了,是不是看起來簡單了很多。
但是這樣的寫法還是有點繁瑣,每次都需要傳遞3個引數。那能不能再簡化乙個,只傳遞兩個引數呢?
我們給原型加上乙個方法,看會怎樣?
可以看到任何乙個元素都會有乙個start方法,並且內部的this,就是呼叫者本身。所以我們可以用這種方式來封裝
htmlelement.prototype.csstransform = function (prop, value)
}this.style.webkittransform = this.style.transform = transformvalue;
} else
}
rotate.addeventlistener('touchstart', function() )
這樣呼叫,也可以實現需求,是不是又簡單了一步。
那還能不能再優化呢?我們能不能只傳遞乙個引數呢?
能不能這樣 ele.scale(2);就能達到我們想要的效果呢?下面我們來實現一下
function transform(ele) ,
set: function (value)
}ele.style.webkittransform = ele.style.transform = transformvalue;}})
})return ele;
}
var ele = transform(rotate);
ele.addeventlistener('touchstart', function() )
親測一下發現,功能實現了,很神奇,這就是我們的資料驅動思想,我只管發指令,具體怎麼實現,內部去做處理。這樣是不是比最初的那種封裝看上去高大上了許多。 Python 從基礎到高階 檔案物件
在python中,讀寫檔案有3個步驟 呼叫open 函式,返回乙個file物件 呼叫file物件的read 或write 方法 呼叫file物件的close 方法,關閉該檔案 呼叫open 將返回乙個file物件。file物件代表計算機中的乙個檔案,它只是python中另一種型別的值,就像你已熟悉的...
grep與egrep用法從基礎到高階高階
一 grep 國際音標 grep grep是shell指令碼中的文字搜尋工具,根據使用者指定的文字模式對目標檔案進行逐行搜尋,顯示能被模式所匹配到的行。格式 grep options pattern file,常用選項 v 反向匹配,顯示不能被模式所匹配到的行。o 僅顯示被模式匹配到的字串,而非整行...
查詢(從基本到高階)
查詢語句是sql語言裡面使用頻率最高的語句。這主要是為程式開發人員所使用。我們對資料的操作概括起來就四個字,增,刪,改,查。對於刪和改操作,首先要先進行查詢操作。那麼下面將介紹所有查詢的語句,來給大家參考。首先要先建立一張表,然後對該錶進行查詢。sql 如下 使用student資料庫 use stu...