Scanverra

Cómo solucionar el Cumulative Layout Shift (CLS)

El CLS mide cuánto se mueve inesperadamente el contenido visible mientras carga su página: un botón que se desplaza a la derecha justo cuando va a tocarlo, o un texto que salta hacia abajo en la página a mitad de la lectura. El umbral de Google para considerarlo "bueno" es una puntuación de 0.1 o inferior, y es una de las tres Core Web Vitals oficiales.

Por qué su página se desplaza

Casi todos los problemas de CLS provienen de una de tres fuentes:

  • Imágenes e iframes sin dimensiones reservadas. Si el navegador no conoce el tamaño de una imagen antes de que cargue, renderiza el cuadro con altura cero y luego desplaza todo lo que hay debajo hacia abajo en el instante en que llega la imagen.
  • Contenido inyectado por encima del contenido existente. Los anuncios, las barras promocionales y los banners de cookies que se insertan en el DOM después del renderizado inicial empujan hacia abajo todo lo que está debajo de ellos.
  • Fuentes web que reflujan el texto al intercambiarse. Primero se renderiza una fuente de respaldo, luego carga la fuente real y se intercambia con un ancho/alto distinto, reflujando cada línea que toca.

Cómo identificar qué se está desplazando

Las verificaciones de rendimiento de Scanverra puntúan el CLS directamente a partir de una ejecución real de Lighthouse contra su URL en vivo, usando la misma métrica cumulative-layout-shift en la que se basan los datos de campo de Google. Cuando es alto, Scanverra lo señala como un problema distinto, no solo como una cifra, sino como un problema con nombre propio, porque un diseño inestable también rompe otra cosa: un agente de IA o una herramienta automatizada que intenta hacer clic en un botón que acaba de moverse apuntará al elemento equivocado.

Para encontrar el elemento específico responsable, el panel de Rendimiento de Chrome DevTools registra entradas de "Layout Shift" con el nodo exacto que se movió y en qué medida: ábralo, grabe una carga de página y busque los marcadores rojos de desplazamiento de diseño en la pista de Experience.

Cómo solucionarlo

1. Reserve espacio con dimensiones explícitas

Cada imagen, video e iframe debería declarar su width y height (o usar el aspect-ratio moderno de CSS) para que el navegador pueda asignar el cuadro correcto antes de que llegue el recurso:

El width/height explícito reserva el cuadro de antemanotypescript
1<img
2  src="/product.webp"
3  alt="Wireless keyboard, top view"
4  width={640}
5  height={480}
6  loading="lazy"
7/>

Cuando el tamaño exacto en píxeles varía (un contenido incrustado responsivo, por ejemplo), use CSS en su lugar:

aspect-ratio reserva espacio sin dimensiones fijas en píxelescss
1.video-embed {
2  width: 100%;
3  aspect-ratio: 16 / 9;
4}

2. Dé al contenido inyectado dinámicamente un espacio de altura fija

Si un banner de cookies, un espacio publicitario o una barra promocional tiene que insertarse después del renderizado inicial, dele a su contenedor un min-height reservado desde el principio en lugar de dejar que empuje el contenido hacia abajo cuando llegue: incluso un cuadro de marcador de posición vacío evita el desplazamiento.

3. Ajuste las métricas de su fuente de respaldo a las de la fuente real

Use font-display: swap combinado con una fuente de respaldo cuya altura-x y ancho de carácter promedio sean cercanos a los de su fuente real (herramientas como Fontaine o el ajuste manual de size-adjust en un bloque @font-face pueden igualarlos), para que el intercambio no reflujen visiblemente la línea.

4. Nunca inserte contenido por encima de la posición actual de desplazamiento del usuario

Si tiene que aparecer contenido nuevo, un banner de "nuevas publicaciones disponibles", por ejemplo, insértelo por debajo de la línea de flotación o requiera una acción del usuario para mostrarlo, en lugar de inyectarlo por encima de lo que ya es visible.

Cómo detecta Scanverra los problemas de CLS

Scanverra ejecuta una pasada real de Lighthouse contra su URL en vivo y lee el valor real de cumulative-layout-shift a partir de ella, la misma ejecución usada para LCP y TTFB, y señala un problema dedicado cuando es alto, con una descripción vinculada a por qué la inestabilidad del diseño importa específicamente para cualquiera (humano o automatizado) que intente interactuar con su página.

FAQ

Frequently asked questions

¿Cuál es una buena puntuación de CLS?

0.1 o inferior es "bueno". De 0.1 a 0.25 necesita mejora, y por encima de 0.25 es "deficiente". La puntuación no tiene unidades: es una suma de cuánto se movieron los elementos visibles, ponderada por cuánto del viewport ocupan.

¿Cuenta un desplazamiento de diseño aunque ocurra rápido?

Sí. Al CLS no le importa la velocidad, solo la distancia y el área: un desplazamiento ultrarrápido que mueve un elemento grande sigue sumando la misma puntuación que uno lento. Los únicos desplazamientos excluidos son los que ocurren dentro de los 500 ms posteriores a una interacción del usuario como un clic o un toque.

¿Por qué mi CLS se ve bien localmente pero mal en el informe de Scanverra?

Las pruebas locales en una conexión rápida a menudo cargan anuncios, fuentes y contenido incrustado antes de que usted note un desplazamiento. Scanverra mide la secuencia de renderizado real contra su URL en vivo, lo que saca a la luz desplazamientos que solo aparecen bajo un tiempo de red realista.

¿Cuentan los encabezados fijos o los banners de cookies contra el CLS?

Solo si empujan el contenido existente hacia abajo después de que ya se ha renderizado. Un banner de cookies que se superpone al contenido, o uno que tiene espacio reservado desde el primer pintado, no cuenta; uno que se desliza y empuja el contenido de la página hacia abajo sí.

Free - no sign-up required

Verifique su puntuación de CLS gratis

Ejecute una auditoría de rendimiento y vea exactamente cuán estable es su diseño, en escritorio y en móvil.

Run free audit