JS實(shí)現(xiàn)運(yùn)動(dòng)緩沖效果的封裝函數(shù)示例
本文實(shí)例講述了JS實(shí)現(xiàn)運(yùn)動(dòng)緩沖效果的封裝函數(shù)。分享給大家供大家參考,具體如下:
之前經(jīng)常寫運(yùn)動(dòng)函數(shù),要寫好多好多,后來(lái)想辦法封裝起來(lái)。(運(yùn)動(dòng)緩沖)。
/*
物體多屬性同時(shí)運(yùn)動(dòng)的函數(shù)
obj:運(yùn)動(dòng)的物體
oTarget:對(duì)象,屬性名為運(yùn)動(dòng)的樣式名,屬性值為樣式運(yùn)動(dòng)的終點(diǎn)值
ratio:速度的系數(shù)
*/
function bufferMove(obj, oTarget, fn,ratio = 8) {
clearInterval(obj.iTimer);
obj.iTimer = setInterval(function () {
// 此處設(shè)定開關(guān)bBtn,假設(shè)所有的屬性均已運(yùn)動(dòng)完畢true
var bBtn = true;
for(var sAttr in oTarget){
// 獲取當(dāng)前值,此處兼容透明度的變化
if(sAttr === 'opacity') {
var iCur = parseFloat(getStyle(obj, sAttr) * 100);
} else {
var iCur = parseInt(getStyle(obj, sAttr));
}
// 計(jì)算速度,此處可判定方向,如向左或向右,先透明后出現(xiàn)或先出現(xiàn)后透明等
var iSpeed = (oTarget[sAttr] - iCur) / ratio;
iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
// 計(jì)算下一次的值
var iNext = iCur + iSpeed;
// 賦值給對(duì)應(yīng)樣式
if(sAttr ==='opacity') {
obj.style.opacity = iNext / 100;
obj.style.filter = 'alpha(opacity=' + iNext +')';
} else {
obj.style[sAttr] = iNext + 'px';
}
// 清除定時(shí)器,當(dāng)前的位置和終點(diǎn)值是否相等,相等則說(shuō)明結(jié)束
if(iNext !== oTarget[sAttr]) {
bBtn = false;
}
}
// 如果bBtn的值為true,則說(shuō)明所有的屬性均已運(yùn)動(dòng)完畢,回調(diào)函數(shù)fn()
if(bBtn) {
clearInterval(obj.iTimer);
if(fn){
fn();
}
}
}, 50);
}
以上封裝函數(shù)也可以用于單個(gè)屬性,多樣式運(yùn)動(dòng),比如:
bufferMove(obj,{"left":200,"width":400,"opacity":80},fn,8);
就這樣。
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript運(yùn)動(dòng)效果與技巧匯總》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript動(dòng)畫特效與技巧匯總》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
JS中圖片緩沖loading技術(shù)的實(shí)例代碼
這篇文章介紹了JS中圖片緩沖loading技術(shù)的實(shí)例代碼,有需要的朋友可以參考一下2013-08-08
js實(shí)現(xiàn)拖動(dòng)緩動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)拖動(dòng)緩動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01
獲取Javscript執(zhí)行函數(shù)名稱的方法
獲取Javscript執(zhí)行函數(shù)名稱的方法...2006-12-12
javaScript 實(shí)現(xiàn)重復(fù)輸出給定的字符串的常用方法小結(jié)
這篇文章主要介紹了javaScript 實(shí)現(xiàn)重復(fù)輸出給定的字符串的常用方法,總結(jié)分析了JavaScript重復(fù)輸出給定字符串的4種常見操作技巧,需要的朋友可以參考下2020-02-02
省市選擇的簡(jiǎn)單實(shí)現(xiàn)(基于zepto.js)
下面小編就為大家?guī)?lái)一篇省市選擇的簡(jiǎn)單實(shí)現(xiàn)(基于zepto.js)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨想過(guò)來(lái)看看吧2016-06-06

