Tutorial WordPress: Hacer que el bloque Cover de Gutenberg se vea igual en todos los tamaños

·

·

Introducción

El bloque Cover de Gutenberg es uno de los más útiles para crear secciones hero, cabeceras con imágenes o bloques llamativos. Sin embargo, por su naturaleza flexible y las distintas maneras en que se puede insertar una imagen (como background CSS, como elemento img dentro del bloque, o incluso vídeo), su aspecto puede variar mucho entre tamaños de pantalla. Este tutorial explica, paso a paso y con ejemplos prácticos, cómo hacer que el bloque Cover se vea igual en todos los tamaños —es decir, mantener la misma composición visual, recorte y proporción en móvil, tablet y escritorio— sin afectar la accesibilidad ni el rendimiento.

Resumen del problema

Estrategia general

  1. Crear una clase CSS específica para los covers que queremos uniformes (por ejemplo: uniform-cover).
  2. Definir una proporción / relación de aspecto única para ese cover (p. ej. 16:9 o 4:3). Usaremos aspect-ratio cuando sea posible y una técnica fallback con padding-top para navegadores antiguos.
  3. Asegurar que la imagen o el vídeo se escalan con object-fit: cover o background-size: cover y que el punto focal quede centrado (object-position/ background-position).
  4. Controlar la superposición (overlay) para que la lectura del texto sea constante: usar pseudo-elementos o las capas del propio bloque garantizando el mismo color/alpha en todos los tamaños.
  5. Agregar esas reglas al theme (front-end) y al editor para que lo que se ve en el editor sea representativo del front-end.

Preparación: añadir una clase al bloque

En el editor, selecciona el bloque Cover y en la sección Avanzado > Clase(s) CSS adicional(es) añade: uniform-cover. Ese será el selector que usaremos en CSS para aplicar las reglas específicas sin tocar otros covers del sitio.

CSS base (requisitos)

Estos son los principios a aplicar en CSS:

A continuación tres ejemplos concretos: (A) moderna con aspect-ratio, (B) fallback con padding-top, y (C) manejo cuando la imagen está dentro como ltimggt o como background.

Ejemplo A — Uso de aspect-ratio (navegadores modernos)

Este método es la forma más sencilla y madura: define una proporción y deja que el contenedor escale manteniendo esa proporción en todos los tamaños.

/ Define el cover uniforme /
.wp-block-cover.uniform-cover {
  position: relative
  overflow: hidden
  / Proporción deseada: 16:9 => 16 / 9 = 1.777... /
  aspect-ratio: 16 / 9
  width: 100%
  / Si quieres un máximo en altura lo puedes limitar /
  max-height: 70vh
}

/ Asegura que la imagen de fondo funcione igual /
.wp-block-cover.uniform-cover .wp-block-cover__background,
.wp-block-cover.uniform-cover .wp-block-cover__video-background {
  position: absolute
  inset: 0
  width: 100%
  height: 100%
  background-position: center center !important
  background-size: cover !important
  object-fit: cover
  object-position: center center
}

/ Si el cover tiene una imagen  dentro /
.wp-block-cover.uniform-cover img {
  width: 100%
  height: 100%
  -o-object-fit: cover
  object-fit: cover
  object-position: center center
  display: block
}

/ Mantener el contenido (texto) centrado y visible /
.wp-block-cover.uniform-cover .wp-block-cover__inner-container {
  position: relative
  z-index: 2
  display: flex
  align-items: center
  justify-content: center
  height: 100%
  padding: 2rem
  box-sizing: border-box
}

Ejemplo B — Fallback con padding-top (compatibilidad amplia)

Si necesitas compatibilidad con navegadores que no soportan aspect-ratio, usa la técnica padding-top para crear un contenedor con la relación de aspecto deseada.

/ Contenedor que mantiene proporción con padding-top /
.wp-block-cover.uniform-cover {
  position: relative
  width: 100%
  overflow: hidden
}

/ Wrapper que crea el ratio (16:9 => 56.25%) /
.wp-block-cover.uniform-cover::before {
  content: 
  display: block
  padding-top: 56.25% / 9/16 = 0.5625 -> 56.25% /
}

/ Forzar que el contenido ocupe el espacio absoluto dentro del bloque /
.wp-block-cover.uniform-cover .wp-block-cover__inner-container,
.wp-block-cover.uniform-cover .wp-block-cover__background {
  position: absolute
  inset: 0
  width: 100%
  height: 100%
}

/ Ajustes de imagen/video como en el ejemplo A /
.wp-block-cover.uniform-cover .wp-block-cover__background {
  background-position: center center !important
  background-size: cover !important
}
.wp-block-cover.uniform-cover img {
  width: 100%
  height: 100%
  object-fit: cover
  object-position: center center
  display: block
}

Ejemplo C — Forzar punto focal y evitar recortes indeseados

Si la composición de la imagen requiere que el punto focal no esté centrado, puedes usar object-position o background-position para ajustar. Además, si necesitas distintos focos según pantalla, usa media queries.

/ Foco centrado por defecto /
.wp-block-cover.uniform-cover .wp-block-cover__background {
  background-position: center center !important
}

/ Para una imagen cuyo foco está en la parte superior en móvil /
@media (max-width: 768px) {
  .wp-block-cover.uniform-cover .wp-block-cover__background {
    background-position: center top !important
  }
  .wp-block-cover.uniform-cover img {
    object-position: center top
  }
}

Overlay / Superposición consistente

El bloque Cover tiene su propia capa de overlay, pero puede variar según la clase que el editor añada. Para uniformidad, sobrescribe o añade tu propia pseudo-capa que siempre cubra toda el área con el mismo color y transparencia.

/ Capa de overlay consistente /
.wp-block-cover.uniform-cover::after {
  content: 
  position: absolute
  inset: 0
  z-index: 1 / debajo del contenido (inner-container) que es z-index:2 /
  background: rgba(0, 0, 0, 0.35) / color y opacidad que desees /
  pointer-events: none
}

Añadir estilos también al editor (Gutenberg)

Para que lo que ves en el editor coincida con el front-end, añade un archivo de estilos para el editor o incluye las reglas anteriores en tu editor-style. Aquí un ejemplo de cómo hacerlo desde functions.php en tu tema.

/ functions.php: añadir estilos al editor de bloques /
function tema_mio_añadir_estilos_editor() {
    add_theme_support( editor-styles )
    // Asegúrate de que assets/css/editor-blocks.css exista y contenga las reglas anteriores
    add_editor_style( assets/css/editor-blocks.css )
}
add_action( after_setup_theme, tema_mio_añadir_estilos_editor )

Qué controlar y probar

Ejemplo completo (un CSS listo para pegar)

Este bloque CSS combina las técnicas anteriores, incluye fallback, overlay y soporte para imágenes internas o background. Aplicar solo a covers con la clase uniform-cover.

/ Hacer uniforme el cover agregando la clase uniform-cover /
.wp-block-cover.uniform-cover {
  position: relative
  width: 100%
  overflow: hidden
  / modern /
  aspect-ratio: 16 / 9
  max-height: 80vh
}

/ Fallback para browsers sin aspect-ratio /
.wp-block-cover.uniform-cover::before {
  content: 
  display: block
  padding-top: 56.25% / 16:9 /
}

/ Asegurar que el fondo/video ocupen todo el contenedor /
.wp-block-cover.uniform-cover .wp-block-cover__background,
.wp-block-cover.uniform-cover .wp-block-cover__video-background,
.wp-block-cover.uniform-cover img {
  position: absolute
  inset: 0
  width: 100%
  height: 100%
  background-size: cover !important
  background-position: center center !important
  object-fit: cover
  object-position: center center
}

/ Overlay consistente /
.wp-block-cover.uniform-cover::after {
  content: 
  position: absolute
  inset: 0
  z-index: 1
  background: rgba(0,0,0,0.35)
  pointer-events: none
}

/ Contenido centrado y por encima de la overlay /
.wp-block-cover.uniform-cover .wp-block-cover__inner-container {
  position: relative
  z-index: 2
  height: 100%
  display: flex
  align-items: center
  justify-content: center
  padding: 2rem
  box-sizing: border-box
}

/ Ajustes para móvil: conservar foco en la parte superior si la foto lo requiere /
@media (max-width: 768px) {
  .wp-block-cover.uniform-cover .wp-block-cover__background {
    background-position: center top !important
  }
  .wp-block-cover.uniform-cover img {
    object-position: center top
  }
}

Notas avanzadas y recomendaciones

  1. Agregar clases por bloque: usar la opción avanzada del bloque Cover para añadir la clase uniform-cover, así no rompes covers existentes.
  2. Lazy-loading: si el cover usa ltimggt activa lazy-loading con criterio (no siempre desirable en hero, porque podría retrasar la carga visible). Para héroes, cargar la imagen inmediatamente para evitar un FOUP (flash of unstyled/placeholder).
  3. Optimiza las imágenes: genera tamaños adecuados con srcset/imagen responsive o usalos como background pero con imágenes optimizadas (WebP, tamaños adaptativos).
  4. Videos: evita auto-play con sonido sumariza y evita cargas pesadas en móvil o prueba a servir poster images para pantallas pequeñas.
  5. Prueba en dispositivos reales: DevTools es útil, pero prueba en móviles reales para comprobar que la altura viewport y la barra de navegación del navegador móvil no cambien visibilidad de forma indeseada.

Conclusión práctica

Con una clase dedicada, una regla de relación de aspecto (aspect-ratio o padding-top), y forzando que la imagen o el vídeo usen object-fit/background-size: cover y object-position/background-position, lograrás que tu bloque Cover tenga la misma composición visual en todos los tamaños. No olvides añadir las mismas reglas al editor para que lo que diseñas en Gutenberg sea fiel a la vista pública.

Recuerda

Este conjunto de técnicas cubre la mayoría de los casos prácticos. Implementándolo paso a paso obtendrás covers coherentes, bonitos y accesibles en todo tipo de pantallas.



Leave a Reply

Your email address will not be published. Required fields are marked *