JS運(yùn)動(dòng)特效之鏈?zhǔn)竭\(yùn)動(dòng)分析
本文實(shí)例講述了JS運(yùn)動(dòng)特效之鏈?zhǔn)竭\(yùn)動(dòng)。分享給大家供大家參考,具體如下:
接著前面一篇《JS運(yùn)動(dòng)特效之任意值添加運(yùn)動(dòng)的方法》繼續(xù)折騰
鏈?zhǔn)竭\(yùn)動(dòng):一個(gè)運(yùn)動(dòng)接著一個(gè)運(yùn)動(dòng)。比如:鼠標(biāo)移入div先讓寬變大,接著在讓高變大,接著在讓透明度變化等等一系列運(yùn)動(dòng)連著做。廢話不多說(shuō),上栗子??!
當(dāng)鼠標(biāo)移入div的時(shí)候,div先變寬,在變高,然后改變透明度;移出又逐次恢復(fù)到原樣;
實(shí)現(xiàn)鏈?zhǔn)竭\(yùn)動(dòng),需要對(duì)上一篇中的startMove()
函數(shù)繼續(xù)做改進(jìn)
function startMove(obj,attr,iTarget,fn)
多傳入一個(gè)fn參數(shù),表示當(dāng)一個(gè)運(yùn)動(dòng)結(jié)束之后,繼續(xù)進(jìn)行下一個(gè)運(yùn)動(dòng),當(dāng)然還需要判斷一下,如果有下一個(gè)運(yùn)動(dòng),就執(zhí)行下一個(gè)運(yùn)動(dòng),如果沒(méi)有就繼續(xù)向下執(zhí)行
if(fn){ fn(); }
完整測(cè)試代碼:
HTML部分:
<body> <div id="div1"></div> </body>
css部分:
<style> #div1{ width: 200px;height: 200px; background: green; } </style>
js部分:
<script> window.onload = function(){ var oDiv = document.getElementById('div1'); oDiv.onmouseover = function () { startMove(oDiv,'width',300,function () { startMove(oDiv,'height',300, function () { startMove(oDiv,'opacity',30); }); }); } oDiv.onmouseout = function () { startMove(oDiv,'opacity',100, function () { startMove(oDiv,'height',200, function () { startMove(oDiv,'width',200); }); }); } } function getStyle(obj,attr){ return getComputedStyle ? getComputedStyle(obj,false)[attr] : obj.currentStyle[attr]; } function startMove(obj,attr,iTarget,fn) {//fn:執(zhí)行下一個(gè)運(yùn)動(dòng)的函數(shù) clearInterval(obj.timer); obj.timer = setInterval(function () { var objAttr = 0; if(attr == "opacity"){ objAttr = Math.round(parseFloat(getStyle(obj,attr))*100); }else{ objAttr = parseInt(getStyle(obj,attr)); } var iSpeed = (iTarget -objAttr)/10; iSpeed = iSpeed>0 ?Math.ceil(iSpeed):Math.floor(iSpeed); if(objAttr == iTarget){ clearInterval(obj.timer); if(fn){// 如果傳了 “下一個(gè)運(yùn)動(dòng)的函數(shù)” 就執(zhí)行 fn(); } }else{ if(attr == "opacity"){ obj.style.filter = 'alpha(opacity:'+(objAttr+iSpeed)+')'; obj.style.opacity = (objAttr+iSpeed)/100; }else{ obj.style[attr] = objAttr+iSpeed+'px'; } } },30); } </script>
未完待續(xù)....
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《JavaScript運(yùn)動(dòng)效果與技巧匯總》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript動(dòng)畫(huà)特效與技巧匯總》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- Javascript 完美運(yùn)動(dòng)框架(逐行分析代碼,讓你輕松了運(yùn)動(dòng)的原理)
- js運(yùn)動(dòng)框架_包括圖片的淡入淡出效果
- JS運(yùn)動(dòng)框架之分享側(cè)邊欄動(dòng)畫(huà)實(shí)例
- JavaScript 創(chuàng)建運(yùn)動(dòng)框架的實(shí)現(xiàn)代碼
- 原生JS實(shí)現(xiàn)圖片無(wú)縫滾動(dòng)方法(附帶封裝的運(yùn)動(dòng)框架)
- 原生js封裝運(yùn)動(dòng)框架的示例講解
- JS運(yùn)動(dòng)特效之同時(shí)運(yùn)動(dòng)實(shí)現(xiàn)方法分析
- JS運(yùn)動(dòng)特效之任意值添加運(yùn)動(dòng)的方法分析
- JS實(shí)現(xiàn)多物體運(yùn)動(dòng)的方法詳解
- JS運(yùn)動(dòng)改變單物體透明度的方法分析
- JS運(yùn)動(dòng)特效之完美運(yùn)動(dòng)框架實(shí)例分析
相關(guān)文章
詳解微信小程序-獲取用戶session_key,openid,unionid - 后端為nodejs
這篇文章主要介紹了微信小程序獲取session_key,openid,unionid的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04JavaScript實(shí)現(xiàn)輪播圖片完整代碼
這篇文章主要為大家介紹了JavaScript實(shí)現(xiàn)輪播圖片的完整代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03file-loader打包圖片文件時(shí)路徑錯(cuò)誤輸出為[object-module]的解決方法
這篇文章主要介紹了file-loader打包圖片文件時(shí)路徑錯(cuò)誤輸出為[object-module]的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01JavaScript+html實(shí)現(xiàn)前端頁(yè)面滑動(dòng)驗(yàn)證
這篇文章主要為大家詳細(xì)介紹了JavaScript+html實(shí)現(xiàn)前端頁(yè)面滑動(dòng)驗(yàn)證,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06