2012-05-10 35 views
6

Używam animacji CSS3 i chcę mieć możliwość przejścia do określonego miejsca w animacji. Na przykład, jeśli CSS wygląda następująco (i udawać, że kiedyś wszystkie odpowiednie prefiksy):Jak mogę uruchomić animacje CSS3 w określonym miejscu?

@keyframes fade_in_out_anim { 
    0% { opacity: 0; } 
    25% { opacity: 1; } 
    75% { opacity: 1; } 
    100% { opacity: 0; } 
} 
#fade_in_out { 
    animation: fade_in_out_anim 5s; 
} 

wtedy chciałbym być w stanie zatrzymać animację, i przenieść go do znaku 50%. Myślę, że idealnym JavaScript będzie wyglądać mniej więcej tak:

var style = document.getElementById('fade_in_out').style; 
style.animationPlayState = 'paused'; 

// Here comes the made up part... 
style.animation.moveTo('50%'); // Or alternately... 
style.animationPlayPosition = '50%'; 

Czy ktoś zna sposób, aby tak się stało (mam nadzieję, że w Webkit)?

+0

Czy możesz podać więcej informacji na temat tego, co masz cel? Ponieważ jeśli chcesz rozpocząć animację w połowie drogi, polecam dwie animacje, jedną zaczynającą się od 50% i jedną pełną, a następnie wybierz między nimi za pomocą klas. – OverZealous

+0

Chcę móc tworzyć suwaki lub interakcje dotykowe, które pozwolą użytkownikowi na wyszukanie wzdłuż animacji. Postanowiłem podzielić animację na etapy, dopóki nie dowiem się, jak zrobić to, czego potrzebuję. –

Odpowiedz

18

Możemy użyć właściwości animation-delay. Zwykle opóźnia animację przez pewien czas, a jeśli ustawisz animation-delay: 2s;, animacja rozpocznie się dwie sekundy po zastosowaniu animacji do elementu. Ale można również używać go zmusić go, aby rozpocząć odtwarzanie animacji z określonym przesunięciem czasowym używając wartość ujemną:

.element-animation{ 
animation: animationFrames ease 4s; 
animation-delay: -2s; 
} 

http://default-value.com/blog/2012/10/start-css3-animation-from-specified-time-frame/

+2

To powinna być wybrana odpowiedź. Jest łatwy w implementacji i jest jasny. – Adam

Powiązane problemy