Detaillierte Erläuterung der Animationsmethode „Animate“ von jQuery und der Lösung für das Problem der Animationswarteschlange

Detaillierte Erläuterung der Animationsmethode „Animate“ von jQuery und der Lösung für das Problem der Animationswarteschlange

animate()-Animationsmethode

  • Zweck: Benutzerdefinierte Animation des CSS-Attributsatzes ausführen
  • Syntax: $(Selektor).animate(Stile,Geschwindigkeit,Easing,Rückruf)

• Parameter 1: Eine Sammlung von CSS-Eigenschaftsnamen und Eigenschaftswerten für die Endposition der Bewegung.
• Parameter 2: Optional, gibt die Geschwindigkeit der Animation an, der Standardwert ist „normal“. Andere Werte, „langsam“, „normal“, „schnell“, sind im numerischen Format und die Einheit ist Millisekunden.
• Parameter 3: Optional, gibt die Easing-Funktion zum Einstellen der Animationsgeschwindigkeit an verschiedenen Animationspunkten an. Mögliche Werte sind Swing (variable Geschwindigkeit) und Linear (konstante Geschwindigkeit).
• Parameter 4: Optional, Rückruffunktion, die nach der Ausführung der Animationsfunktion ausgeführt werden soll.
• Beachten:

① Alle Attributwerte mit numerischen Werten können verschoben werden.
②Andere Bewegungsmethoden wie slideUp() haben ebenfalls die Parameter 3 und 4

 <Stil>
       *{
                Rand: 0;
                Polsterung: 0;
            }
            P{
                Position: relativ;
                links: 0;
                Rand unten: 10px;
                Hintergrundfarbe: himmelblau;
                Breite: 50px;
                Höhe: 50px;
            }
        </Stil>
    <!----------------------------------------->
    <Text>
        <p>1</p>
        <p>2</p>
        <p>3</p>
        <p>4</p>
        <p>5</p>
        <p>6</p>
        <p>7</p>
        <p>8</p>
     <script src="../jq/jquery-1.12.4.min.js"></script>
     <Skript>
            var $ps = $("p");
            //Im tatsächlichen Betrieb ist es besser, die flüchtige Zeit in einer Variablen zu speichern. var during = 1000;
            //Alle Attributwerte mit numerischen Werten können verschoben werden $ps.click(function(){
                $(this).animate({"width":500,"opacity":0.5},während,"swing")
            })
        </Skript>
    </body>

Animationswarteschlange

  • Wenn mehrere Animationen für dasselbe Elementobjekt definiert sind, werden die Animationen zur Ausführung in die Warteschlange gestellt.
  • Wenn verschiedene Elementobjekte über Animationen verfügen, wird kein Warteschlangenmechanismus ausgeführt.
  • Handelt es sich um einen anderen Code als den Bewegungscode, wird nicht auf den Abschluss der Bewegung gewartet. Beispielsweise wird das Ändern des CSS-Stils nicht in die Warteschlange gestellt.
<Stil>
  div{
       Breite: 100px;
       Höhe: 100px;
       Rand: 8px durchgezogen #ccc;
       Position: absolut;
       links: 0;
       oben: 0;
       Hintergrund: URL (../../imgs/1.jpg) keine Wiederholung Mitte Mitte;
     }
.box2{
      Randradius: 50 %;
      Überlauf: versteckt;
       }
div Spanne {
       Position: absolut;
       links: 0;
       oben: 0;
       Breite: 100 %;
       Höhe: 100%;
       Hintergrundfarbe: rgba(221, 130, 130, 0,4);
     }
</Stil>
  <!-------------css-Stil------------------->
<Text>
  <div Klasse="Box1"><span></span></div>
  <div Klasse="box2"><span></span></div>
  
<script src="../jq/jquery-1.12.4.min.js"></script>
<Skript>
 var $box1 = $(".box1");
 var $box2 = $(".box2");
 var während = 2000;
 //Vergleich der Animationswarteschlangen $box2.animate({"left": 400,"top":400},during)
 //Box1 und Box2 führen jeweils ihre eigenen Animationen aus //Mehrere Animationen für dasselbe Element in die Warteschlange stellen $box1.animate({"left": 400},during) //$box1.animate({"top": 400}, during) in die Warteschlange stellen
 // Der untere Teil der Animation ist ein Timer, der asynchron geladen wird // Nicht-Bewegungscode, ungefähr das gleiche Elementobjekt, wird nicht in die Warteschlange gestellt // $box1.css ("Höhe", 200)
 </Skript>
</body>
  • Die Anzeige- und Ausblendmethode mit integrierter Animation. Wenn sie auf dasselbe Element eingestellt ist, gibt es auch eine Animationswarteschlange.
//Andere Bewegungsmethoden werden, wenn sie auf dasselbe Element eingestellt sind, ebenfalls in die Warteschlange gestellt$box2.mouseenter(function(){
      $(diese).children().slideUp(während)
  })
  $box2.mouseleave(Funktion(){
      $(diese).children().slideDown(während)
  })
  //Die Maus bewegt sich schnell auf und ab, und dann gleitet der graue Bereich von Box2 weiter hinein und heraus, bis alle Zeiten ausgeführt wurden
  • Die Bewegung auf demselben Element kann in eine Kettenaufrufmethode vereinfacht werden
//Mehrere Bewegungen desselben Elements können durch Kettenaufrufe vereinfacht werden //Sie müssen aber trotzdem in die Warteschlange gestellt werden $box1.children().fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500)

delay()-Methode

  • Das Setzen von delay() vor einer bestimmten Bewegungsmethode bedeutet, dass die nachfolgende Bewegung nach einer angegebenen Zeit ausgeführt wird, was zu einer Verzögerung der Bewegung führt.
  • Der Parameter von delay() ist der Zeitwert. Andere Bewegungsmethoden haben auch Verzögerungseffekte.
   //Verzögerung $box1.children().delay(3000).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500)

stop()-Methode zum Stoppen der Animation

  • Legt fest, wie die in die Warteschlange gestellte Animation auf dem Elementobjekt gestoppt wird
  • stop() hat zwei Parameter, die vier Stoppmodi bereitstellen können. Beide Parameter sind Boolesche Werte.

• Parameter 1: Legen Sie fest, ob die Warteschlange für nachfolgende Animationen gelöscht werden soll. Wenn der Wert „true“ ist, bedeutet dies, dass die Warteschlange gelöscht wird (die nachfolgenden Animationen werden ebenfalls gelöscht und nicht mehr ausgeführt). Wenn der Wert „false“ ist, bedeutet dies, dass die Warteschlange nicht gelöscht wird, sondern nur die aktuelle Animation gestoppt wird (die nachfolgenden Animationen werden sofort ausgeführt).
• Parameter 2: Legen Sie fest, ob die aktuelle Animation sofort abgeschlossen wird. Wenn der Wert „true“ ist, bedeutet dies, dass sie sofort abgeschlossen wird und das Objekt sofort zur Endposition bewegt wird. Wenn der Wert „false“ ist, bedeutet dies, dass die aktuelle Animation nicht abgeschlossen wird und sofort an der aktuellen Position angehalten wird.

<Stil>
 div {
      Breite: 100px;
      Höhe: 100px;
      Rand: 8px durchgezogen #ccc;
      Position: absolut;
      links: 0;
      oben: 40;
      Hintergrund: URL (../../imgs/1.jpg) keine Wiederholung Mitte Mitte;
   }  
 div Spanne {
      Position: absolut;
      links: 0;
      oben: 0;
      Breite: 100 %;
      Höhe: 100%;
      Hintergrundfarbe: rgba(221, 130, 130, 0,4);
    }
 </Stil>
</Kopf>
  
<Text>
 <Eingabetyp="Schaltfläche" Wert="true true" ID="btn1">
 <Eingabetyp="Schaltfläche" Wert="true false" id="btn2">
 <Eingabetyp="Schaltfläche" Wert="false false" ID="btn3">
 <Eingabetyp="Schaltfläche" Wert="falsch wahr" ID="btn4"><br>
  
 <div Klasse="Box1"><span></span></div>
  
  
<script src="../jq/jquery-1.12.4.min.js"></script>
<Skript>
   var $box1 = $(".box1");
  
   var während = 2000;
  
   //Mehrere Animationen für dasselbe Element in die Warteschlange stellen $box1.animate({ "left": 400 }, during)
   $box1.animate({ "top": 400 }, während)
   $box1.animate({"links":0},während)
   $box1.animate({"top":40},während)
 
  // Animation stoppen // Schaltflächenklickereignis hinzufügen var $btn1 = $("#btn1")
  var $btn2 = $("#btn2")
  var $btn3 = $("#btn3")
  var $btn4 = $("#btn4")
  
  //true true Löscht die in die Warteschlange gestellten Animationen und beendet die aktuelle Animation sofort. Stoppt an der Endposition$btn1.click(function () {
       $box1.stop(wahr, wahr);
  })
  //true false Animation löschen und an der aktuellen Stelle anhalten $btn2.click(function () {
     $box1.stop(wahr, falsch);
  })
  //false false Lösche die folgenden Animationen nicht, halte bei der aktuellen // an und führe dann die nächste Animation aus $btn3.click(function () {
     $box1.stop(falsch, falsch);
  })
  //false true Lösche die folgende Animation nicht, die aktuelle Bewegung wird sofort beendet$btn4.click(function () {
       $box1.stop(falsch, wahr);
  })
 </Skript>
</body>
  • Standardmäßig ist der Parameterwert false.
  • Bei der tatsächlichen Arbeit ist es im Allgemeinen erforderlich, die Warteschlange dahinter zu löschen und die aktuelle Position anzuhalten. Stop (true) wird häufig verwendet. Wenn der zweite Parameter nicht festgelegt ist, wird standardmäßig false verwendet.

Animationswarteschlange löschen

Problem mit der Animationswarteschlange

  • Wenn das Programm, das die Bewegung startet, in einer Ereignisfunktion platziert wird, wird das Ereignis mehrmals ausgelöst und die Funktion mehrmals ausgeführt. Auf diese Weise werden einem Element mehrere Animationen hinzugefügt und die Animationen in die Warteschlange gestellt. (Problem der Animationsakkumulation)

Es ist notwendig, die in die Warteschlange gestellten Animationen zu löschen und Maßnahmen zum Schutz vor Belästigung durchzuführen.

  • Problemumgehung

Methode 1: Verwenden der stop()-Methode

Fügen Sie vor jeder Bewegungsfunktion ein „stop(true)“ hinzu. Dies bedeutet, dass vor der Ausführung der Bewegung die zuvor in die Warteschlange gestellte Animation gelöscht wird und dann an der aktuellen Position angehalten wird.

<Stil>
 div {
     Breite: 100px;
     Höhe: 100px;
     Rand: 8px durchgezogen #ccc;
     Position: absolut;
     links: 0;
     oben: 0;
     Hintergrund: URL (../../imgs/1.jpg) keine Wiederholung Mitte Mitte;
   } 
div Spanne {
     Position: absolut;
     links: 0;
     oben: 0;
     Breite: 100 %;
     Höhe: 100%;
     Hintergrundfarbe: rgba(221, 130, 130, 0,4);
  }
  </Stil>
<Text>
  <Eingabetyp="Schaltfläche" Wert="true true" ID="btn1">
  <Eingabetyp="Schaltfläche" Wert="true false" id="btn2">
  <Eingabetyp="Schaltfläche" Wert="false false" ID="btn3">
  <Eingabetyp="Schaltfläche" Wert="falsch wahr" ID="btn4"><br>

  <div Klasse="Box1"><span></span></div>

  <script src="../jq/jquery-1.12.4.min.js"></script>
  <Skript>
     var $box1 = $(".box1");

     var während = 2000;
    // Animation löschen $box1.mouseenter(function(){
        $(diese).children().stop(true).slideUp(während)
    })

   $box1.mouseleave(Funktion(){
       $(diese).children().stop(true).slideDown(während)
   })
    </Skript>
</body>

Methode 2: Verwenden der Funktionsdrosselungsmethode

Wenn sich das Element bewegt, kehren Sie direkt zurück und führen Sie den nachfolgenden Bewegungscode nicht aus.

Jedes jQuery-Objekt kann eine is()-Methode aufrufen, die verwendet wird, um einen bestimmten Status des Elementobjekts anzuzeigen. Wenn der Parameter position is(":animated") ist, bedeutet animiert Bewegung und der Rückgabewert ist ein Boolescher Wert, true bedeutet Bewegung, false bedeutet keine Bewegung

//Funktionsdrosselungsmethode $box1.mouseenter(function(){
    wenn(ist(":animiert")){
        //Wenn beurteilt wird, dass es sich bewegt, kehren Sie direkt zurück und führen Sie keine weiteren Animationsrückläufe mehr aus.
    }
    //Wenn keine Bewegung stattfindet, führen Sie die folgende neue Animation weiter aus: $(this).children().slideup(during);

})

$box1.mouseenter(Funktion(){
    wenn(ist(":animiert")){
        //Wenn beurteilt wird, dass es sich bewegt, kehren Sie direkt zurück und führen Sie keine weiteren Animationsrückläufe mehr aus.
    }
    //Wenn keine Bewegung stattfindet, führen Sie die neue Animation dahinter weiter aus. //Manchmal wird es aus Sicherheitsgründen in Verbindung mit stop(true) verwendet. $(this).children().stop(true).slideup(during);

})
  • Manchmal wird die Funktion throttling aus Sicherheitsgründen in Verbindung mit stop(true) verwendet.
  • Es gibt Unterschiede zwischen den Methoden „Stop(true)“ und „Funktionsdrosselung“. Diese beiden Methoden lösen das Problem der Animationsakkumulation. Die Stoppmethode kann die Animation an der aktuellen Position stoppen und die Funktion drosselt. Nach der Rückgabe beim Stoppen wird die aktuelle Animation im Allgemeinen abgeschlossen.

Oben finden Sie eine ausführliche Erläuterung der Animationsmethode „animate“ von jQuery und der Lösung für das Problem der Animationswarteschlange. Weitere Informationen zur Animationsmethode „animate“ von jQuery finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Beispiel einer JQuery-Animation-Anwendung
  • Beispiel für die Kapselung von animate.css durch jQuery
  • Beispiel für kontinuierliche Bewegung einer jQuery-Animate-Animation
  • So verwenden Sie animate() in jQuery und lösen das Problem, dass $("body").animate({"scrollTop":top}) von Firefox nicht unterstützt wird
  • So verwenden Sie jQuery animate(), um einen Farbverlaufseffekt im Hintergrund zu erzielen [mit dem Plug-In jQuery.color.js]
  • Eine kurze Diskussion über die Implementierung des jQuery-Animationsbeispiels animate() mit nativem JS
  • jQuery realisiert dynamische Vergrößerung dreidimensionaler Zahlen (Animation-Methode)
  • Verschiedene Verwendungsmöglichkeiten und Vorsichtsmaßnahmen für Animate in jQuery
  • jQuery verwendet Animate, um den schwebenden Effekt von UL-Listenelementen zu erzielen
  • Verwenden der Animationsfunktion von jQuery, um den Erbsenemissionseffekt zu erzielen
  • Ein einfaches Beispiel für die Implementierung des jQuery-Animationseffekts animate() mit nativem JS

<<:  Mehrere Möglichkeiten zum Berechnen des Alters anhand des Geburtstags in MySQL

>>:  So ändern Sie das Terminal in Ubuntu 18 in eine schöne Eingabeaufforderung

Artikel empfehlen

Detaillierte Erklärung zum Aktivieren des https-Dienstes in Apache unter Linux

Dieser Artikel beschreibt, wie man den https-Dien...

Einführung in die Apache-Bereitstellung von https in der Kryptografie

Inhaltsverzeichnis Zweck Experimentelle Umgebung ...

Detailliertes Installationstutorial für mysql-8.0.11-winx64.zip

Laden Sie das ZIP-Installationspaket herunter: Do...

Vue implementiert Buchverwaltungsfall

In diesem Artikelbeispiel wird der spezifische Co...

So verwenden Sie Vue+ElementUI Tree

Die Verwendung von Vue + ElementUI Tree dient zu ...

Detaillierte Analyse des Linux-Kernel-Makros container_of

1. Wie oben erwähnt Ich habe dieses Makro gesehen...

React+Koa-Beispiel zur Implementierung des Datei-Uploads

Inhaltsverzeichnis Hintergrund Serverabhängigkeit...

Studiennotizen zur MySQL Master-Slave-Konfiguration

● Ich hatte vor, einige Cloud-Daten zu kaufen, um...