Sind Sie sicher, dass Sie Ihre Seite nur im Webkit anzeigen? Hier ist der Code, der auf Safari weitergegeben wurde. Das Bild (id='img') dreht sich nach dem Klicken auf die Schaltfläche.
function ani() {
document.getElementById('img').className="classname";
}
Denken Sie nur daran, dass Sie verwenden .className löscht alle Ihre anderen Klassen für das angegebene Element. Wenn dies unerwünscht ist, verwenden Sie document.getElementById('img').classList.add('classname');
– Zeichnete Kennedy
1. November 2016 um 21:05 Uhr
Dies wird nur beim ersten Klicken animiert. Nachfolgende Klicks bewirken nichts. Verwenden sad comrade Methode unten, um mehrere Klicks zu ermöglichen.
–Max S.
23. März 2022 um 22:55 Uhr
Sie verwenden einfach die :active Pseudo-Klasse. Dies wird gesetzt, wenn Sie auf ein beliebiges Element klicken.
.classname:active {
/* animation css */
}
Ah, ich habe deine Frage falsch verstanden. ich denken Ravis Antwort wird in diesem Fall für Sie funktionieren.
– Paul Fischer
31. Januar 2011 um 7:10 Uhr
Das war sehr nützlich für mich. Die Animation wurde nur ausgeführt, während der Benutzer die Maustaste gedrückt hielt, was genau das war, was ich brauchte.
– Erw
10. August 2016 um 5:25 Uhr
Das habe ich auch gebraucht.
– b_d_m_p
25. Dezember 2019 um 5:10 Uhr
Vielen Dank für diese Antwort, das war genau das, wonach ich suchte.
Das Auslösen des Reflows auf der Mittellinie ist ein raffinierter Trick. genau das, was ich brauchte
– he77kat_
18. April 2020 um 14:25 Uhr
Wie funktioniert das Auslösen des Reflows?
– Wanja
29. Juli 2022 um 12:24 Uhr
@he77kat_ Ich weiß nicht einmal, was Reflow bedeutet, und ich kann auch keine gute Erklärung finden. Möchten Sie sich verpflichten?
– ptrca
2. Januar um 1:19
@ptrcao reflow ist der Name des Webbrowser-Prozesses zur Neuberechnung der Positionen und Geometrien der Elemente im HTML-Dokument, um einen Teil oder das gesamte Dokument neu zu rendern. Bestimmte Browser-APIs oder Dokumenteigenschaften führen dazu, dass dieser Prozess neu gestartet wird, und elem.offsetWidth Ist einer von ihnen
– he77kat_
2. Januar um 18:08 Uhr
Sie können dies erreichen, indem Sie einen Onclick-Listener binden und dann die animierte Klasse wie folgt hinzufügen:
<h3>Any element with tabindex="0", like a div:</h3>
<div tabindex="0" class="className"> Click me many times!</div>
<h3>Any focusable element like a button:</h3>
<button class="className"> Click me many times!</button>
Das einzige Problem, das ich dabei sehe: Wenn ich auf eines der Demo-Steuerelemente klicke, dann die Registerkarten wechsle und dann zurückschalte, wird die Animation abgespielt, ohne darauf zu klicken.
– Will
9. November 2021 um 22:14 Uhr
RK Roy
var abox = document.getElementsByClassName("box")[0];
function allmove(){
abox.classList.remove("move-ltr");
abox.classList.remove("move-ttb");
abox.classList.toggle("move");
}
function ltr(){
abox.classList.remove("move");
abox.classList.remove("move-ttb");
abox.classList.toggle("move-ltr");
}
function ttb(){
abox.classList.remove("move-ltr");
abox.classList.remove("move");
abox.classList.toggle("move-ttb");
}
Das einzige Problem, das ich dabei sehe: Wenn ich auf eines der Demo-Steuerelemente klicke, dann die Registerkarten wechsle und dann zurückschalte, wird die Animation abgespielt, ohne darauf zu klicken.
– Will
9. November 2021 um 22:14 Uhr
Marin Atanasov
Füge hinzu ein
-webkit-animation-play-state: paused;
zu Ihrer CSS-Datei hinzufügen, können Sie mit dieser JS-Zeile steuern, ob die Animation ausgeführt wird oder nicht: