2011-10-23 11 views
13

Cada vez que visito una página con animaciones de CSS3, mi portátil se vuelve ruidoso (me da una señal de que hace un gran trabajo allí). No me importaría si al menos las animaciones resultantes fueran lo suficientemente fluidas. Pero no lo son. Lo que obtengo como resultado en mi Core 2 Duo de 2,4 GHz con 8 GB de RAM y NVIDIA GeForce 320M dedicada (no mucho, pero debería ser suficiente para algunos css, ¿no? ...) es un poco brusco, parpadea al azar, en algunos casos tener extraños artefactos ... "animación", que a menudo es peor que su equivalente JS ...animaciones y rendimiento de CSS3: ¿hay puntos de referencia?

¿Alguien ha hecho alguna comparación de JS vs CSS animations? ¿O la evaluación comparativa de los objetos propuestos de CSS3 para el uso en el mundo real (por ejemplo, cuántos de ellos pueden estar en la página simultáneamente sin serios problemas, etc.)? ¿Hay alguna práctica recomendada (como hacer esto, no hacer eso o su navegador rastreará)?

Respuesta

12

CSS3 utiliza aceleración de GPU en algunos navegadores, lo que significa que si tiene una gran tarjeta GFX, obtendrá animaciones suaves y rápidas. Donde CSS/JQ usa su memoria.

Por lo tanto, realmente no creo que sea posible realizar una comparación comparativa de pruebas comparativas.

Acerca de cuántas animaciones puede usar, con el navegador actualizado con tanta frecuencia y el hardware como factor, será muy difícil hacer tales "guías de uso".

no he visto ninguna de JS bien :)

Para más información sobre la aceleración de GPU, véase:

http://www.html5rocks.com/en/tutorials/speed/html5/#toc-hardware-accell

Hay algunos grandes artículos sobre el tema aunque:

http://www.netmagazine.com/opinions/css3-vs-javascript

http://www.whatcreative.co.uk/blog/tips/the-benefits-of-css3-vs-jquery/

+0

Dudo que algunas animaciones CSS3 sean "más pesadas" en GPU que cualquier juego de PC desde 1999. las matemáticas son súper simples en comparación con los juegos de cosas locas que se requerían hace 10 años, de modo que, de hecho, el problema de la velocidad es solo la implementación del navegador con CSS-> GPU. pero solo estoy adivinando. – vsync

+0

Es cierto. Pero supongo que se trata de la cantidad de "poder" que un navegador debería poder alejarse del dispositivo.Imagine que el navegador debe usar toda su GPU como si fuera un juego, y luego piense en las personas que usan o abusan de esta. Así que con suerte los navegadores mejoran al manejar el uso de la GPU, pero supongo que hay una razón por la que las animaciones/desvanecimientos simples son tan exigentes. –

18

He hecho algunos proyectos con transiciones CSS3 y repliegue de Jquery .animate() cuando CSS3 no es compatible.

tengo tres equipos de prueba, además de mi propia:

  • un 6+ años portátil (correr XP, Athlon 1800+ y 768Mo de Ram)
  • un ordenador portátil 3 años (que se ejecuta es malísima Vista y una CPU de doble núcleo de Intel con 2Go de Ram)
  • un escritorio Franken (unos pocos SO instalado con un P4 y 1Gb de RAM)

Lo que he observado es que la mayoría de las veces, CSS3 tiene un mejor rendimiento.

Lo que quiero decir con "funciona mejor" es solo que "se siente mejor": no intenté comparar los perfs, ni aplicar un método de prueba científica, y mi observación no debe tomarse por más que un empírico sensación. También tenga en cuenta que utilizo principalmente las transiciones CSS3 y no las animaciones CSS3 (es decir, con fotogramas clave).

Sin embargo, "mejor" no significa aquí "siempre es bueno". En las computadoras más antiguas, Javascript y CSS3 son igualmente laggy. Si su sitio es pesado en JS o CSS3, los IE anteriores a la versión 9 son siempre una experiencia pobre, los IE anteriores a la versión 8 siempre son una verdadera pesadilla. Firefox antes de v4 es mejor pero más que perfecto en computadoras antiguas.

En todos los casos, CSS3 debe aplicarse correctamente: por ejemplo, encontré que se descolora un div a la opacidad: 0 sin configuración: ninguno cuando termina es siempre una mala idea ... La transición a CSS3 es bastante nueva y no hay mejores prácticas reales existe, es prueba y error por ahora.

En dispositivos móviles modernos (poseo algunos dispositivos IOS, Android y BBOS), el CSS3 siempre es mucho mejor que Javascript: en un iPad 1, un simple $ ('img'). FadeOut() puede ser bastante feo cuando la transición de CSS3 está limpia.

Por lo tanto, para concluir, mi personal (y limitado) experiencia dice:

  • CSS3 es a menudo mejor que Js, especialmente para dispositivos móviles modernos
  • aunque ambos son malos en los equipos pobres/navegador combinación cuando se usa en exceso
  • como de costumbre, depende de sus usuarios. Si tienen Macbooks de última generación, puedes usar mucha animación sin miedo. Si no están bien equipados, las animaciones podrían obstaculizar seriamente su experiencia de navegación.
  • Creo que lo mejor es hacer las transiciones CSS3 con un repliegue Jquery si no se admite, y mantener 'em sencilla (es decir, no la animación de cuatro propiedades en tres elementos diferentes a la vez)

espero que ayude.

2

Después de usar css animations en un entorno de producción para algunos proyectos, tengo que decir que es bastante doloroso.

También uso TweenLite, mi biblioteca de animación favorita que utilicé mucho en Flash anteriormente, y que ha sido reescrita para javascript y CSS.

Ahora que tengo suficiente experiencia con la animación html5, puedo decir con certeza que TweenLite es la herramienta más adecuada.

Solía ​​usar css animaciones y transiciones para mis desarrolladores web y uso TweenLite como alternativa para los navegadores más antiguos, pero cuando comparo las perforaciones en los navegadores modernos con CSS y TweenLite, la versión TweenLite es casi siempre la más suave.

me corrieron estas pruebas a causa de este artículo que el desarrollador simplemente escribió:

http://www.greensock.com/transitions/

GSAP se aprovecha de requestAnimationFrame y es super optimizado. Tiene un rendimiento equivalente a css3 con api mucho mejor para la secuenciación, el control, las devoluciones de llamada ...

¡Una cuestión de elección! Hice la mía

2

Esto es nuevo (a partir de diciembre de 2012), por Greensock: http://www.greensock.com/js/speed.html

Usted puede hacer una evaluación y comparación de las animaciones CSS3 con animaciones javascript en frameworks como jQuery, YUI, Zepto, Mootools, Dojo, TweenJS y GSAP, también.

Cuestiones relacionadas