Chcę przekonwertować prostą animację CSS3 na czysty JavaScript (nie w jQuery, ponieważ moim zdaniem przesadą jest załadowanie całej biblioteki na tak prostą rzecz).Konwersja animacji CSS3 na czysty JavaScript
Chodzi o animację bounceInUp
z http://daneden.me/animate/. demo próbki: http://jsfiddle.net/ELDf7/
@keyframes bounceInUp {
0% {
opacity: 0;
transform: translateY(2000px);
}
60% {
opacity: 1;
transform: translateY(-30px);
}
80% {
transform: translateY(10px);
}
100% {
transform: translateY(0);
}
}
Na http://javascript.info/tutorial/animation, jest to poradnik o tym, jak zrobić animacje z JavaScript. Ale nie jestem bardzo dobry w matematyce, więc zrobiłem wykres w Photoshopie, aby pokazać, w jaki sposób należy uruchomić animację w JavaScript (w przybliżeniu):
(wykres plotera dla innych „delty” puszka zostanie znalezione: here)
Czy możliwe jest wykonanie wzoru matematycznego z tego wykresu w czystym JavaScript, który zwraca "deltę" animacji?
Próbowałem niektórych rzeczy z bounce function, ale tak naprawdę nie działa. (http://jsfiddle.net/ELDf7/2/)
Edit: udało mi się zrobić dobry wzór matematyczny:
-Math.cos (2 * Math.PI * toku) + Math.pow (PROGRESS , 1) * ((1,5 + 1) * postęp - 1,5);
Ale teraz mam inny problem, animacja zaczyna się od połowy obrazu, a nie z całego obrazu ukrytego, jak wygląda jak animacja CSS3.
Na żywo demo animacji JavaScript, zobacz tutaj: http://jsfiddle.net/ELDf7/14/
Czy ktoś wie jak mogę ją zmienić tak, że obraz jest całkowicie ukryty początkowo? Być może możliwe jest utworzenie zmiennej, która zawiera wysokość obrazu, a następnie JavaScript wykonuje obliczenia, aby animacja nie rozpoczęła się, dopóki nie pojawi się połowa obrazu.
jQuery podaje zdarzenia i timery, a także metodę animacji, która znacznie ułatwia to zadanie. W przeciwnym razie musisz samodzielnie ustawićWindowTimeout i wykonać te obliczenia. Szczerze mówiąc, prawdopodobnie głupio to zaimplementować samodzielnie, gdy jQueryUI ma coś dobrze dopasowanego. http://docs.jquery.com/UI/Effects/Bounce Jeśli naprawdę chcesz rzucić własną, może to pomóc w badaniu jej źródła. –
To nie są [przejścia CSS3] (http://dev.w3.org/csswg/css-transitions/); to [animacje CSS3] (http://www.w3.org/TR/css3-animations/). Transitions używa skrótu 'transition'. Animacje wykorzystują skróconą własność 'animation' i' @ keyframes'. –
Dla twojego ostatniego pytania, po prostu rzucając 'progress + = 1;' wewnątrz 'bounce' działa. [see] (http://jsfiddle.net/ELDf7/5/) – searlea