Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Łączenie animacji.
Forum PHP.pl > Forum > Po stronie przeglądarki > CSS
Leniobitz
Witam, mam następujący problem. Generalnie chciałbym stworzyć stronę na której wykonywana jest jakas animacja, po niej, w odstepie czasu, kolejna. Problem polega na tym, ze jezeli animacja druga ma zostac wykonana po zakonczeniu pierwszej nic sie nie dzieje, nawet jezeli jest to 1 sekundowa przerwa. Jezeli wlacze ja w trakcie pierwszej, problem znika. W jaki sposob moge zainicjowac druga animacje po zakonczeniu pierwszej?
Pozdrawiam.

P.S. Na razie nie jestem zainteresowany zadnymi rozwiazaniami zwiazanymi z SVG, chodzi mi o czysty CSS3.
werdan
Najszybciej to chyba ustawic odpowiedni transition-delay. Mozesz tez zapoznac sie z transitionend

http://stackoverflow.com/questions/2087510...-css-transition
Leniobitz
Właśnie nie chodzi mi o jakis skrypt JS, chodzi mi o czysty CSS3 i wyjasnienie dlaczego ta druga animacja nie odpala sie po zakonczeniu poprzedniej.
werdan
Daj jakiś kod. Tak to cięzko biggrin.gif
Leniobitz
  1. <header>
  2. <link rel="Stylesheet" type="text/css" href="css/style.css" />
  3. </header>
  4. <div class="container">
  5. <div class="step_one">
  6. <div class="test"></div>
  7. </div>
  8. </div>
  9. </body>
  10. </html

  1. .test
  2. {
  3. width: 100px;
  4. height: 100px;
  5. background: 86c31c;
  6. z-index: 2;
  7. float: left;
  8. margin:auto;
  9. margin-top: 100px;
  10. animation-name: test;
  11. animation-duration: 3s;
  12. animation-delay:300ms;
  13. animation-iteration-count:1;
  14. animation-timing-function:ease-in-out;
  15. animation-fill-mode:forwards;
  16.  
  17. -webkit-animation-name: test,testowy,testt;
  18. -webkit-animation-duration: 0.5s,3s,1s;
  19. -webkit-animation-delay:300ms,2s,10s;
  20. -webkit-animation-iteration-count:1,1,1;
  21. -webkit-animation-timing-function:ease-in-out;
  22. -webkit-animation-fill-mode:forwards;
  23.  
  24. }
  25. @keyframes test
  26. {
  27. 0% { transform:translate(0,0); }
  28. 100% { transform:translate(-150%,-150%); }
  29. }
  30.  
  31. @-webkit-keyframes test
  32. {
  33. 0% { -webkit-transform:translate(0,0); }
  34. 100% { -webkit-transform:translate(-200%,-200%); }
  35. }
  36. @keyframes testowy
  37. {
  38. 0% { background: yellow}
  39. 100% {background: black; }
  40. }
  41. @-webkit-keyframes testowy
  42. {
  43. 0% { background: yellow}
  44. 100% {background: black; }
  45. }
  46. @keyframes testt
  47. {
  48. 0% { transform:translate(-150%,-150%); }
  49. 100% { transform:translate(340%,-150%); }
  50. }
  51.  
  52. @-webkit-keyframes testt
  53. {
  54. 0% { -webkit-transform:translate(-150%,-150%); }
  55. 100% { -webkit-transform:translate(340%,-200%); }
  56. }

teraz niby wszystkie animacje sa wykonywane, ale "testowy" i "testt" wykonywane sa jednoczesnie, mimo ze powinno być opoznienie. Dodatkowo animacja testt zaczyna sie w innym punkcie niz skonczyla sie animacja "test"
werdan
  1. <header>
  2. <link rel="Stylesheet" type="text/css" href="css/style.css" />
  3. .test
  4. {
  5. width: 100px;
  6. height: 100px;
  7. background: #86c31c;
  8. z-index: 2;
  9. float: left;
  10. margin:auto;
  11. margin-top: 300px;
  12. margin-left:500px;
  13.  
  14.  
  15. -webkit-animation-name: test,testowy,testt;
  16. -webkit-animation-duration: 2s,2s,3s;
  17. -webkit-animation-delay:0s,2s,4s;
  18. -webkit-animation-iteration-count:1,1,1;
  19. -webkit-animation-timing-function:ease-in-out;
  20. -webkit-animation-fill-mode:forwards;
  21.  
  22. }
  23.  
  24.  
  25. @-webkit-keyframes test
  26. {
  27. 0% { -webkit-transform:translate(-100%,-100%); }
  28. 100% { -webkit-transform:translate(-200%,-200%); }
  29. }
  30.  
  31. @-webkit-keyframes testowy
  32. {
  33. 0% {background: #86c31c;}
  34. 100% {background: black;}
  35. }
  36.  
  37.  
  38. @-webkit-keyframes testt
  39. {
  40. 0% { -webkit-transform:translate(-200%,-200%); }
  41. 100% { -webkit-transform:translate(340%,-200%); }
  42. }
  43. </style>
  44. </header>
  45. <div class="container">
  46. <div class="step_one">
  47. <div class="test"></div>
  48. </div>
  49. </div>
  50. </body>
  51. </html


Przykład ponizej.

http://jsfiddle.net/qvVam/

Wersja tylko dla webkita!


Wartosci poczatkowe kolejnych animacji musza byc takie same jako końcowe wczesniejszych.
lukasz1985
Nie wiem po co zadawać sobie ból tymi przejściami w CSS3 który w obecnej fazie rozwoju wygląda tragicznie i nie jest obsługiwany przez wszystkie przeglądarki. Lepiej, póki co napisać kilka linii w JS i mieć pewność, że efekt będzie taki sam, a i kod nie będzie wyglądał kretyńsko.
Leniobitz
Werdan, wielkie dzieki. Zastanawia mnie tylko, jak zrobic, zeby miedzy animacjami byla przerwa, ale mimo to wszystkie zostaly wykonane - jedyne co przychodzi mi do glowy, to danie dla 0% takich parametrow jak dla 100% poprzedniej animacji a dopiero po ilus procentach czasu rozpoczecie wlasciwej animacji.
Lukasz1985 - pewnie ze mozna uzyc latwiejszych sposob, ja jednak postawilem sobie takie rozwiazanie za cel, pozwala mi to dzieki temu lepiej zrozumiec CSS3.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.