Schlüsselpunkte
- JavaScript kann CSS3 -Animationen verwalten, indem Ereignishandler zu Elementen hinzugefügt werden, wodurch eine feine Steuerung von Animationen erm?glicht wird, z. B. das Abspielen von Sequenz. Es gibt drei Arten von Ereignissen, die erfasst werden k?nnen: "AnimationStart", "AnimationItration" und "Animationend".
- Cross-Browser-Kompatibilit?t dieser Animationsereignisse kann durch Aufrufen von
addEventListener
für alle vorangestellten und nicht fixierten Namen mit benutzerdefinierten Funktionen erreicht werden. Auf diese Weise kann der Ereignishandler mithilfe einer Codezeile zugewiesen werden. - Das an die Animations -Listener -Funktion übergebene Ereignisobjekt liefert den Animationsnamen und verstrichene Zeit seit Beginn der Animation. Dies kann verwendet werden, um festzustellen, wann eine bestimmte Animation endet, und andere Code auszuführen, z. B. die Anwendung einer anderen CSS3 -Animation in einer bestimmten Reihenfolge.
CSS3-Animationen sind reibungslos und einfach zu implementieren, aber im Gegensatz zu JavaScript hat sie keine Frame-by-Frame-Steuerung. Glücklicherweise k?nnen Sie Event -Handler auf jedes Element anwenden, um den Animationszustand zu bestimmen. Dies erm?glicht eine feine Steuerung, z. B. das Spielen verschiedener Animationen nacheinander.
Betrachten Sie diese einfache CSS3 -Animation:
#anim.enable { -webkit-animation: flash 1s ease 3; -moz-animation: flash 1s ease 3; -ms-animation: flash 1s ease 3; -o-animation: flash 1s ease 3; animation: flash 1s ease 3; } /* 動(dòng)畫 */ @-webkit-keyframes flash { 50% { opacity: 0; } } @-moz-keyframes flash { 50% { opacity: 0; } } @-ms-keyframes flash { 50% { opacity: 0; } } @-o-keyframes flash { 50% { opacity: 0; } } @keyframes flash { 50% { opacity: 0; } }
Wenn die enable
-Klasse mit id anim
auf ein Element angewendet wird, wird eine Animation mit dem Namen flash
dreimal ausgeführt. Jede Iteration dauert eine Sekunde, in der das Element ausblendet und dann verblasst.
Drei Arten von Ereignissen werden ausgel?st, wenn die Animation auftritt:
animationstart
var anim = document.getElementById("anim"); anim.addEventListener("animationstart", AnimationListener, false);
animationstart
Ereignis wird abgefeuert, wenn die Animation zum ersten Mal gestartet wird.
animationiteration
anim.addEventListener("animationiteration", AnimationListener, false);
animationiteration
Ereignisse werden zu Beginn jeder neuen Animations -Iteration abgefeuert, d. H. Jede Iteration mit Ausnahme der ersten Iteration.
animationend
anim.addEventListener("animationend", AnimationListener, false);
animationend
Ereignis feuert am Ende der Animation ab.
Browserkompatibilit?t
Zum Zeitpunkt des Schreibens unterstützen Firefox-, Chrome-, Safari-, Opera- und IE10 CSS3 -Animationen und verwandte Ereignishandler. Zus?tzlich verwenden die Browser von Opera, IE10 und Webkit Pr?fixe und haben einige Fall?nderungen vorgenommen, um Narrensicher zu gew?hrleisten ...
W3C Standard Firefox Webkit Opera IE10
animationstart
animationstart
webkitAnimationStart
oanimationstart
MSAnimationStart
animationiteration
animationiteration
webkitAnimationIteration
oanimationiteration
MSAnimationIteration
animationend
animationend
webkitAnimationEnd
oanimationend
MSAnimationEnd
addEventListener
var pfx = ["webkit", "moz", "MS", "o", ""]; function PrefixedEvent(element, type, callback) { for (var p = 0; p < pfx.length; p++) { if (!pfx[p]) type = type.toLowerCase(); element.addEventListener(pfx[p] + type, callback, false); } }
?> Die einfachste M?glichkeit, das Pr?fixproblem zu l?sen ?> ?> Cross-Browser-Ereignis-Handler k?nnen jetzt mit einer Codezeile zugewiesen werden: ?>
#anim.enable { -webkit-animation: flash 1s ease 3; -moz-animation: flash 1s ease 3; -ms-animation: flash 1s ease 3; -o-animation: flash 1s ease 3; animation: flash 1s ease 3; } /* 動(dòng)畫 */ @-webkit-keyframes flash { 50% { opacity: 0; } } @-moz-keyframes flash { 50% { opacity: 0; } } @-ms-keyframes flash { 50% { opacity: 0; } } @-o-keyframes flash { 50% { opacity: 0; } } @keyframes flash { 50% { opacity: 0; } }
Ereignisobjekt
Im obigen Code wird die Funktion AnimationListener
aufgerufen, wenn ein Animationsereignis auftritt. Ein Ereignisobjekt wird als einzelner Parameter übergeben. Zus?tzlich zu Standardeigenschaften und -methoden enth?lt es auch:
-
animationName
: CSS3 -Animationsname (d. H.flash
) -
elapsedTime
: Zeit (in Sekunden) seit Beginn der Animation.
Daher k?nnen wir erkennen, wann die flash
-Animation endet, zum Beispiel:
var anim = document.getElementById("anim"); anim.addEventListener("animationstart", AnimationListener, false);
kann der Code beispielsweise eine vorhandene Klasse entfernen oder eine andere CSS3 -Animation in einer bestimmten Reihenfolge anwenden.
CSS3 -Animationsereignis Demonstration in JavaScript
anzeigen Auf der Demo -Seite wird eine Schaltfl?che angezeigt. Wenn Sie darauf klicken, wird die Klasse "Aktivieren" umgeschaltet, wodurch die flash
-Animation gestartet wird. Wenn das Animationsereignis ausgel?st wird, wird der Status in der Konsole angezeigt. Nachdem die Animation beendet ist, wird die Klasse "Enable" entfernt, damit die Schaltfl?che erneut geklickt werden kann.
Wenn Sie in einem interessanten Projekt animierte Event -Capture verwenden, lassen Sie es mich bitte wissen.
(Wenn Sie gerne diesen Artikel lesen, werden Sie es lieben, lernbar zu sein. Hier k?nnen Sie neue F?higkeiten und F?higkeiten von Meistern lernen. Mitglieder k?nnen sofort auf alle E-Books und interaktiven Online-Kurse von SitePoint zugreifen, wie z. B. "HTML5 und" CSS3 für die reale Welt)
(Die Kommentare für diesen Artikel sind geschlossen. Gibt es Fragen zu CSS? Warum nicht in unserem Forum fragen?)
FAQs (FAQ) über CSS3 -Animationen und JavaScript -Ereignishandler
Was sind CSS3 -Animationen und JavaScript -Ereignis -Handler?
CSS3 -Animation ist eine Funktion von CSS3 (Cascading -Stylesheets), mit der Sie HTML -Elemente ohne Verwendung von JavaScript oder Flash animieren k?nnen. Es bietet eine M?glichkeit, einfache Animationen direkt im CSS -Code ohne zus?tzliche Ressourcen zu erstellen. Auf der anderen Seite sind JavaScript -Ereignis -Handler Funktionen in JavaScript, die ausgel?st werden, wenn bestimmte Ereignisse auftreten. Diese Ereignisse k?nnen ein beliebiges Ereignis sein, z. B. ein Benutzer, der auf eine Schaltfl?che klickt, das Laden von Seite oder eine Animation beendet. Verwenden Sie CSS3 -Animationen und JavaScript -Ereignishandler, um dynamische interaktive Webinhalte zu erstellen.
Wie verwendet ich JavaScript -Ereignis -Handler mit CSS3 -Animationen?
Um den JavaScript -Event -Handler mit CSS3 -Animationen zu verwenden, müssen Sie dem HTML -Element, das Sie animieren m?chten, einen Ereignish?rer hinzufügen. Dieser Ereignish?rer l?st die JavaScript -Funktion am Ende der Animation aus. Hier ist ein grundlegendes Beispiel:
anim.addEventListener("animationiteration", AnimationListener, false);
In diesem Code ist "Animationend" das Ereignis, das wir h?ren und das ausfeuert, wenn die CSS3 -Animation abgeschlossen ist.
Kann ich JavaScript -Ereignishandler mit CSS3 -überg?ngen verwenden?
Ja, Sie k?nnen JavaScript -Ereignishandler mit CSS3 -überg?ngen verwenden, genau wie Sie mit CSS3 -Animationen tun. Die Veranstaltung, auf die Sie sich anh?ren müssen, ist "Transitionend". Dieses Ereignis wird abgefeuert, nachdem der CSS -übergang abgeschlossen ist.
Wie kann man JavaScript verwenden, um die Zeit von CSS3 -Animationen zu steuern?
Sie k?nnen JavaScript verwenden, um die Zeit der CSS3-Animation mit der Eigenschaft "Animation-Delay" zu steuern. Diese Eigenschaft legt die Verz?gerung zu Beginn der Animation fest. Sie k?nnen diese Eigenschaft in JavaScript wie folgt festlegen:
#anim.enable { -webkit-animation: flash 1s ease 3; -moz-animation: flash 1s ease 3; -ms-animation: flash 1s ease 3; -o-animation: flash 1s ease 3; animation: flash 1s ease 3; } /* 動(dòng)畫 */ @-webkit-keyframes flash { 50% { opacity: 0; } } @-moz-keyframes flash { 50% { opacity: 0; } } @-ms-keyframes flash { 50% { opacity: 0; } } @-o-keyframes flash { 50% { opacity: 0; } } @keyframes flash { 50% { opacity: 0; } }
In diesem Code beginnt die Animation, nachdem die Seite 2 Sekunden lang geladen wurde.
Wie wiederholt man CSS3 -Animationen mit JavaScript?
Sie k?nnen CSS3-Animationen mit JavaScript mithilfe der Eigenschaft "Animation-Operation-Count" wiederholen. Diese Eigenschaft gibt an, wie oft die Animation gespielt werden soll. Sie k?nnen diese Eigenschaft in JavaScript wie folgt festlegen:
var anim = document.getElementById("anim"); anim.addEventListener("animationstart", AnimationListener, false);
In diesem Code wird die Animation auf unbestimmte Zeit wiederholt.
Kann ich die Geschwindigkeit von CSS3 -Animationen mit JavaScript ?ndern?
Ja, Sie k?nnen die Geschwindigkeit von CSS3 -Animationen mit JavaScript ?ndern. Die Eigenschaft "Animationsdauer" steuert die Zeitdauer, die die Animation ben?tigt, um einen Zyklus abzuschlie?en. Sie k?nnen diese Eigenschaft in JavaScript wie folgt festlegen:
anim.addEventListener("animationiteration", AnimationListener, false);
In diesem Code dauert die Animation 2 Sekunden.
Wie kann CSS3 -Animationen mit JavaScript innehalten und wiederhergestellt werden?
Sie k?nnen CSS3-Animationen mithilfe der Eigenschaft "Animation-Play-State" pausieren und wiederherstellen. Diese Eigenschaft legt fest, ob die Animation ausgeführt oder innehalten wird. Sie k?nnen diese Eigenschaft in JavaScript wie folgt festlegen:
anim.addEventListener("animationend", AnimationListener, false);
In diesem Code wird die Animation durchgeführt.
Kann ich die Ausrichtung von CSS3 -Animationen mit JavaScript ?ndern?
Ja, Sie k?nnen die Ausrichtung Ihrer CSS3 -Animation mit JavaScript ?ndern. Die Eigenschaft "Animation-Regisseurung" definiert, ob die Animation w?hrend eines Wechselzyklus umgekehrt gespielt werden soll. Sie k?nnen diese Eigenschaft in JavaScript wie folgt festlegen:
var pfx = ["webkit", "moz", "MS", "o", ""]; function PrefixedEvent(element, type, callback) { for (var p = 0; p < pfx.length; p++) { if (!pfx[p]) type = type.toLowerCase(); element.addEventListener(pfx[p] + type, callback, false); } }
In diesem Code wird die Animation rückw?rts abgespielt.
Wie kann ich JavaScript verwenden, um das Ende einer CSS3 -Animation zu erkennen?
Sie k?nnen JavaScript verwenden, um das Ende einer CSS3 -Animation zu erkennen, indem Sie dem Ereignisereignis einen Ereignish?rer hinzufügen. Diese Veranstaltung wird nach Abschluss der CSS3 -Animation abgefeuert. Hier erfahren Sie, wie es geht:
// 動(dòng)畫偵聽器事件 PrefixedEvent(anim, "AnimationStart", AnimationListener); PrefixedEvent(anim, "AnimationIteration", AnimationListener); PrefixedEvent(anim, "AnimationEnd", AnimationListener);
Kann ich die Animations-Timing-Funktion von CSS3-Animation mit JavaScript ?ndern?
Ja, Sie k?nnen die "Animations-Timing-Funktion" von CSS3-Animationen mit JavaScript ?ndern. Diese Eigenschaft gibt die Geschwindigkeitskurve der Animation an. Sie k?nnen diese Eigenschaft in JavaScript wie folgt festlegen:
if (e.animationName == "flash" && e.type.toLowerCase().indexOf("animationend") >= 0) { ... }
In diesem Code beginnt die Animation langsam und beschleunigt dann.
Das obige ist der detaillierte Inhalt vonSo erfassen Sie CSS3 -Animationsereignisse in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Es gibt drei g?ngige M?glichkeiten, HTTP-Anforderungen in Node.js zu initiieren: Verwenden Sie integrierte Module, Axios und Knotenfetch. 1. Verwenden Sie das integrierte HTTP/HTTPS-Modul ohne Abh?ngigkeiten, das für grundlegende Szenarien geeignet ist, jedoch eine manuelle Verarbeitung von Datengen?hten und Fehlerüberwachung erfordert, z. 2.Axios ist eine auf Versprechen basierende Bibliothek von Drittanbietern. Es verfügt über eine kurze Syntax und leistungsstarke Funktionen, unterstützt Async/Auseait, automatische JSON -Konvertierung, Interceptor usw. Es wird empfohlen, asynchrone Anforderungsvorg?nge zu vereinfachen. 3.Node-Fetch bietet einen Stil ?hnlich dem Browser-Abruf, basierend auf Versprechen und einfacher Syntax

JavaScript -Datentypen sind in primitive Typen und Referenztypen unterteilt. Zu den primitiven Typen geh?ren String, Anzahl, Boolesche, Null, undefiniertes und Symbol. Die Werte sind unver?nderlich und Kopien werden bei der Zuweisung von Werten kopiert, sodass sie sich nicht gegenseitig beeinflussen. Referenztypen wie Objekte, Arrays und Funktionen speichern Speicheradressen, und Variablen, die auf dasselbe Objekt zeigen, wirkt sich gegenseitig aus. Typeof und Instanz k?nnen verwendet werden, um die Typen zu bestimmen, aber auf die historischen Probleme der TypeOfnull zu achten. Das Verst?ndnis dieser beiden Arten von Unterschieden kann dazu beitragen, einen stabileren und zuverl?ssigeren Code zu schreiben.

Hallo, JavaScript -Entwickler! Willkommen in den JavaScript -Nachrichten dieser Woche! Diese Woche konzentrieren wir uns auf: Oracas Markenstreit mit Deno, neue JavaScript -Zeitobjekte werden von Browsern, Google Chrome -Updates und einigen leistungsstarken Entwickler -Tools unterstützt. Fangen wir an! Der Markenstreit von Oracle mit dem Versuch von Deno Oracle, ein "JavaScript" -Marke zu registrieren, hat Kontroversen verursacht. Ryan Dahl, der Sch?pfer von Node.js und Deno, hat eine Petition zur Absage der Marke eingereicht, und er glaubt, dass JavaScript ein offener Standard ist und nicht von Oracle verwendet werden sollte

Cacheapi ist ein Tool, das der Browser zur Cache -Netzwerkanfragen bereitstellt, das h?ufig in Verbindung mit dem Servicearbeiter verwendet wird, um die Leistung der Website und die Offline -Erfahrung zu verbessern. 1. Es erm?glicht Entwicklern, Ressourcen wie Skripte, Stilbl?tter, Bilder usw. Zu speichern; 2. Es kann die Cache -Antworten entsprechend den Anfragen übereinstimmen. 3. Es unterstützt das L?schen bestimmter Caches oder das L?schen des gesamten Cache. 4.. Es kann Cache -Priorit?ts- oder Netzwerkpriorit?tsstrategien durch Servicearbeiter implementieren, die sich auf Fetch -Ereignisse anh?ren. 5. Es wird h?ufig für die Offline -Unterstützung verwendet, die wiederholte Zugriffsgeschwindigkeit, die Vorspannungs -Schlüsselressourcen und den Inhalt des Hintergrundaktualisierungss beschleunigen. 6. Wenn Sie es verwenden, müssen Sie auf die Cache -Versionskontrolle, Speicherbeschr?nkungen und den Unterschied zum HTTP -Caching -Mechanismus achten.

Versprechen ist der Kernmechanismus für den Umgang mit asynchronen Operationen in JavaScript. Das Verst?ndnis von Kettenanrufen, Fehlerbehebung und Kombination ist der Schlüssel zum Beherrschen ihrer Anwendungen. 1. Der Kettenaufruf gibt ein neues Versprechen durch .then () zurück, um asynchrone Prozessverkampferung zu realisieren. Jeder. Dann () erh?lt das vorherige Ergebnis und kann einen Wert oder ein Versprechen zurückgeben; 2. Die Fehlerbehandlung sollte .Catch () verwenden, um Ausnahmen zu fangen, um stille Ausf?lle zu vermeiden, und den Standardwert im Fang zurückgeben, um den Prozess fortzusetzen. 3. Combinatoren wie Promise.All () (erfolgreich erfolgreich erfolgreich nach allen Erfolg), Versprechen.Race () (Die erste Fertigstellung wird zurückgegeben) und Versprechen.Allsettled () (Warten auf alle Fertigstellungen)

JavaScript-Array-integrierte Methoden wie .Map (), .filter () und .Reduce () k?nnen die Datenverarbeitung vereinfachen. 1) .Map () wird verwendet, um Elemente eins in eins um Neuarrays zu konvertieren; 2) .Filter () wird verwendet, um Elemente durch Bedingung zu filtern; 3) .Reduce () wird verwendet, um Daten als einzelner Wert zu aggregieren; Missbrauch sollte bei der Verwendung vermieden werden, was zu Nebenwirkungen oder Leistungsproblemen führt.

Die Ereignisschleife von JavaScript verwaltet asynchrone Vorg?nge, indem sie Call -Stapel, Webapis und Task -Warteschlangen koordinieren. 1. Der Anrufstack führt synchronen Code aus, und wenn er auf asynchrone Aufgaben begegnet, wird er zur Verarbeitung an Webapi übergeben. 2. Nachdem das Webapi die Aufgabe im Hintergrund abgeschlossen hat, wird der Rückruf in die entsprechende Warteschlange (Makroaufgabe oder Micro -Aufgabe) eingebaut. 3. Die Ereignisschleife prüft, ob der Anrufstapel leer ist. Wenn es leer ist, wird der Rückruf aus der Warteschlange herausgenommen und zur Ausführung in den Anrufstapel geschoben. V. 5. Das Verst?ndnis der Ereignisschleife hilft zu vermeiden, den Haupt -Thread zu blockieren und die Codeausführungsreihenfolge zu optimieren.

Ereignisblasen verbreiten sich vom Zielelement nach au?en zum Vorfahrknoten aus, w?hrend Ereignisfassungen sich von der ?u?eren Schicht nach innen zum Zielelement ausbreiten. 1. Ereignisblasen: Nach dem Klicken auf das untergeordnete Element l?st das Ereignis den H?rer des übergeordneten Elements nach oben aus. Nach dem Klicken auf die Schaltfl?che gibt es beispielsweise zuerst die untergeordnete und dann entzündete Eltern aus. 2. Ereigniserfassung: Stellen Sie den dritten Parameter auf True ein, so dass der H?rer in der Erfassungsstufe ausgeführt wird, z. B. das Ausl?sen des Capture -Listeners des übergeordneten Elements, bevor Sie auf die Schaltfl?che klicken. 3. Praktische Verwendungszwecke umfassen ein einheitliches Management von Ereignissen für Kinderelemente, Vorverarbeitung und Leistungsoptimierung von Abfangen. V.
