Es ist also möglich, eine umgekehrte Animation mit der Maus auszuführen, z. B.:
.class{
transform: rotate(0deg);
}
.class:hover{
transform: rotate(360deg);
}
Bei Verwendung der @ keyframes-Animation konnte ich sie jedoch nicht zum Laufen bringen, z.
.class{
animation-name: out;
animation-duration:2s;
}
.class:hover{
animation-name: in;
animation-duration:5s;
animation-iteration-count:infinite;
}
@keyframe in{
to {transform: rotate(360deg);}
}
@keyframe out{
to {transform: rotate(0deg);}
}
Was ist die optimale Lösung, wenn ich weiß, dass ich Iterationen und Animationen selbst benötigen würde?
Antworten:
Ich denke, wenn Sie eine haben
to
, müssen Sie eine verwendenfrom
. Ich würde an etwas denken wie:Natürlich muss es bereits überprüft worden sein, aber ich fand es seltsam, dass Sie die
transform
Eigenschaft nur verwenden, da CSS3 nicht überall vollständig implementiert ist. Vielleicht würde es mit den folgenden Überlegungen besser funktionieren:@-webkit-keyframes
, keine besondere Version erforderlich@-webkit-keyframes
seit Version 5+@keyframes
seit Version 16 (v5-15 verwendet@-moz-keyframes
)@-webkit-keyframes
Version 15-22 (nur Version 12 verwendet@-o-keyframes
)@keyframes
seit Version 10+EDIT:
Ich habe mir diese Geige ausgedacht:
http://jsfiddle.net/JjHNG/35/
Verwenden von minimalem Code. Nähert es sich dem, was Sie erwartet haben?
quelle
Es ist viel einfacher als all dies: Übertragen Sie einfach dieselbe Eigenschaft auf Ihr Element
https://codepen.io/lafland/pen/MoEaoG
quelle
transition: border-color 0.3s, background-color 0.3s, color 0.3s;
Ich denke nicht, dass dies nur mit CSS-Animationen möglich ist. Ich gehe davon aus, dass CSS-Übergänge Ihren Anwendungsfall nicht erfüllen, weil Sie (zum Beispiel) zwei Animationen miteinander verketten, mehrere Stopps und Iterationen verwenden oder auf andere Weise die zusätzlichen Leistungsanimationen ausnutzen möchten, die Sie erhalten.
Ich habe keine Möglichkeit gefunden, eine CSS-Animation speziell beim Mouse-Out auszulösen, ohne JavaScript zum Anhängen von "Over" - und "Out" -Klassen zu verwenden. Obwohl Sie die Basis-CSS-Deklaration verwenden können, um eine Animation auszulösen, wenn der Hover endet, wird dieselbe Animation beim Laden der Seite ausgeführt. Mit den Klassen "over" und "out" können Sie die Definition in die Basisdeklaration (load) und die beiden Animationsauslöserdeklarationen aufteilen.
Das CSS für diese Lösung wäre:
Und mit JavaScript (jQuery-Syntax), um die Klassen an die Ereignisse zu binden:
quelle
Das Erstellen einer umgekehrten Animation ist ein Overkill für ein einfaches Problem. Was Sie brauchen, ist
Dies funktioniert jedoch nicht von alleine, da die Animationsspezifikation so umfangreich ist, dass sie vergessen haben, eine Möglichkeit zum Neustart der Animation hinzuzufügen. Hier erfahren Sie, wie Sie dies mit Hilfe von js tun
quelle
Wären Sie besser dran, wenn Sie nur eine Animation hätten, aber umgekehrt?
quelle
Wir können requestAnimationFrame verwenden, um die Animation zurückzusetzen und umzukehren, wenn der Browser im nächsten Frame malt.
Verwenden Sie auch die Ereignishandler onmouseenter und onmouseout, um die Animationsrichtung umzukehren
Wie per
quelle
Versuche dies:
unterstützt in Firefox 5+, IE 10+, Chrome, Safari 4+, Opera 12+
quelle
Habe hier mehrere Lösungen ausprobiert, nichts hat einwandfrei funktioniert; suchte dann ein bisschen mehr im Internet, um GSAP unter https://greensock.com/ zu finden (lizenzpflichtig, aber ziemlich freizügig ); Sobald Sie auf die Bibliothek verweisen ...
... du kannst gehen:
Und es wird einwandfrei funktionieren.
quelle