---
-title: Aspect Ratio
-description: Use generated pseudo elements to make an element maintain the aspect ratio of your choosing. Perfect for responsively handling video or slideshow embeds based on the width of the parent.
+title: Aspect ratio
+description: Make elements maintain specific aspect ratios. Perfect for handling videos, slideshow embeds, and more based on the width of the parent.
toc: true
---
-Use the ratio utility to manage the aspect ratios of 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>`). Customize the available aspect ratios with the Sass variable or the utility API.
+## Reference
-<Callout>
-**Pro-Tip!** You don't need `frameborder="0"` on your `<iframe>`s as we override that for you in [Reboot]([[docsref:/content/reboot]]).
-</Callout>
+<BsTable>
+| Class | Styles |
+| --- | --- |
+| `.ratio-auto` | `aspect-ratio: auto;` |
+| `.ratio-1x1` | `aspect-ratio: 1 / 1;` |
+| `.ratio-4x3` | `aspect-ratio: 4 / 3;` |
+| `.ratio-16x9` | `aspect-ratio: 16 / 9;` |
+| `.ratio-21x9` | `aspect-ratio: 21 / 9;` |
+</BsTable>
## Example
-Add your ratio utility to the element you want to modify, like an `<iframe>`. Ratio utilities also pair well with any width utilities, as shown below.
+Add your ratio utility to the element you want to modify, like an `<iframe>`, `<video>`, or less semantic elements like `<div>`. Ratio utilities also pair well with any width utilities, as shown below. Customize the available aspect ratios with the Sass variable or the utility API.
-<Example code={`<iframe class="w-100 ratio-16x9" src="https://www.youtube.com/embed/zpOULjyy-n8?rel=0" title="YouTube video" allowfullscreen></iframe>`} />
+Heads up—you can omit `frameborder="0"` on your `<iframe>`s as that is overridden for you in [Reboot]([[docsref:/content/reboot]]).
-## Aspect ratios
+<Example code={`<iframe class="w-100 ratio-16x9" src="https://www.youtube.com/embed/zpOULjyy-n8?rel=0" title="YouTube video" allowfullscreen></iframe>`} />
-Aspect ratios can be customized with modifier classes. By default the following ratio classes are provided:
+Swap the `.ratio-*` class for a different aspect ratio.
<Example class="bd-example-ratios" code={`<div class="ratio-auto">
<div>Auto</div>
</div>
<div class="w-25 ratio-1x1">
- <div>1x1</div>
+ <div>1×1</div>
</div>
<div class="w-50 ratio-4x3">
- <div>4x3</div>
+ <div>4×3</div>
</div>
<div class="w-75 ratio-16x9">
- <div>16x9</div>
+ <div>16×9</div>
</div>
<div class="w-100 ratio-21x9">
- <div>21x9</div>
+ <div>21×9</div>
</div>`} />
-## Custom ratios
-
-{/* mdo-do: do we bring these back?
-
-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.
+## How it works
-For example, to create a 2x1 aspect ratio, set `--bs-aspect-ratio: 50%` on the `.ratio`.
+Aspect ratios are a combination pairing of attribute and class utilities. The attribute utility sets a CSS variable to all `.ratio-` classes, while the specific ratio utility class sets the value for that variable.
-<Example class="bd-example-ratios" code={`<div class="ratio" style="--bs-aspect-ratio: 50%;">
- <div>2x1</div>
- </div>`} />
-
-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.
+```css
+[class*="ratio-"] {
+ aspect-ratio: var(--bs-ratio);
+}
-```scss
-.ratio-4x3 {
- @include media-breakpoint-up(md) {
- --bs-aspect-ratio: 50%; // 2x1
- }
+.ratio-1x1 {
+ --bs-ratio: 1 / 1;
}
```
-<Example class="bd-example-ratios bd-example-ratios-breakpoint" code={`<div class="ratio ratio-4x3">
- <div>4x3, then 2x1</div>
+## Custom ratios
+
+Because of the combination of attribute and class utilities, you can use custom ratios by setting the CSS variable to the desired ratio.
+
+<Example class="bd-example-ratios" code={`<div class="ratio-custom" style="--bs-ratio: 4 / 1;">
+ <div>4×1</div>
</div>`} />
-*/}
## Sass map