淺談原生JS實(shí)現(xiàn)jQuery的animate()動(dòng)畫示例
本文介紹了淺談原生JS實(shí)現(xiàn)jQuery的animate()動(dòng)畫示例,希望此文章對(duì)各位有所幫助。
參數(shù)介紹:
| obj |
執(zhí)行動(dòng)畫的元素 |
| css | JSON數(shù)值對(duì),形式為“{屬性名: 屬性值}",指要執(zhí)行動(dòng)畫的書序及其對(duì)應(yīng)值 |
| interval |
屬性每執(zhí)行一次改變的時(shí)間間隔 |
| speedFactor | 速度因子,使動(dòng)畫具有緩沖效果,而不是勻速不變(speedFactor為1) |
| func | 執(zhí)行完動(dòng)畫后的回調(diào)函數(shù) |
注意:
必須為每一個(gè)元素分別添加一個(gè)定時(shí)器,否則會(huì)互相影響。
cur != css[arr]判斷是否每一個(gè)屬性已經(jīng)達(dá)到目標(biāo)值。只有所有屬性都達(dá)到目標(biāo)值,才會(huì)清除定時(shí)器,flag的作用是防止某個(gè)屬性第一個(gè)達(dá)到目標(biāo)值但還有其他屬性沒有達(dá)到目標(biāo)值的情況下清除定時(shí)器。因此,在每次改變前初始化flag為true,只要遇到一個(gè)沒有達(dá)到目標(biāo)的屬性,就將flag置為false,直至所有屬性達(dá)到目標(biāo)值才清除定時(shí)器。
屬性值opacity的值有小數(shù),所以需要特殊處理: Math.ceil(speed)和Math.floor(speed)以及* 100和 / 100操作。
function animate(obj, css, interval, speedFactor, func) {
clearInterval(obj.timer);
function getCss(obj, prop) {
if (obj.currentStyle)
return obj.currentStyle[prop]; // ie
else
return document.defaultView.getComputedStyle(obj, null)[prop]; // 非ie
}
obj.timer = setInterval(function(){
var flag = true;
for (var prop in css) {
var cur = 0;
if(prop == "opacity")
cur = Math.round(parseFloat(getStyle(obj, prop)) * 100);
else
cur = parseInt(getStyle(obj, prop));
var speed = (css[prop] - cur) * speedFactor;
speed = speed > 0 ? Math.ceil(speed): Math.floor(speed);
if (cur != css[prop])
flag = false;
if (prop == "opacity") {
obj.style.filter = "alpha(opacity : '+(cur + speed)+' )";
obj.style.opacity = (cur + speed) / 100;
}
else
obj.style[prop] = cur + speed + "px";
}
if (flag) {
clearInterval(obj.timer);
if (func)
func();
}
}, interval);
}
var li = document.getElementsByTagName("li");
for(var i = 0; i < li.length; i ++){
li[i].onmouseover = function(){
animate(this, {width: 100, opacity: 0.5}, 10, 0.01, function(){
alert("Finished!");
});
}
}
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 原生JS封裝animate運(yùn)動(dòng)框架的實(shí)例
- jQuery animate()實(shí)現(xiàn)背景色漸變效果的處理方法【使用jQuery.color.js插件】
- 原生js實(shí)現(xiàn)jquery函數(shù)animate()動(dòng)畫效果的簡單實(shí)例
- 原生js仿jquery animate動(dòng)畫效果
- js實(shí)現(xiàn)類似jquery里animate動(dòng)畫效果的方法
- js動(dòng)畫(animate)簡單引擎代碼示例
- 用js實(shí)現(xiàn)的模擬jquery的animate自定義動(dòng)畫(2.5K)
- javascript?中動(dòng)畫制作方法?animate()屬性
相關(guān)文章
jquery隨意添加移除html的實(shí)現(xiàn)代碼
jquery隨意添加移除html的實(shí)現(xiàn)代碼,需要的朋友可以參考下。2011-06-06
jQuery.position()方法獲取不到值的安全替換方法
這篇文章主要介紹了jQuery.position()方法獲取不到值的安全替換方法,本文給出了一種變通的方法,用.offset()來換算,需要的朋友可以參考下2015-03-03
同域jQuery(跨)iframe操作DOM(實(shí)例講解)
本篇文章主要是對(duì)同域jQuery(跨)iframe操作DOM進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-12-12
jQuery實(shí)現(xiàn)表格凍結(jié)頂欄效果
昨天晚上公司遇到個(gè)小需求,就是實(shí)現(xiàn)類似表格凍結(jié)頂欄的效果。這篇文章主要介紹了jQuery實(shí)現(xiàn)表格凍結(jié)頂欄效果 ,需要的朋友可以參考下2017-08-08
jquery 實(shí)現(xiàn)復(fù)選框的全選操作實(shí)例代碼
這篇文章主要介紹了jquery 實(shí)現(xiàn)復(fù)選框的全選操作實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-01-01
jQuery實(shí)現(xiàn)公告文字左右滾動(dòng)的實(shí)例代碼
這篇文章介紹了jQuery實(shí)現(xiàn)公告文字左右滾動(dòng)的實(shí)例代碼,有需要的朋友可以參考一下2013-10-10
jQuery插件 tabBox實(shí)現(xiàn)代碼
最近對(duì)js以及jq產(chǎn)生了濃厚的興趣,看到j(luò)q有很多很好用的插件,功能各異,包括webUI,jqGrid等等。心里萌發(fā)了制作屬于自己的jq插件的想法。2010-02-02

