Tutorial WordPress: Hacer que los iframes no excedan el contenedor con CSS práctico

·

·

Introducción

En WordPress es muy habitual incrustar contenido externo con iframes: vídeos de YouTube, presentaciones, mapas, reproductores, widgets, etc. Un problema frecuente es que esos iframes se desbordan del contenedor del tema —especialmente en dispositivos móviles o cuando el tema utiliza columnas y anchuras fijas—. Este artículo explica, con todo lujo de detalles, técnicas CSS prácticas y específicas para WordPress que garantizan que los iframes nunca excedan el contenedor, manteniendo además la relación de aspecto y la accesibilidad.

Por qué ocurre el desbordamiento

Principios básicos a aplicar

Métodos prácticos (resumen rápido)

  1. Wrapper con técnica de “padding-bottom” (intrinsic ratio). Funciona en todos los navegadores y es el método más compatible.
  2. Uso de la propiedad CSS aspect-ratio (más simple y limpio, pero requiere navegadores modernos).
  3. Reglas globales que establezcan max-width:100% y display:block sobre iframes dentro del contenido del post.
  4. Si es necesario, añadir JavaScript o un plugin (por ejemplo FitVids.js) para embebidos complejos.

Implementación paso a paso

A continuación los ejemplos de código y explicación de cada método. Coloca las reglas CSS en el área de Personalizar → CSS adicional o en tu archivo CSS del tema hijo. Si prefieres, también puedes encolarlas desde functions.php (ver ejemplo PHP más abajo).

Método 1 — Wrapper con padding-bottom (mejor compatibilidad)

Crear un contenedor que fije la relación de aspecto con padding-bottom. Inserta el iframe dentro de ese contenedor. Esta técnica utiliza que el padding-bottom en porcentaje se calcula respecto al ancho del contenedor, lo que permite mantener la proporción.

/ Contenedor que mantiene aspecto 16:9 /
.embed-responsive{
  position: relative
  width: 100%
  height: 0
  padding-bottom: 56.25% / 16:9 = 9/16 = 56.25% /
  overflow: hidden
}

/ Iframe que ocupa todo el contenedor /
.embed-responsive iframe,
.embed-responsive object,
.embed-responsive embed{
  position: absolute
  top: 0
  left: 0
  width: 100%
  height: 100%
  border: 0
  display: block
}

Para otras relaciones de aspecto ajusta el padding-bottom: por ejemplo 75% para 4:3 (3/4 = 75%).

Método 2 — Usar aspect-ratio (soporte moderno)

Si no necesitas compatibilidad con navegadores muy antiguos, la propiedad aspect-ratio simplifica mucho el CSS:

/ Más sencillo: el iframe establece su propia relación de aspecto /
.responsive-iframe{
  width: 100%
  aspect-ratio: 16 / 9
  height: auto / Algunos navegadores usan aspect-ratio para calcular la altura /
  border: 0
  display: block
}

Incluye, si quieres, un fallback a la técnica de padding-bottom para navegadores que no soporten aspect-ratio.

Método 3 — Reglas globales para contenido WordPress

Muchos temas funcionan si aplicas reglas globales a los iframes dentro del contenido. Esto evita tener que modificar cada embed manualmente.

/ Regla global: evita que iframes se salgan del ancho del contenido /
.entry-content iframe,
.wp-block-embed iframe,
.wp-block-embed__wrapper iframe,
iframe {
  max-width: 100%
  width: 100%
  height: auto / fallback: no mantiene relación de aspecto, por eso conviene combinarlo con los otros métodos /
  border: 0
  display: block
}

Nota: height:auto no mantiene la relación de aspecto en iframes en todos los casos, por eso se combina con wrapper/aspect-ratio.

Cómo añadir estas reglas en WordPress

Ejemplo: encolar un CSS desde functions.php

function tema_responsive_iframes_css() {
  wp_enqueue_style( tema-responsive-iframes, get_stylesheet_directory_uri() . /css/responsive-iframes.css, array(), 1.0 )
}
add_action( wp_enqueue_scripts, tema_responsive_iframes_css )

Ejemplo: añadir CSS inline desde functions.php

function tema_inline_iframe_css() {
  css = 
  .embed-responsive{position:relativewidth:100%height:0padding-bottom:56.25%overflow:hidden}
  .embed-responsive iframe{position:absolutetop:0left:0width:100%height:100%border:0}
  
  wp_add_inline_style( twentyseventeen-style, css )
}
add_action( wp_enqueue_scripts, tema_inline_iframe_css )

En wp_add_inline_style el primer parámetro debe ser el handle del stylesheet ya encolado en tu tema ajusta según tu tema.

Consideraciones avanzadas

Compatibilidad y pruebas

Resumen final

La manera más robusta y compatible de evitar que los iframes excedan su contenedor en WordPress es usar un wrapper con ratio (padding-bottom) o, cuando sea posible, aspect-ratio. Complementa con reglas globales (max-width:100%, display:block) aplicadas a los selectores de contenido (.entry-content, .wp-block-embed, etc.). Añade las reglas vía CSS adicional, archivo del tema hijo o encolado desde functions.php. Con estas prácticas los iframes quedarán siempre contenidos, responsivos y bien integrados en el diseño del sitio.

Enlaces útiles: WordPress Developer Resources



Leave a Reply

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