Лучше ли использовать анимацию jQuery fadeIn или CSS3?

Я создаю простую галерею, используя некоторые PHP и JavaScript, и пытаюсь сделать переход между изображениями. Затем я задавался вопросом, есть ли разница в производительности между использованием анимации CSS, например:

@-webkit-keyframes fadeIn {
0%   { opacity: 0; }
100% { opacity: 1; }
}

и jQuery fadeIn.

Я хотел бы использовать обратный вызов из fadeIn, но я также могу просто использовать таймер с CSS, который я предполагаю.

Возможно ли, что они будут работать лучше с большими изображениями? Я не вижу разницы, но задавался вопросом, может ли это повлиять на более медленные компьютеры.

Ответ 1

Как об одном с отступлением к другому? Используйте переходы CSS3, где это возможно, и используйте библиотеку обнаружения функций, такую ​​как Modernizr, чтобы определить, способен ли браузер пользователя переходить на CSS3.

Если И ТОЛЬКО Если браузер пользователя не поддерживает собственные анимации, только тогда вы должны использовать jQuery.

Нативная анимация ускоряется с использованием графического процессора, что приводит к меньшему ограничению работы процессора и значительно более плавной анимации. Кроме того, ЭТО НЕ ТРЕБУЕТСЯ JAVASCRIPT и не требует дополнительных запросов.

Ответ 2

Ну, я думаю, что использование CSS-анимации намного лучше, когда есть поддерживаемый браузер, и вы должны использовать jQuery только как резервную копию для неподдерживаемых браузеров. Как подробно объяснили на http://dev.opera.com/articles/view/css3-vs-jquery-animations, они провели тест анимации 300 divs одновременно с CSS и jQuery и заметили огромную разницу между статистикой производительности.

Статистика с использованием CSS анимации:

  • - Количество действий, выполняемых для завершения анимации: 100
    - Время, затраченное на завершение анимации: 2,9 секунды
    - Память, потребляемая в конце анимации: 1,5 МБ

и статистика с использованием jQuery:

  • - Количество действий, выполняемых для завершения анимации: 2119
    - Время, затраченное на завершение анимации: 5 секунд
    - Память, потребляемая в конце анимации: 6 МБ

Итак, как вы можете видеть, между производительностью существует большая разница. Это связано с тем, что процессор CSS браузера написан на С++, а собственный код выполняется очень быстро, тогда как jQuery (JavaScript) является интерпретируемым языком, и браузер не может заранее предсказать JavaScript заранее, с точки зрения того, какое событие будет происходить дальше, что ограничивает возможности браузеров для оптимизации производительности. Надеюсь, это ответит на ваш вопрос.