Tutorial WordPress: Estilizar el bloque de galería de Gutenberg con gap y bordes

·

·

Introducción

En este tutorial aprenderás, paso a paso y con ejemplos concretos, a estilizar el bloque de galería de Gutenberg para añadir separación (gap) entre las imágenes y bordes personalizados. Cubriremos la inspección del HTML que genera el bloque, distintas técnicas CSS (Grid, fallback con márgenes), cómo aplicar bordes y radios, cómo mantener el recorte (cropping) con object-fit y cómo aplicar estilos tanto en el frontend como en el editor. También incluimos ejemplos de theme.json y de cómo cargar estilos en el editor.

1. Inspeccionar el HTML generado por Gutenberg

Antes de escribir CSS conviene ver la estructura que utiliza Gutenberg. Dependiendo de la versión y del tema, la galería puede renderizarse como una lista o como un grid de figuras. Un ejemplo típico:

ltdiv class=wp-block-gallery columns-3 is-croppedgt
  ltfigure class=blocks-gallery-itemgt
    ltimg src=imagen1.jpg alt=... /gt
  lt/figuregt
  ltfigure class=blocks-gallery-itemgt
    ltimg src=imagen2.jpg alt=... /gt
  lt/figuregt
  ltfigure class=blocks-gallery-itemgt
    ltimg src=imagen3.jpg alt=... /gt
  lt/figuregt
lt/divgt

En otras variantes la galería usa una lista con la clase blocks-gallery-grid y elementos li o figure. Por eso conviene usar selectores que cubran ambas posibilidades: .wp-block-gallery, .blocks-gallery-grid, .blocks-gallery-item.

2. Usar CSS Grid y la propiedad gap (recomendado)

La manera más limpia de controlar el espacio entre elementos es convertir el contenedor en Grid y usar gap. Esto respeta filas y columnas y es muy sencillo.

/ Convertir la galería a grid y controlar gap /
.wp-block-gallery .blocks-gallery-grid,
.wp-block-gallery .blocks-gallery {
  display: grid
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)) / columnas fluidas /
  gap: 16px / espacio entre imágenes /
  align-items: stretch
}

/ Ajustes para cada figura / item /
.wp-block-gallery .blocks-gallery-item,
.wp-block-gallery .blocks-gallery-item figure {
  margin: 0 / eliminar márgenes por defecto /
}

/ Imágenes al 100% y recorte correcto /
.wp-block-gallery .blocks-gallery-item img {
  display: block
  width: 100%
  height: 100%
  object-fit: cover / mantiene cropping uniforme /
  border-radius: 6px / radio opcional /
  box-sizing: border-box
}

Explicación breve

3. Añadir bordes y estilos visuales

Puedes aplicar bordes directamente sobre las imágenes o sobre el figure para obtener distintos efectos.

/ Borde simple alrededor de cada imagen /
.wp-block-gallery .blocks-gallery-item img {
  border: 3px solid #ffffff / borde blanco /
  box-shadow: 0 2px 8px rgba(0,0,0,0.12)
}

/ Borde externo más visible usando pseudo-elemento en figure /
.wp-block-gallery .blocks-gallery-item {
  position: relative
  overflow: hidden
  border-radius: 8px
}
.wp-block-gallery .blocks-gallery-item::after {
  content: 
  position: absolute
  inset: 6px / separa el borde del contenido, crea un marco interior /
  border: 2px solid rgba(0,0,0,0.06)
  pointer-events: none
  border-radius: 6px
}

/ Borde interior via box-shadow (inset) /
.wp-block-gallery .blocks-gallery-item img {
  box-shadow: inset 0 0 0 3px rgba(255,255,255,0.9)
}

4. Compatibilidad y fallback para navegadores antiguos

Si necesitas que la galería funcione en navegadores sin soporte para gap en Grid (muy raro hoy, pero puede darse), puedes usar márgenes en los items y compensar con un margen negativo en el contenedor.

/ Fallback usando márgenes /
.wp-block-gallery.fallback-gap {
  display: block / o flex según prefieras /
  margin: 0 calc(-8px) / compensa el margen lateral de los items /
}
.wp-block-gallery.fallback-gap .blocks-gallery-item {
  display: inline-block
  vertical-align: top
  margin: 8px
  width: calc(33.333% - 16px) / ejemplo para 3 columnas /
}

Usa media queries para ajustar el ancho en dispositivos pequeños.

5. Manejar columnas y clases predeterminadas

Gutenberg añade clases tipo columns-2, columns-3, etc. Puedes combinarlas para controlar el comportamiento en distintos tamaños:

/ Variantes según número de columnas /
.wp-block-gallery.columns-2 { grid-template-columns: repeat(2, 1fr) }
.wp-block-gallery.columns-3 { grid-template-columns: repeat(3, 1fr) }
.wp-block-gallery.columns-4 { grid-template-columns: repeat(4, 1fr) }

/ Mejor con responsive: /
@media (max-width: 900px) {
  .wp-block-gallery.columns-4 { grid-template-columns: repeat(3, 1fr) }
}
@media (max-width: 600px) {
  .wp-block-gallery.columns-4,
  .wp-block-gallery.columns-3,
  .wp-block-gallery.columns-2 { grid-template-columns: repeat(2, 1fr) }
}

6. Aplicar estilos en el editor (Editor Styles)

Para que en el editor (Gutenberg) también se reflejen los gaps y bordes, añade un archivo de estilos para el editor o registra esos estilos desde tu tema. Ejemplo de código en functions.php para encolar editor-style:

/ Enqueue editor styles desde functions.php /
function mi_tema_editor_styles() {
  add_theme_support(editor-styles)
  add_editor_style(assets/css/editor-style.css) // archivo donde pones las mismas reglas CSS
}
add_action(after_setup_theme, mi_tema_editor_styles)

Dentro de assets/css/editor-style.css puedes incluir las reglas CSS mostradas arriba para que el editor visualice el gap y los bordes como en el frontend.

7. Usar theme.json para definir gap y estilos de bloque

Con WordPress moderno puedes definir estilos y espacios por defecto desde theme.json. Ejemplo de cómo configurar blockGap para el bloque de galería (y valores globales):

{
  version: 2,
  settings: {
    spacing: {
      blockGap: 16px
    }
  },
  styles: {
    blocks: {
      core/gallery: {
        spacing: {
          blockGap: 18px
        }
      }
    }
  }
}

Eso define un gap por defecto en el editor y también puede afectar al frontend si tu tema respeta las variables de bloque. Además puedes definir paletas de color y bordes en theme.json para un control más profundo.

8. Interacciones: hover, enfocabilidad y accesibilidad

Añade efectos en hover y estados focus para mejorar la experiencia y accesibilidad:

.wp-block-gallery .blocks-gallery-item a,
.wp-block-gallery .blocks-gallery-item img {
  transition: transform 0.25s ease, box-shadow 0.25s ease
}

.wp-block-gallery .blocks-gallery-item:hover img {
  transform: scale(1.03)
  box-shadow: 0 8px 20px rgba(0,0,0,0.12)
}

/ Indicador visible para teclado /
.wp-block-gallery .blocks-gallery-item:focus-within {
  outline: 3px solid #3b82f6 / color visible para accesibilidad /
  outline-offset: 3px
}

9. Consejos prácticos y buenas prácticas

10. Ejemplo completo (CSS final recomendado)

Un bloque de CSS final que combina gap, bordes, recorte y responsividad:

/ Galería base: grid, gap y responsive /
.wp-block-gallery .blocks-gallery-grid,
.wp-block-gallery .blocks-gallery {
  display: grid
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr))
  gap: 16px
  align-items: stretch
  margin: 0
  padding: 0
}

/ Normalizar items /
.wp-block-gallery .blocks-gallery-item {
  margin: 0
  overflow: hidden
  border-radius: 8px
  background: #f7f7f7 / opción de fondo si quieres separación visual /
}

/ Imagen: ocupa el contenedor y se recorta /
.wp-block-gallery .blocks-gallery-item img {
  display: block
  width: 100%
  height: 100%
  object-fit: cover
  border-radius: 6px
  border: 3px solid #ffffff / borde limpio /
  transition: transform .25s ease, box-shadow .25s ease
}

/ Hover y foco /
.wp-block-gallery .blocks-gallery-item:hover img,
.wp-block-gallery .blocks-gallery-item:focus-within img {
  transform: scale(1.02)
  box-shadow: 0 10px 30px rgba(0,0,0,0.12)
}

/ Responsive: columnas más pequeñas en móviles /
@media (max-width: 600px) {
  .wp-block-gallery .blocks-gallery-grid,
  .wp-block-gallery .blocks-gallery {
    gap: 10px
    grid-template-columns: repeat(2, 1fr)
  }
}

Conclusión

Aplicar gap y bordes al bloque de galería de Gutenberg es sencillo y flexible usando CSS Grid, object-fit y algunas reglas complementarias para el editor y la responsividad. Usar theme.json y las editor-styles te permite mantener coherencia visual entre editor y frontend. Con los ejemplos aquí incluidos puedes adaptar el aspecto a tu diseño: cambiar colores, radios, sombras y tamaños de gap de manera segura y accesible.



Leave a Reply

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