Desempenho

Há muitas modificações que podemos incluir em transições ou animações, mas algumas delas podem ser mais custosas ou trabalhosas para serem renderizadas pelo navegador, afetando assim o desempenho de uma página. Então sempre que possível essas modificações devem ser evitadas.

Esse é um assunto complexo de entender, é preciso saber o que acontece internamente em um navegador para compreender como otimizar o desempenho dessas modificações. Mas basicamente há algumas recomendações que podemos seguir.

Uma das recomendações é que se evite criar modificações que afetam a geometria do layout, como a altura ou largura de um elemento, por exemplo, pois é como se estivéssemos obrigando que o layout seja renderizado novamente a cada frame, e isso pode ser muito custoso. Conforme essas alterações custosas sejam renderizadas, os problemas de desempenho podem ser realmente visíveis, e notando isso, a experiência do usuário pode ser negativamente impactada.

Algumas propriedades como transforms ou opacity não alteram o layout composto pelos elementos da página, elas afetam somente o próprio elemento como um todo, e isso acaba por ser mais simples para o navegador, pois ele só precisa se preocupar em gerar o bitmap do próprio elemento e carrega-lo para a GPU, então o navegador pode aproveitar a GPU para desenhar o mesmo bitmap em uma posição, rotação ou escala diferente, compondo assim uma animação visivelmente melhor.

Podemos usar também a propriedade will-change para que o navegador saiba quais propriedades serão mudadas. Essa propriedade pode fazer com que o próprio nevagador faça algumas otimizações necessrias. No entanto, usar demais o will-change, pode fazer com que o navegador gaste recursos, resultando assim em mais perdas em desempenho.

.box {
  will-change: opacity;
}

results matching ""

    No results matching ""