Mantys Core

Cómo corregir los desplazamientos de diseño (CLS) en Divi y Elementor

Resumen en una frase: en los maquetadores visuales, la mayoría de los desplazamientos de diseño vienen de seis fuentes (imágenes sin dimensiones, estilos que llegan después del primer pintado, fuentes web que se intercambian, cabeceras y banners añadidos por scripts, sliders antes de arrancar, contenidos incrustados), y cada una se corrige reservando el espacio antes de que llegue el contenido.

Por · · 8 min

Search Console muestra «Problema de CLS: más de 0,1 (móvil)» en un grupo de páginas. PageSpeed muestra un CLS cercano a cero en la misma URL. Usted recorre la página y no ve nada evidente.

La diferencia es normal: el laboratorio solo mide la carga, mientras que los visitantes reales hacen scroll, tocan la pantalla y esperan a los banners. Nuestra guía sobre los datos de laboratorio y de campo explica por qué. Aquí, el objetivo es pillar el desplazamiento y eliminar su causa.

Pillar el desplazamiento en el acto

  • DevTools, pestaña Rendering, marque Layout Shift Regions: cada desplazamiento parpadea en azul en el momento en que ocurre. Use la emulación móvil y una red limitada, y luego recorra toda la página.
  • Panel Performance: grabe una carga y un scroll. La pista «Layout shifts» lista cada desplazamiento y los elementos que se movieron.
Consola: registrar cada desplazamiento y lo que se movió
new PerformanceObserver(l => l.getEntries().forEach(e => {
  if (e.hadRecentInput) return;
  console.log(e.value.toFixed(3), e.sources?.map(s => s.node));
})).observe({ type: 'layout-shift', buffered: true });

Anote el elemento y el momento: en la carga, cuando aparece una fuente, cuando se abre un banner, al hacer scroll. El momento apunta a la causa.

Las seis causas habituales en un sitio hecho con maquetador

1. Imágenes sin dimensiones. Un módulo de imagen que imprime una etiqueta <img> sin width ni height no ocupa altura hasta que llega el archivo, y entonces empuja todo lo que hay debajo. Solución: ancho y alto en cada imagen, lo que permite al navegador calcular la proporción; o un aspect-ratio en el contenedor.

2. Estilos que llegan después del primer pintado. Los maquetadores dividen su CSS: un archivo global, y luego archivos por página o por layout. Si uno de ellos carga tarde, o una optimización lo aplaza, un elemento se renderiza una vez sin sus estilos y luego salta a su sitio. Un caso real: en un sitio con Divi 5, un breadcrumb no tenía estilos propios y tomaba su tamaño de fuente de una hoja de estilos por layout que llegaba después del primer pintado. Ocupaba cuatro líneas y luego se reducía a una. CLS de campo de 0,215, invisible en el laboratorio. Darle al breadcrumb su propio tamaño de fuente y su interlineado en los estilos críticos inline lo dejó por debajo de 0,02. Solución: las reglas que definen el tamaño de todo lo visible sin hacer scroll deben estar en el critical CSS.

3. Fuentes web que se intercambian. Con font-display: swap, el texto se muestra primero en una fuente alternativa y luego en la fuente web. Si las dos tienen anchos distintos, las líneas se recolocan y los bloques cambian de altura. Solución: haga el preload de los uno o dos archivos de fuente usados en la parte visible sin scroll; elija una fuente alternativa con métricas parecidas; o ajuste la fuente alternativa con size-adjust y ascent-override en su @font-face.

4. Cabeceras y banners añadidos por scripts. Una cabecera fija cuyo script añade un padding a la página después de medirla; una barra superior o un banner de cookies insertado encima del contenido en lugar de flotar sobre él. Solución: dé a la página el margen de su cabecera en CSS desde el principio, y haga que los banners sean superposiciones (position: fixed) en lugar de bloques que empujan el contenido.

5. Sliders y carruseles antes de arrancar. Antes de que se ejecute su script, un slider muestra todas sus diapositivas apiladas, o ninguna, y luego se reduce a una sola. Solución: CSS para el estado previo al script, con la altura final reservada y todas las diapositivas ocultas salvo la primera.

6. Contenidos incrustados e iframes. Un vídeo, un mapa o una publicación de redes sociales que carga sin un tamaño reservado. Solución: un contenedor con un aspect-ratio fijo, o una vista previa ligera que ya tiene el tamaño final.

En resumen
  • Desplazamiento en la carga, imágenes: faltan las dimensiones (1).

  • Desplazamiento en la carga, bloques de texto: estilos tardíos (2) o intercambio de fuente (3).

  • Desplazamiento al cabo de un momento: scripts de cabecera, banner o slider (4, 5).

  • Desplazamiento al hacer scroll: contenidos incrustados sin espacio reservado (6), o animaciones que mueven elementos cambiando su altura o su margen.

Trampas propias de los maquetadores

  • Animaciones de entrada: las animaciones basadas en transform y opacity no cuentan como desplazamiento de diseño; las animaciones que cambian height, margin o top sí. Prefiera las primeras, y evite animar cualquier cosa visible sin hacer scroll.
  • Cabecera móvil distinta: una cabecera móvil más alta o más baja que el espacio que reservó la página desplaza todo, solo en los móviles.
  • CSS del maquetador desactualizado: tras un cambio importante, regenere el CSS estático del maquetador. Un archivo truncado u obsoleto puede dejar reglas sin aplicar hasta que se reconstruya.
  • Optimizaciones CSS: si al CSS recortado o aplazado le falta la regla que dimensiona un elemento, el desplazamiento vuelve. Vea nuestra guía sobre los estilos que faltan.

Validar

  • Repita el escenario: móvil, red limitada, carga, scroll hasta el final, abrir el menú. Ningún parpadeo azul en la parte visible sin scroll.
  • Luego «Validar corrección» en Search Console, y dele los 28 días de la ventana de datos de campo.

Con Mantys Core

Con Mantys Core

Mantys Core puede gestionar toda su capa de rendimiento, caché incluida, o convivir con la configuración que ya tiene. En los desplazamientos de diseño, cubre la parte de reserva de espacio que se puede automatizar:

  • Puede añadir a las imágenes el ancho y el alto que faltan, leídos del propio archivo, y una relación de aspecto cuando no hay ninguna definida.

  • El critical CSS de cada página se construye a partir de renderizados en móvil y escritorio, así que lo visible en la carga tiene sus estilos desde el primer pintado.

  • Las fachadas de vídeo reservan su caja antes de que cargue el reproductor.

  • El comportamiento de visualización de las fuentes se puede definir para todo el sitio, con excepciones por familia de fuentes.

Los banners, los estados iniciales de los sliders y las métricas de las fuentes siguen siendo decisiones de diseño: la plataforma se encarga de la parte sistemática para que usted pueda centrarse en esas.

En resumen

  • El laboratorio rara vez ve el desplazamiento: píllelo en DevTools mientras hace scroll e interactúa.
  • Seis causas: imágenes sin dimensiones, estilos tardíos, intercambios de fuentes, cabeceras y banners añadidos por scripts, sliders antes de arrancar, contenidos incrustados.
  • Cada solución reserva el espacio antes de que llegue el contenido.
  • En los maquetadores, vigile las animaciones, las cabeceras móviles y el CSS desactualizado del maquetador.
  • Valide en Search Console y espere 28 días.

Comentarios

¿Atascado con un problema parecido? Describa su configuración y lo que observa. Leemos cada comentario y respondemos.

Todavía no hay comentarios. Comparta el primero su caso.

Los comentarios se revisan antes de publicarse. Su correo solo se guarda para responderle y puede borrarse si lo solicita.

Mi cuentaObtener licencia →