Wie du einen jQuery-animation zurück zum original-CSS-Eigenschaften
Gibt es viele sehr ähnliche Fragen hier, aber ich kann nicht finden, eine genaue Antwort auf meine Frage.
Ich bin neu in der Verwendung der jQuery - .animate()
Methode und ich möchte wissen, ob es eine gängige oder beste Methode der Umkehrung der animation?
Hier ist ein Turnschuh ein Beispiel für das, was ich mir ausgedacht habe:
Fiddle
Im wesentlichen alle es tut, ist, verwenden Sie eine if-Anweisung zu prüfen, eine CSS-Eigenschaft und dann animieren Sie ihn mit einem Staat oder zurück zu den anderen Staat.
JS:
$(document).ready(function () {
$("[name=toggle]").on("click", function () {
if ($('.box').width() < 125) {
$(".box").animate({
opacity: .3,
width: "125px",
height: "125px"
}, 250);
} else {
$(".box").animate({
opacity: 1,
width: "100px",
height: "100px"
}, 250)
}
});
});
CSS:
.box {
background-color: lightblue;
box-shadow: 5px 5px 10px #000000;
width: 100px;
height: 100px;
display: block;
margin: 20px auto 0 auto;
border-radius: 25px;
}
[name="toggle"] {
display: block;
margin: 0 auto;
margin-top: 15px;
}
HTML:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<button name="toggle">Animate</button>
<div class="box"></div>
Dies ist, was ich war in der Lage zu kommen mit meiner ersten Exposition .animieren(), aber ich glaube, es gibt einen besseren Weg.
Sagen Sie, dass Sie wollen, um eine animation zu schweben, und Umgekehrt die animation, wenn die Maus bewegt wird von dem element. Gibt es einen Weg, um leicht umkehren der jQuery-animation leicht? Ich bin Weg, ich könnte mit einem :hover-Zustand mit CSS, aber das ist eine hypothetische Frage bezüglich jQuery .animieren().
- Soweit ich weiß, gibt es nicht eine
reverse
Funktion mitanimate()
, ich benutze VelocityJS viel mehr, obwohl (es hatreverse
Unterstützung), lohnt sich - Sieht sehr cool aus, werde ich anfangen zu spielen mit ihm um,
$(".yourelem").removeAttr("style");
- Es gibt wahrscheinlich nicht eine bessere Weise. Plain
.css()
können Sie übergeben Sie eine leere Zeichenfolge (''
) zum löschen der in der Regel aus dem element (also das zurücksetzen der stylesheet), aber das scheint nicht zu funktionieren mit.animate()
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dies mit einfachen CSS-übergänge.
CSS:
HTML:
In der Regel css ist einfacher. Jedoch, wenn Browser sind alte jquery möglicherweise Ihre einzige Weg, so habe ich noch die JQuery-Weg.
JS:
CSS:
HTML:
Dies ist wohl der kürzeste Weg, die ich denken kann :
JS:
CSS:
HTML:
Beachten Sie, dass es eine gute Idee, fügen Sie ein
.stop()
zur animation. Es wird nicht unterbrochen werden, sonst startet aber häufen sich die Klicks (animation queue buildup) statt. Mehr fällt mit längeren Laufzeiten verbunden.Hier ist man mit hover-Aktion :
JS:
CSS:
HTML:
Ich würde kombinieren CSS-übergänge und mittels jQuery-toggle-Klassen, wie folgt:
JSFiddle
CSS:
Diese Weise können Sie immer noch die Kontrolle über die änderung mit einer Schaltfläche (oder einer anderen JS-events).
=====
EDIT: Die einzige Möglichkeit die ich mir vorstellen könnte, um "reverse" - nur mit JS-änderungen zu "erinnern", die CSS-Eigenschaften Sie ändern... und dann wieder zurück. Das wäre gut, dass, wenn Ihre ursprüngliche
.box
css-änderungen, wäre es immer noch Arbeit ohne änderung der JSJSFiddle
======
HINWEIS: jQueryUI hat eine toggleClass() enthält Animationen.
Einer sehr naiven Lösung, die ich vor kurzem benutzt, ist, um alle Werte für die animierten Eigenschaften mit
jQuery.fn.css(arrayOfPropertyNames)
und cache Sie mitjQuery.fn.data
. Dann einfach später erneut nutzen, um wieder die animation.Es nimmt die gleichen Argumente wie
jQuery.fn.animieren
.Genannt, das erste mal: es speichert die ursprünglichen Werte und animiert das element mit der übergebenen
properties
.Zweiten mal genannt: es speichert die animierten Werte und animiert das element, um die gespeicherten ursprünglichen Werte
https://jsfiddle.net/jat8wdky/
Update
Könnte man verrückt werden, und überschreiben Sie die original -
jQuery.fn.animate
zum Zwischenspeichern der Werte:Animieren, wie gewohnt mit
$(selector).animate
wird, wieder mit$(selector).etamina
.https://fiddle.jshell.net/mk5zc1oh/
Beachten Sie, dass
jQuery.css
zurück nicht das eigentliche element offset und Größe, nur die berechnete styles.