Glatte CSS Transition Animation Rotation
Erstellt habe ich dieses tüfteln, um das problem zu demonstrieren:
Animation-DREHUNG und SCHWEBEN scheint gut zu funktionieren für die Richtung ändern, aber das UMSCHALTEN, wenn ich den Cursor über das Element für den übergang ist sprunghaft und nicht eine glatte Umkehrung der Richtung wie ich es gerne hätte.
Hier ist der basic-code ohne browser-Präfix:
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
.spin {
animation: spin 3.5s linear 0s infinite normal;
width: 100px;
height: 100px;
border-radius: 50px 50px 50px 50px;
overflow: hidden;
margin-left: -50px;
margin-top: -50px;
top: 50%;
left: 50%;
position: absolute;
}
.spin:hover {
animation: spin 3.5s linear 0s infinite reverse;
}
Habe ich versucht zu spielen, um mit den folgenden:
transition-property: transform;
transition-duration: 0s;
transition-timing-function: ease-in-out;
In einem Versuch, glätten Sie die animation so, dass das symbol glatt umgedreht, aber ich kann nicht ganz scheinen, um es richtig... jede Hilfe wäre toll!
- Was verursacht die snappong Aktion: 0% = 0 und 100% = 360°. Wenn Sie diesen Vorgang umkehren, auf hover-es wird snap um 360°, wie es ist einfach die Umkehrung der keyframes. Das ist, warum, wenn Sie den Mauszeiger über Sie, wenn es an diesem Punkt werden Sie sehen, es ist glatt.
- Ich habe versucht, ADDNIG: @keyframes spinreverse { 0% { transform: rotate(360deg); } 100% { transform: rotate(0deg); } } UND .spin:hover { animation: spinreverse 3,5 s linear 0s infinite normal; } Jetzt springt er zurück auf die ursprüngliche position... wie bekomme ich eine glatte umgekehrter Richtung wirkt??? habe auch versucht -360deg für die 100% zu Verwandeln, war ein wenig glatter, aber springt immer noch ein bisschen
- unabhängig der oben genannten Möglichkeiten erlauben nur das symbol, um zu springen zurück in seine ursprüngliche position, das ist glatter, aber nicht glatt in umgekehrter Richtung wie ich möchte... wenn das nicht möglich ist, in CSS ich wäre offen für eine javascript-Lösung....
Du musst angemeldet sein, um einen Kommentar abzugeben.
Musste ich viel denken, lösen Sie Ihre Anfrage; ich habe aber endlich eine Lösung finden,
demo
Den entsprechenden CSS-code :
Der trick: da Sie bereits 2 Elemente (spin-und yin-yang) ich einer von Ihnen zu drehen, in eine Richtung, und die andere zu drehen, in umgekehrter Richtung, und vieles mehr schnell. Wenn beide ausgeführt werden, der Netto-Effekt ist zum drehen in die eine Richtung, wenn Sie nur gedreht wird, ist die Netto-Effekt ist das Gegenteil.
Nun, das einzige, was übrig bleibt, ist zum anhalten und starten der schnellen rotation (die Einstellung nicht zurücksetzen es !)
Erkannt, ein Fehler auf den oben, die vierte Zeile .spin:hover sollte das un-Präfix:
korrigiert demo
Hinzufügen ein zusätzliches element in der HTML, die ich in der Lage gewesen, die rotation ändern, glatt.
reibungslosen übergang demo
Dem extra-CSS ist:
gut, dies:
css:
html:
DEMO
Das problem, dass Sie aufgrund der Langsamkeit des übergangs. Da kann css haben keine Logik, wenn Sie mit der elm wieder auf "0" oder "360" oder was immer Ihr setup war. So wird nie glatt sein, denn css kann nicht wissen, was das Letzte war "deg num" vor der hover passiert...
Jedoch! Sie können versuchen, stylus
"Stylus verfügt über leistungsfähige in-Sprache-Funktion Definitionen."
Hoffe, diese Hilfe :/