Animacja warstwy DIV poprzez manipulację stylem CSS dla tej warstwy.
Wykorzystujemy funkcję
1 | setTimeout ( funkcja, czas, parametr ); |
Funkcja ta wywołuje z opóźnieniem inną, podaną jako pierwszy parametr funkcję. Kolejne wartości to opóźnienie w milisekundach, oraz parametr (tu aktualny rozmiar i pozycja animacji).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <html> <head></head> <body> <!-- Warstwa animacji, pozycja musi być absolute, nadajemy początkowe położenie i romiar animacji --> <div style="position: absolute; left: 95px; top: 50px; font-size: 15px;" id="warstwa"> Tekst </div> <script> //zmienna globalna, od tej pory pisząc 'warstwa' odwolujemy się do DIV o tej nazwie: var warstwa = document.getElementById('warstwa'); function przesun( kierunek ) { var odLewej = parseInt(warstwa.style.left); //odczytanie aktualnej pozycji od lewej i zamiana na liczbę bez px odLewej += kierunek; //dodanie pikseli, jeśli wartość ujemna będzie zmniejszać w kolejnym kroku warstwa.style.left = odLewej + 'px' ; //nadanie nowej pozycji warstwie warstwa.style.fontSize = odLewej + 'px'; if (odLewej>300 || odLewej<0) kierunek *= -1; setTimeout( przesun, 50, kierunek); //za 50 ms zrobi przesun(kierunek); } przesun(5); //start animacji z krokiem 5 pikseli </script> </body> </html> |
Przykład 2
Drugi przykład, powyższą funkcję – jeśli dodamy jej jako parametr warstwę – można wykorzystać do tworzenia wielu współbieżnych animacji, o różnej szybkości:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <html> <head></head> <body> <!-- Warstwa animacji, pozycja musi być absolute, nadajemy początkowe położenie i romiar animacji --> <div style="position: absolute; left: 95px; top: 50px; font-size: 15px;" id="warstwa1"> Duży </div> <div style="position: absolute; left: 295px; top: 200px; font-size: 200px; font-color:green;" id="warstwa2"> Mały </div> <script> //zmienna globalna, od tej pory pisząc 'warstwa' odwolujemy się do DIV o tej nazwie: function przesun( warstwa, kierunek ) { var odLewej = parseInt(warstwa.style.left); //odczytanie aktualnej pozycji od lewej i zamiana na liczbę bez px odLewej += kierunek; //dodanie pikseli, jeśli wartość ujemna będzie zmniejszać w kolejnym kroku warstwa.style.left = odLewej + 'px' ; //nadanie nowej pozycji warstwie warstwa.style.fontSize = odLewej + 'px'; if (odLewej>300 || odLewej<0) kierunek *= -1; setTimeout( przesun, 50, warstwa, kierunek); //za 50 ms zrobi przesun (warstwa, kierunek); } var warstwa1 = document.getElementById('warstwa1'); var warstwa2 = document.getElementById('warstwa2'); przesun( warstwa1, 15); //start animacji z krokiem 5 pikseli przesun( warstwa2, 5); </script> </body> </html> |
Oto działający kod:
http://ti.fulara.com/~adam/fx-team/animacja.html
Lista dostępnych opcji stylu CSS jest tu:
http://www.w3schools.com/jsref/dom_obj_style.asp