JS簡(jiǎn)單動(dòng)畫封裝淺析
更新時(shí)間:2011年11月15日 01:54:23 作者:
JS動(dòng)畫,實(shí)質(zhì)是對(duì)DOM樣式的改變。只要把主流瀏覽器DOM元素的屬性方法搞清楚,做JS動(dòng)畫并不算難
網(wǎng)上也有很多封裝好的JS動(dòng)畫庫(kù),但大多因?yàn)楣δ苓^(guò)于完善,而至于代碼量大動(dòng)輒過(guò)千行,不宜在小項(xiàng)目中使用。這里自己封裝了一個(gè)很輕量的動(dòng)畫庫(kù),主要功能都已實(shí)現(xiàn)。難免有疏漏之處,還請(qǐng)大家多多指教。
這里先說(shuō)明一下功能和用法,以及注意點(diǎn),隨后是一個(gè)很簡(jiǎn)單的可運(yùn)行示例。
用法及注意事項(xiàng):
anim(elemId, cssObj, time, animType, funObj)
參數(shù)說(shuō)明:
elemId (必選)需要施加動(dòng)畫效果的元素id
cssObj (必選)動(dòng)畫結(jié)束時(shí)的樣式,對(duì)象類型,鍵值對(duì)形式,
其中鍵是能直接用在JS中的“駝峰”形式的css屬性,而不是原來(lái)的css屬性。
例如:{ marginLeft: '200px', top: '200px', borderWidth: '8px'}
time (必選)動(dòng)畫持續(xù)時(shí)間(單位ms)
animType (可選)默認(rèn)為線性變化,代碼里的Tween類型包含可選的其他參數(shù)
funObj (可選)如果要此選項(xiàng),需要加入開始和結(jié)束時(shí)候執(zhí)行的函數(shù)。
形如:{ el為elemId所指向的元素
start: function (el) { el.innerHTML = 'start!'; },
complete: function (el) { el.innerHTML = 'Completed!'; }
}
幾點(diǎn)注意事項(xiàng):
1、沒(méi)有做低版本瀏覽器兼容,支持IE8+、FF、chrome、safari、opera
2、注意用能直接用在JS中的“駝峰”形式的css屬性(本來(lái)應(yīng)把css轉(zhuǎn)“駝峰”形式,
但是基本所有JS程序員都能直接寫出駝峰形式,所以沒(méi)轉(zhuǎn))
3、如果需要把動(dòng)畫應(yīng)用到絕對(duì)定位(position:absolute;)元素上,
需要注意在這些元素上設(shè)置CSS的方法。
例如:設(shè)置top和marginTop,對(duì)于絕對(duì)定位元素,應(yīng)該設(shè)置top而不是marginTop,
更不應(yīng)該將二者混合使用,因?yàn)槎叩膮⒖键c(diǎn)是不一樣的,同時(shí)設(shè)置很容易造成混亂。
所以,這里也不支持同時(shí)設(shè)置二者。
其他相似的同理(left和marginLeft、right和marginRight)
同時(shí)設(shè)置top和bottom、left和right也不支持。
4、引用了Tween緩動(dòng)算法,支持線性、漸入漸出等多種變化方式。
5、“動(dòng)畫隊(duì)列”功能尚未實(shí)現(xiàn),此版本為初級(jí)版本,疏漏之處還請(qǐng)多多指正。
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁(yè)面才能執(zhí)行]
這里先說(shuō)明一下功能和用法,以及注意點(diǎn),隨后是一個(gè)很簡(jiǎn)單的可運(yùn)行示例。
用法及注意事項(xiàng):
anim(elemId, cssObj, time, animType, funObj)
參數(shù)說(shuō)明:
elemId (必選)需要施加動(dòng)畫效果的元素id
cssObj (必選)動(dòng)畫結(jié)束時(shí)的樣式,對(duì)象類型,鍵值對(duì)形式,
其中鍵是能直接用在JS中的“駝峰”形式的css屬性,而不是原來(lái)的css屬性。
例如:{ marginLeft: '200px', top: '200px', borderWidth: '8px'}
time (必選)動(dòng)畫持續(xù)時(shí)間(單位ms)
animType (可選)默認(rèn)為線性變化,代碼里的Tween類型包含可選的其他參數(shù)
funObj (可選)如果要此選項(xiàng),需要加入開始和結(jié)束時(shí)候執(zhí)行的函數(shù)。
形如:{ el為elemId所指向的元素
start: function (el) { el.innerHTML = 'start!'; },
complete: function (el) { el.innerHTML = 'Completed!'; }
}
幾點(diǎn)注意事項(xiàng):
1、沒(méi)有做低版本瀏覽器兼容,支持IE8+、FF、chrome、safari、opera
2、注意用能直接用在JS中的“駝峰”形式的css屬性(本來(lái)應(yīng)把css轉(zhuǎn)“駝峰”形式,
但是基本所有JS程序員都能直接寫出駝峰形式,所以沒(méi)轉(zhuǎn))
3、如果需要把動(dòng)畫應(yīng)用到絕對(duì)定位(position:absolute;)元素上,
需要注意在這些元素上設(shè)置CSS的方法。
例如:設(shè)置top和marginTop,對(duì)于絕對(duì)定位元素,應(yīng)該設(shè)置top而不是marginTop,
更不應(yīng)該將二者混合使用,因?yàn)槎叩膮⒖键c(diǎn)是不一樣的,同時(shí)設(shè)置很容易造成混亂。
所以,這里也不支持同時(shí)設(shè)置二者。
其他相似的同理(left和marginLeft、right和marginRight)
同時(shí)設(shè)置top和bottom、left和right也不支持。
4、引用了Tween緩動(dòng)算法,支持線性、漸入漸出等多種變化方式。
5、“動(dòng)畫隊(duì)列”功能尚未實(shí)現(xiàn),此版本為初級(jí)版本,疏漏之處還請(qǐng)多多指正。
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁(yè)面才能執(zhí)行]
相關(guān)文章
本地圖片預(yù)覽(支持IE6/IE7/IE8/Firefox3)經(jīng)驗(yàn)總結(jié)
遇到的本地圖片預(yù)覽的需求,IE6下可以直接從file的value獲取圖片路徑來(lái)顯示預(yù)覽,IE7和IE8下通過(guò)select獲取file的圖片路徑,再用濾鏡來(lái)顯示預(yù)覽,至于FireFox祥看本文吧,希望可以幫助到你2013-03-03parseInt parseFloat js字符串轉(zhuǎn)換數(shù)字
轉(zhuǎn)換函數(shù)、強(qiáng)制類型轉(zhuǎn)換、利用js變量弱類型轉(zhuǎn)換。2010-08-08輕松實(shí)現(xiàn)js選項(xiàng)卡切換效果
這篇文章主要幫助大家輕松實(shí)現(xiàn)js選項(xiàng)卡切換效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09JavaScript的模塊化:封裝(閉包),繼承(原型) 介紹
在復(fù)雜的邏輯下, JavaScript 需要被模塊化,模塊需要封裝起來(lái),只留下供外界調(diào)用的接口。閉包是 JavaScript 中實(shí)現(xiàn)模塊封裝的關(guān)鍵,也是很多初學(xué)者難以理解的要點(diǎn)2013-07-07JavaScript利用HTML DOM進(jìn)行文檔操作的方法
DOM是W3C制定的用于訪問(wèn)諸如XML和XHTML等結(jié)構(gòu)化文檔的標(biāo)準(zhǔn)。通過(guò)本文給大家介紹JavaScript利用HTML DOM進(jìn)行文檔操作的方法,需要的朋友參考下吧2016-03-03