Pracuję nad aplikacją internetową; jednym z jego wymagań projektowych jest kilka dużych animacji CSS3.Animacje i przejścia CSS3 - czy przeglądarki lepiej radzą sobie z animacją tła graficznego lub elementów DOM?
W szczególności - ma duży <div>
, który zostanie przeniesiony na cały ekran w odpowiedzi na dane wprowadzone przez użytkownika.
Ze względu na sposób zaprojektowania aplikacji "treść" tej <div>
może zostać zaimplementowana jako duża grafika statyczna (np. .jpg lub .png) ustawiona jako tło <div>
.
Lub treść może być również zaimplementowana ze standardowym HTML. (Sam układ treści jest "mały" podstępny - wymagałby kilku pływających lub pozycjonowanych zagnieżdżonych elementów div i przęseł, ale nic szalonego.)
Moje pytanie brzmi - która opcja może przynieść najlepsze rezultaty (płynność) animacje?
(Mogę oczywiście to sprawdzić samemu, ale często trudno jest ocenić płynność animacji, szczególnie w kilkunastu różnych przeglądarkach na szerokiej gamie urządzeń, ale zdaję sobie sprawę, że istnieją inne kwestie - np. Konserwacja. ale w tym przypadku, jestem całkowicie skupiony na wykonywaniu animacji.)
Zastanawiam się, czy przeglądarki są generalnie lepiej w animowaniu/renderowania prostych elementów DOM z środowisk graficznych, lub bardziej skomplikowanych elementów DOM (z dużo dzieci) BEZ elementów graficznych?
Również - czy istnieją inne wytyczne? Np.,
- Czy przeglądarki animują niektóre rodzaje elementów graficznych lepiej niż inne? (E.g., .png vs .jpg)
- Czy przeglądarki lepiej ożywiają element, gdy jego elementy podrzędne mają
position:absolute
, kiedy elementy podrzędne są unoszone lub gdy pozycje elementu potomnego są określane przez regularny obieg dokumentów? - Czy rzeczy takie jak nieprzezroczystość, cień lub transformacje 3D na zagnieżdżonych elementach mają niekorzystny wpływ na animację elementu nadrzędnego?
- Czy wydajność animacji ulega pogorszeniu w stosunku do złożoności elementu? Np. Czy element z tuzin poziomów zagnieżdżonych animacji elementów DOM jest mniej płynny niż element prosty z tylko węzłem tekstowym?
Mam intuicję na temat tych rzeczy (głęboko zagnieżdżone elementy DOM będą animować mniej płynnie niż prosty element), ale moja intuicja często jest błędna. Zastanawiam się, czy istnieją "reguły" dotyczące mniej więcej pracy przeglądarki.
Co jeszcze powinienem wziąć pod uwagę, gdy duże elementy z dużą ilością elementów podrzędnych są animowane?
To nie odpowiada na twoje pytanie, ale może pomóc w twoich badaniach - http://paulirish.com/2012/why-moving-elements-with-translate-is-better-than-posabs-topleft/ – Neil
Dzięki Neil - Świetny link. Natknąłem się na to po jakimś czasie, a Paul Irish jest tym, który sprawił, że przede wszystkim pomyślałem o tych rzeczach. Widząc, co on i inni ludzie tego kalibru są w stanie wyprodukować, jest to, co popycha mnie do optymalizacji rzeczy tak bardzo, jak to możliwe. – mattstuehler