js實現(xiàn)類似jquery里animate動畫效果的方法
本文實例講述了js實現(xiàn)類似jquery里animate動畫效果的方法。分享給大家供大家參考。具體分析如下:
該實例可實現(xiàn)鼠標移上,先寬度變化,再高度變化,最后透明度變化,鼠標移出,再依次變回去的效果。
要點一:
startrun(obj,attr,target,fn) box.onmouseover = function(){ startrun(box,"width",200,function(){ startrun(box,"height",200,function(){ startrun(box,"opacity","100") }); }); }
如上面,函數(shù)也可以做為參數(shù)使用,就可以達到先執(zhí)行某個動作,再執(zhí)行某個動作的效果了。
要點二:
if(cur == target){ clearInterval(obj.timer); if(fn){ fn(); } }
當運動到達目標點,關閉定時器,然后就可以執(zhí)行新的函數(shù)了。
最后,上代碼:
<!DOCTYPE html> <html> <head> <meta charset="gb2312" /> <title>無標題文檔</title> <style> <!-- body{margin:0; padding:0; font:12px/1.5 arial;} #box{width:100px; height:100px; position:absolute; background:#06c; left:0;filter:alpha(opacity=30); opacity:0.3;} --> </style> <script> <!-- function getstyle(obj,name){ if(obj.currentStyle){ return obj.currentStyle[name]; }else{ return getComputedStyle(obj,false)[name]; } } window.onload = function(){ var box = document.getElementById("box"); box.onmouseover = function(){ startrun(box,"width",200,function(){ startrun(box,"height",200,function(){ startrun(box,"opacity","100") }); }); } box.onmouseout = function(){ startrun(box,"height",100,function(){ startrun(box,"width",100,function(){ startrun(box,"opacity","30"); }); }); } } function startrun(obj,attr,target,fn){ clearInterval(obj.timer); obj.timer = setInterval(function(){ var cur = 0; if(attr == "opacity"){ cur = Math.round(parseFloat(getstyle(obj,attr))*100); }else{ cur = parseInt(getstyle(obj,attr)); } var speed = (target-cur)/8; speed = speed>0?Math.ceil(speed):Math.floor(speed); if(cur == target){ clearInterval(obj.timer); if(fn){ fn(); } }else{ if(attr == "opacity"){ obj.style.filter = "alpha(opacity="+(cur+speed)+")"; obj.style.opacity = (cur+speed)/100; }else{ obj.style[attr] = cur + speed + "px"; } } },30) } //--> </script> </head> <body> <div id="box"> </div> </body> </html>
希望本文所述對大家的javascript程序設計有所幫助。
相關文章
JavaScript中函數(shù)聲明優(yōu)先于變量聲明的實例分析
同一個標示符,先后用var和function聲明它。最后它是什么呢2012-03-03Three.js+React使二維圖片呈現(xiàn)3D效果
這篇文章主要為大家介紹了如何利用Three.js+React技術棧,將二維漫畫圖片轉化為三維視覺效果。文中的實現(xiàn)方法講解詳細,需要的可以參考一下2022-02-02JavaScript設計模式之性能優(yōu)化模式享元模式
這篇文章主要介紹了JavaScript設計模式之性能優(yōu)化模式享元模式,享元設計模式是用于性能優(yōu)化的模式,這種設計模式的核心在于可以共享技術并支持對大量細分過后的對象進行調(diào)整,更多相關內(nèi)容需要的小伙伴可以參考一下2022-06-06