網上也有很多封裝好的JS動畫庫,但大多因為功能過於完善,而至於代碼量大動辄過千行,不宜在小項目中使用。這裡自己封裝了一個很輕量的動畫庫,主要功能都已實現。難免有疏漏之處,還請大家多多指教。
這裡先說明一下功能和用法,以及注意點,隨後是一個很簡單的可運行示例。
用法及注意事項:
anim(elemId, cssObj, time, animType, funObj)
參數說明:
elemId (必選)需要施加動畫效果的元素id
cssObj (必選)動畫結束時的樣式,對象類型,鍵值對形式,
其中鍵是能直接用在JS中的“駝峰”形式的css屬性,而不是原來的css屬性。
例如:{ marginLeft: '200px', top: '200px', borderWidth: '8px'}
time (必選)動畫持續時間(單位ms)
animType (可選)默認為線性變化,代碼裡的Tween類型包含可選的其他參數
funObj (可選)如果要此選項,需要加入開始和結束時候執行的函數。
形如:{ el為elemId所指向的元素
start: function (el) { el.innerHTML = 'start!'; },
complete: function (el) { el.innerHTML = 'Completed!'; }
}
幾點注意事項:
1、沒有做低版本浏覽器兼容,支持IE8+、FF、chrome、safari、opera
2、注意用能直接用在JS中的“駝峰”形式的css屬性(本來應把css轉“駝峰”形式,
但是基本所有JS程序員都能直接寫出駝峰形式,所以沒轉)
3、如果需要把動畫應用到絕對定位(position:absolute;)元素上,
需要注意在這些元素上設置CSS的方法。
例如:設置top和marginTop,對於絕對定位元素,應該設置top而不是marginTop,
更不應該將二者混合使用,因為二者的參考點是不一樣的,同時設置很容易造成混亂。
所以,這裡也不支持同時設置二者。
其他相似的同理(left和marginLeft、right和marginRight)
同時設置top和bottom、left和right也不支持。
4、引用了Tween緩動算法,支持線性、漸入漸出等多種變化方式。
5、“動畫隊列”功能尚未實現,此版本為初級版本,疏漏之處還請多多指正。
[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]