Heim  >  Artikel  >  Web-Frontend  >  js-Methode zum Erzielen ähnlicher Animationseffekte wie animate in jquery_javascript-Fähigkeiten

js-Methode zum Erzielen ähnlicher Animationseffekte wie animate in jquery_javascript-Fähigkeiten

WBOY
WBOYOriginal
2016-05-16 16:05:001123Durchsuche

Das Beispiel in diesem Artikel beschreibt, wie js ähnliche Animationseffekte wie animate in jquery erzielen kann. Teilen Sie es als Referenz mit allen. Die spezifische Analyse lautet wie folgt:

Dieses Beispiel kann den Effekt erzielen, die Maus nach oben zu bewegen, zuerst die Breite zu ändern, dann die Höhe zu ändern und schließlich die Transparenz zu ändern, die Maus nach außen zu bewegen und dann wieder zurück zu ändern.

Punkt 1:

startrun(obj,attr,target,fn)
box.onmouseover = function(){
startrun(box,"width",200,function(){
startrun(box,"height",200,function(){
startrun(box,"opacity","100")
});
});
}

Wie oben können Funktionen auch als Parameter verwendet werden, wodurch der Effekt erzielt werden kann, dass zuerst eine Aktion ausgeführt wird und dann eine Aktion ausgeführt wird.

Punkt 2:

if(cur == target){
clearInterval(obj.timer);
if(fn){
fn();
}
}

Wenn die Bewegung den Zielpunkt erreicht, schalten Sie den Timer aus und Sie können dann die neue Funktion ausführen.

Zum Schluss fügen Sie den Code hinzu:

<!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&#63;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>

Ich hoffe, dass dieser Artikel für das JavaScript-Programmierdesign aller hilfreich sein wird.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn