Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   Вопрос про CSS анимацию, и ускорение её с помощью фреймворков (react,vue) (https://javascript.ru/forum/xhtml-html-css/75329-vopros-pro-css-animaciyu-i-uskorenie-ejo-s-pomoshhyu-frejjmvorkov-react-vue.html)

who_cares_? 23.09.2018 13:55

Вопрос про CSS анимацию, и ускорение её с помощью фреймворков (react,vue)
 
Всем привет!

Немного предыстории:
У меня стоит задача ускорения анимации в мобильном Chrome. Проект на JQuery, и анимация на нем же (.animate). Изначально обратил внимание на реактивные фреймворки, но быстро понял, что чтобы использовать их для ускорения рендеринга, придется весь проект переписывать, а он довольно большой. Потом обнаружил, что использование анимации с аппараным ускорением ( transform:translate() ) и css свойством will-change дает отличные результаты (по сравнению с тем что было). Однако все равно неприятно подтормаживает(

И собственно вопрос.
Могут ли фреймворки дать дополнительное ускорение анимации, в дополнение к css анимации. Вопрос только про аппаратно ускоряемую анимацию (transform, opacity). Или может, есть еще способы ускорить?

Вот пример кода:
<style>
div {
will-change: transform;
transform: scale(0.9);
transition: all .3s linear;
}

<script>
$(div).css({ transform:'scale(1.2)' }); // реакция на клик

Aetae 23.09.2018 15:03

Фреймворки не могут - это просто способ писать тот же код. Встроенная CSS анимация - это максимально возможное ускорении. Быстрее только отказаться от DOM и рисовать всё в canvas.

who_cares_? 23.09.2018 16:24

Aetae,
Спасибо! Но я не раз встречал утверждение, что React ускоряет именно рендеринг анимации. Но возможно, речь шла про анимации которые переписывают дерево DOM - width, margin и тд

j0hnik 24.09.2018 04:12

who_cares_?,
Ускоряет написание, избегает ненужных перерисовок, уменьшает количество обращений к DOM, но если система плохо тянет какую то анимацию, реакт вам вряд ли поможет. Чудес к сожалению не бывает.


Часовой пояс GMT +3, время: 05:15.