이 기사의 예에서는 js가 jquery의 애니메이션과 유사한 애니메이션 효과를 얻을 수 있는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.
이 예에서는 마우스를 위로 이동하여 먼저 너비를 변경한 다음 높이를 변경하고 마지막으로 투명도를 변경하고 마우스를 밖으로 이동한 다음 다시 원래대로 변경하는 효과를 얻을 수 있습니다.
포인트 1:
startrun(obj,attr,target,fn) box.onmouseover = function(){ startrun(box,"width",200,function(){ startrun(box,"height",200,function(){ startrun(box,"opacity","100") }); }); }
위와 같이 함수를 매개변수로 사용할 수도 있는데, 이를 통해 먼저 액션을 실행한 다음 액션을 실행하는 효과를 얻을 수 있습니다.
포인트 2:
if(cur == target){ clearInterval(obj.timer); if(fn){ fn(); } }
이동이 목표 지점에 도달하면 타이머를 끄고 새로운 기능을 실행할 수 있습니다.
마지막으로 다음 코드를 추가하세요.
<!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 프로그래밍 설계에 도움이 되기를 바랍니다.