Introducción
En el editor de bloques de WordPress (Gutenberg), muchas veces se quiere que una imagen dentro de un bloque de grupo ocupe todo el ancho de la ventana (ancho completo), aunque el tema limite el ancho del contenido. Este artículo explica en detalle por qué ocurre ese comportamiento y ofrece varias soluciones CSS (y pequeñas indicaciones de PHP) para forzar imágenes a ancho completo dentro de bloques de grupo, cuidando compatibilidad y evitando efectos secundarios como scroll horizontal.
Conceptos clave
- Alignfull / alignwide: Gutenberg añade clases como alignfull o alignwide para indicarle al tema que el bloque debe ocupar todo el ancho posible. El tema debe declarar soporte para align-wide para que estas clases surtan efecto correctamente.
- Contenedor del tema: Muchos temas envuelven el contenido en un contenedor con max-width y padding. Eso impide que un elemento hijo alcance el ancho de la ventana.
- Breakout techniques: Para conseguir ancho viewport real se usan técnicas CSS que sacan el elemento del flujo visual del contenedor usando ancho de viewport y márgenes negativos o desplazamientos.
Requisitos previos
- Si usas alignwide/alignfull de forma nativa, asegúrate de que tu tema soporta align-wide. En theme.json o functions.php debe declararse add_theme_support(align-wide).
- Respaldar CSS personalizado antes de aplicar cambios si trabajas en producción.
Cómo añadir soporte a align-wide (opcional)
Si tu tema no soporta estas alineaciones y quieres habilitarlas, añade esto en functions.php del tema (o mejor: child theme):
// En functions.php del tema hijo
function mi_tema_soporte_align_wide() {
add_theme_support( align-wide )
}
add_action( after_setup_theme, mi_tema_soporte_align_wide )
Métodos CSS para forzar ancho completo dentro de un bloque de grupo
Se muestran varias alternativas con sus pros y contras. Elegir la más adecuada depende del tema, del diseño del grupo (padding, ancho máximo) y del comportamiento deseado en móviles.
Método A — Usar la clase alignfull en el bloque de grupo o en el bloque de imagen
Si el tema respeta la clase alignfull, lo más sencillo es aplicar esa clase al bloque de grupo o al bloque de imagen. Si el tema no lo soporta, la clase por sí sola no bastará y habrá que forzar con CSS como en los siguientes métodos.
Método B — Técnica viewport con margen negativo (recomendado por compatibilidad)
Esta técnica coloca el elemento con width: 100vw y centra usando margin-left: calc(50% – 50vw). Evita la afectación del max-width del contenedor. Ejemplo que fuerza la imagen dentro de un bloque de grupo a ocupar todo el viewport:
/ Forzar imagen full width dentro de un block group /
.wp-block-group .wp-block-image img {
display: block
width: 100vw / ancho real del viewport /
max-width: 100vw / evitar que sea mayor /
height: auto
margin-left: calc(50% - 50vw) / centrarla respecto al viewport /
margin-right: calc(50% - 50vw)
box-sizing: border-box
}
Ventajas: simple, funciona aún si el contenedor tiene max-width. Inconvenientes: si el grupo tiene padding, la imagen romperá dicho padding. Ver sección de ajuste de padding a continuación.
Método C — Contrarrestar padding interno del bloque de grupo (cuando hay gutters)
Si el bloque de grupo tiene padding interior que hay que anular para que la imagen llegue hasta los bordes del viewport, es necesario compensar ese padding. Dos aproximaciones:
- Anular padding del bloque contenedor solo para resoluciones grandes.
- Aplicar estilos a la imagen que compensen el padding (usar calc() con variables o valores fijos).
Ejemplo que compensa 24px de padding horizontal del grupo:
/ Supongamos que .wp-block-group tiene padding: 24px /
.wp-block-group.custom-no-padding { padding-left: 0 padding-right: 0 }
.wp-block-group .wp-block-image img {
width: 100vw
margin-left: calc(50% - 50vw)
margin-right: calc(50% - 50vw)
padding-left: 0
padding-right: 0
display: block
}
Si no puedes modificar el padding del grupo, aplica margin negativo igual al padding para neutralizarlo.
Método D — Solo hacer breakout cuando el grupo tiene clase alignfull
Si quieres que el efecto se aplique solo cuando se usa la alineación full del bloque de grupo:
/ Solo cuando el bloque de grupo tiene alignfull /
.wp-block-group.alignfull .wp-block-image img,
.wp-block-group.alignfull > .wp-block-image img {
width: 100vw
margin-left: calc(50% - 50vw)
margin-right: calc(50% - 50vw)
box-sizing: border-box
}
Método E — Evitar scroll horizontal no deseado
La técnica con 100vw puede provocar scroll horizontal si no se trata correctamente bordes y box-sizing. Recomendaciones:
- Aplicar box-sizing: border-box al elemento.
- Evitar añadir bordes o sombras que excedan el ancho si se usan, asegurarse de clip o overflow-x oculto.
- Si aparece scroll, revisar si otros elementos usan 100vw o márgenes negativos y corregir.
Si es imprescindible, un parche global (usar con precaución):
/ Parche global para evitar scroll horizontal causado por breakouts /
html, body {
overflow-x: hidden / Cuidado: puede ocultar contenido legítimo /
}
Método F — Forzar la imagen a ocupar el ancho del contenedor si el tema soporta alignfull pero no aplica a img
Algunos temas solo asignan estilos a bloques, no a la etiqueta img interna. Este CSS forzará que la imagen ocupe el ancho del bloque:
.wp-block-image.alignfull img,
.wp-block-group .wp-block-image.alignfull img {
width: 100%
height: auto
display: block
}
Ejemplo completo y responsivo
Un ejemplo algo más completo que añade soporte para object-fit cuando la imagen es utilizada como bloque con altura fija y evita overflow en pantallas pequeñas:
/ Imagen breakout para grupo con control responsive /
.wp-block-group.alignfull .wp-block-image img {
display: block
width: 100vw
max-width: 100vw
margin-left: calc(50% - 50vw)
margin-right: calc(50% - 50vw)
box-sizing: border-box
height: auto
/ Si se quiere que la imagen cubra una altura fija: /
/ object-fit: cover width: 100vw height: 60vh /
}
/ Ajustes para móviles: limitar width al 100% del contenedor si prefieres /
@media (max-width: 600px) {
.wp-block-group.alignfull .wp-block-image img {
width: 100%
margin-left: 0
margin-right: 0
max-width: 100%
}
}
Dónde colocar este CSS
- Appearance → Customize → Additional CSS: Rápido y seguro.
- style.css del tema hijo: Recomendado si gestionas un child theme y versionas cambios.
- Usar un plugin de CSS personalizado (p. ej. Simple Custom CSS) si no quieres tocar archivos de tema.
Opcional: Añadir CSS mediante enqueue en functions.php
Si prefieres incluir un archivo CSS personalizado desde functions.php del child theme:
function mi_tema_enqueue_custom_css() {
wp_enqueue_style( mi-css-custom, get_stylesheet_directory_uri() . /custom-breakout.css, array(), 1.0 )
}
add_action( wp_enqueue_scripts, mi_tema_enqueue_custom_css )
Buenas prácticas y consideraciones
- Evitar afectar otras plantillas: usar selectores específicos (.wp-block-group .wp-block-image img o .mi-clase-personalizada) para no romper diseños del theme en otras páginas.
- Accesibilidad: no ocultes el atributo alt y mantén la semántica correcta. No sustituyas
por background-image si necesitas alt automáticas.
- Performance: optimiza imágenes (servir tamaños adecuados, srcset) para evitar descargas innecesarias al forzar full width.
- Pruebas en navegadores y móviles: testea en varios tamaños y navegadores para evitar scroll horizontal o recortes inesperados.
Solución de problemas comunes
- La imagen no se extiende: verifica si el selector CSS no está siendo sobrescrito por reglas más específicas del tema (usa DevTools para inspeccionar). Si es necesario, incrementar especificidad (p. ej. body .wp-block-group … ) o usar !important con prudencia.
- Aparece scroll horizontal: revisa elementos con 100vw, verifica box-sizing y sombras/borders. Como último recurso considera overflow-x: hidden en body.
- Imagen recortada o estirada: usar height: auto y object-fit según el caso. Para cubrir áreas, usar object-fit: cover en imágenes con tamaño fijo.
- Gutters y paddings: compensa padding del bloque o ajusta la clase del grupo para remover padding en ese caso concreto.
Checklist rápido antes de publicar
- ¿El tema soporta align-wide? Si no, añadir soporte si se desea usar alignfull nativo.
- ¿El selector CSS es lo suficientemente específico y no rompe otras secciones?
- ¿Se ha probado en móvil y escritorio para evitar scroll horizontal?
- ¿Las imágenes mantienen attributo alt y usan srcset/size para optimización?
Conclusión
Forzar imágenes a ancho completo dentro de bloques de grupo es totalmente viable con CSS. La técnica más robusta usa width: 100vw combinado con margin-left: calc(50% – 50vw) para sacar la imagen del contenedor limitado por el tema. Adaptando la regla para compensar padding y aplicándola solo cuando sea necesario (p. ej. .alignfull) se consigue un resultado seguro y estético sin necesidad de modificar la estructura HTML del editor.
Leave a Reply