Muchos juegos en línea utilizan animaciones de elementos HTML como mecánica de juego central. Por ejemplo, un juego de solitario puede tener un elemento DIV o un elemento IMG para cada carta en el tablero. Los jugadores arrastran y sueltan estas cartas en el tablero y el juego a menudo muestra animaciones que duran unos segundos. Un ejemplo de tal animación es repartir cartas, es decir, distribuirlas desde el mazo a sus lugares apropiados en el tablero de juego al comienzo del juego. Esto generalmente se hace 1) sin interacción del usuario, al ingresar al sitio web, y luego 2) después de la interacción del usuario, al finalizar un juego y comenzar otro.
Estas animaciones duran más de 500 ms, por lo que (según tengo entendido) los elementos que terminan su movimiento después de ese tiempo cuentan para CLS independientemente de si el usuario inició la animación o no. Además, la animación de repartir cartas que saluda al usuario en el sitio web cuenta por completo para CLS. Esto podría resolverse obligando al usuario a interactuar con el sitio web antes de la animación inicial, pero es una mala experiencia de usuario, ya que es un clic extra innecesario y potencialmente molesto para el usuario. Hay mucho que escribir al respecto, pero por ahora, solo diré que mostrar una animación de saludo (no iniciada por el usuario) es la mejor práctica de UX en este contexto y es empleada por los juegos más populares (también aquellos que usan lienzo).
Los sitios web con juegos basados en elementos HTML son bastante populares e incluyen Solitario, Mahjong, Buscaminas, etc. Algunos están en los primeros lugares en los resultados de búsqueda de Google y tienen cientos de miles de usuarios cada mes. Sospecho que otros sitios no relacionados con juegos también pueden emplear animaciones de movimiento útiles de elementos HTML que los usuarios aprecian. Por lo tanto, preguntaré en general:
Es difícil decir exactamente qué está causando su problema sin saber cómo ha implementado sus animaciones, pero si está animando o haciendo una transición usando la propiedad de transformación CSS, entonces no debería contribuir a CLS porque no activa un nuevo diseño. de la pagina
En general, esta es una práctica recomendada para animaciones fluidas, por lo que la recomendaría incluso si su CLS estaba bien.
Vea más detalles aquí: https://web.dev/optimize-cls/#animations