2017-02-26 4 views
0

Ich weiß, ähnliche Fragen wurden zuvor gefragt, aber die Antworten haben mir nicht geholfen, weil sie für mich und meine einfache Animation zu weit fortgeschritten sind. Ich bin am Anfang von Javascript. Auf meiner Website habe ich den einfachen Code zum Verschieben eines Elements von einer Position in eine andere. Ich möchte es verschwinden lassen, wenn es die endgültige Position erreicht, nicht ausbleicht, einfach plötzlich verschwindet. Sollte ich es mit Opazitätsänderung tun? Wie schreibe ich es? Mein Code ist folgender.wie ein Element am Ende von Javascript-Animation ausblenden

function myMove() { 
    var elem = document.getElementById("animation"); 
    var pos = 100 ; 
    var id = setInterval(frame, 5); 

    function frame() { 
     if (pos == 380) { 
      clearInterval(id); 


     } else { 
      pos++; 
      elem.style.top = pos + 'px'; 
      elem.style.left = pos + 'px'; 

     } 
    } 

} 
+0

hide it (mit 'elem.style.display =‚none''), wo Sie tun 'clearInterval (id);' –

+0

Großartig, danke! –

Antwort

0

Um ein Element auszublenden, setzen Sie einfach style.display auf 'none'.

Zum Beispiel:

function myMove() { 
    var elem = document.getElementById("animation"); 
    var pos = 100 ; 
    var id = setInterval(frame, 5); 

    function frame() { 
     if (pos == 380) { 
      clearInterval(id); 
      // this is the key line 
      elem.style.display = 'none'; 

     } else { 
      pos++; 
      elem.style.top = pos + 'px'; 
      elem.style.left = pos + 'px'; 

     } 
    } 

Genau wie ein Heads-up, können verkettet setTimeouts mit besser als setInterval in HTML-Animation mit. Der Grund dafür ist, dass der Browser nicht mehr reagiert, wenn die Animation (und/oder andere Skripts auf der Seite) länger dauert als das Intervall. Bei einer Kette von setTimeouts beginnt die Uhr erst am Ende des aktuellen Frames zu ticken.

Zum Beispiel könnten Sie tun:

function myMove() { 
    var elem = document.getElementById("animation"); 
    var pos = 100 ; 

    function frame() { 
     if (pos == 380) { 
      // this is the key line 
      elem.style.display = 'none'; 

     } else { 
      pos++; 
      elem.style.top = pos + 'px'; 
      elem.style.left = pos + 'px'; 
      // set a timeout for 5 ms 
      setTimeout(myMove, 5); 
     } 
    } 
+0

Danke, display = 'none' hat es für mich gemacht. –

+0

Nun, da die Animation selbst in Ordnung ist, gibt es noch eine Sache, die ich noch nicht herausfinden konnte. Ich werde versuchen zu erklären, was ich mache: Das animierte Element ist ein Bild eines Hundekekses, der im Grunde in den Mund eines Hundes geworfen werden kann, der sich an der Endposition der Animation befindet. Es sieht auf meinem Bildschirm gut aus, Aber sobald ich die Größe meines Browserfensters ändere, fliegt der Cookie vorbei und landet nicht im Maul des Hundes. Wie würde ich das Bild des Hundes in die Animation einbeziehen, so dass der Mund immer an der Endposition des animierten Kekses wäre? Danke im Voraus. –

+0

Wenn Sie sowohl das Element, das den Hund enthält, als auch das Element, das den Cookie enthält, in ein Div einfügen und diese Elemente dann absolut positionieren, sollten die durch die Größe des Fensters verursachten Abweichungen und Diskrepanzen beseitigt werden. ODER Sie können die Position des Hundes dynamisch berechnen und daraus das Ziel des Kekses bestimmen. – JeremiahB

Verwandte Themen