About#
Use the ratio helper to manage the aspect ratios of external content like
<iframe>
s, <embed>
s, <video>
s, and <object>
s. These helpers also can be
used on any standard HTML child element (e.g., a <div>
or <img>
). Styles are
applied from the parent .ratio
class directly to the child.
Aspect ratios are declared in a Sass map and included in each class via CSS variable, which also allows custom aspect ratios.
{ { < callout info }}
Pro-Tip! You don't need frameborder="0"
on your <iframe>
s as we override
that for you in Reboot.
{ { < /callout }}
Example#
Wrap any embed, like an <iframe>
, in a parent element with .ratio
and an
aspect ratio class. The immediate child element is automatically sized thanks to
our universal selector .ratio > *
.
{ {< example >} }
{ {< /example >} }
Aspect ratios#
Aspect ratios can be customized with modifier classes. By default the following ratio classes are provided:
{ { < example class="bd-example-ratios" }}
{ {< /example >} }
Custom ratios#
Each .ratio-*
class includes a CSS custom property (or CSS variable) in the
selector. You can override this CSS variable to create custom aspect ratios on
the fly with some quick math on your part.
For example, to create a 2x1 aspect ratio, set --bs-aspect-ratio: 50%
on the
.ratio
.
{ { < example class="bd-example-ratios" }}
{ {< /example >} }
This CSS variable makes it easy to modify the aspect ratio across breakpoints. The following is 4x3 to start, but changes to a custom 2x1 at the medium breakpoint.
.ratio-4x3 {
@include media-breakpoint-up(md) {
--bs-aspect-ratio: 50%; // 2x1
}
}
{ { < example class="bd-example-ratios bd-example-ratios-breakpoint" }}
{ {< /example >} }
Sass maps#
Within _variables.scss
, you can change the aspect ratios you want to use.
Here's our default $ratio-aspect-ratios
map. Modify the map as you like and
recompile your Sass to put them to use.
{ { < scss-docs name="aspect-ratios" file="scss/_variables.scss" }}