Heim > Web-Frontend > js-Tutorial > 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
Freigeben: 2016-05-16 16:05:00
Original
1197 Leute haben es durchsucht

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")
});
});
}
Nach dem Login kopieren

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();
}
}
Nach dem Login kopieren

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>
Nach dem Login kopieren

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage