Skip to main content Skip to docs navigation

Proporciones de aspecto (Ratios)

Utiliza pseudoelementos generados para que un elemento mantenga la proporción de aspecto que elijas. Perfecto para manejar de forma responsiva incrustaciones de vídeo o diapositivas basadas en el ancho del elemento padre.

Acerca de (About)

Utiliza el ayudante de proporción para administrar las proporciones de aspecto del contenido externo como <iframe>s, <embed>s, <video>s y <object>s. Estos ayudantes también se pueden usar en cualquier elemento secundario HTML estándar (por ejemplo, un <div> o <img>). Los estilos se aplican desde la clase padre .ratio directamente al hijo.

Las proporciones de aspecto se declaran en un mapa Sass y se incluyen en cada clase a través de una variable CSS, lo que también permite proporciones de aspecto personalizadas.

¡Consejo profesional! No necesitas frameborder="0" en tus <iframe>s ya que lo sobrescribimos por ti en Reboot (Reinicio).

Ejemplo

Envuelve cualquier incrustación, como un <iframe>, en un elemento padre con .ratio y una clase de proporción de aspecto. El elemento hijo inmediato cambia de tamaño automáticamente gracias a nuestro selector universal .ratio > *.

html
<div class="ratio ratio-16x9">
  <iframe src="https://www.youtube.com/embed/zpOULjyy-n8?rel=0" title="Vídeo de YouTube" allowfullscreen></iframe>
</div>

Proporciones de aspecto

Las proporciones de aspecto se pueden personalizar con clases modificadoras. Por defecto se proporcionan las siguientes clases de proporción:

1x1
4x3
16x9
21x9
html
<div class="ratio ratio-1x1">
  <div>1x1</div>
</div>
<div class="ratio ratio-4x3">
  <div>4x3</div>
</div>
<div class="ratio ratio-16x9">
  <div>16x9</div>
</div>
<div class="ratio ratio-21x9">
  <div>21x9</div>
</div>

Proporciones personalizadas

Cada clase .ratio-* incluye una propiedad CSS personalizada (o variable CSS) en el selector. Puedes sobrescribir esta variable CSS para crear proporciones de aspecto personalizadas sobre la marcha con un poco de matemáticas rápidas por tu parte.

Por ejemplo, para crear una proporción de aspecto de 2x1, establece --bs-aspect-ratio: 50% en el .ratio.

2x1
html
<div class="ratio" style="--bs-aspect-ratio: 50%;">
  <div>2x1</div>
</div>

Esta variable CSS facilita la modificación de la proporción de aspecto a lo largo de los puntos de interrupción (breakpoints). El siguiente ejemplo empieza en 4x3, pero cambia a un 2x1 personalizado en el punto de interrupción mediano (md).

.ratio-4x3 {
  @include media-breakpoint-up(md) {
    --bs-aspect-ratio: 50%; // 2x1
  }
}
4x3, luego 2x1
html
<div class="ratio ratio-4x3">
  <div>4x3, luego 2x1</div>
</div>

Mapas Sass

Dentro de _variables.scss, puedes cambiar las proporciones de aspecto que deseas usar. Aquí está nuestro mapa predeterminado $ratio-aspect-ratios. Modifica el mapa como desees y recompila tu Sass para ponerlos en uso.

$aspect-ratios: (
  "1x1": 100%,
  "4x3": calc(3 / 4 * 100%),
  "16x9": calc(9 / 16 * 100%),
  "21x9": calc(9 / 21 * 100%)
);