A caixa já nasce do tamanho certo — sem pulo de layout enquanto a imagem carrega.
O que é
Classes de aspect-ratio prontas, bom pra Core Web Vitals (CLS) — a caixa reserva o espaço certo antes da imagem chegar.
Como funciona
Cada classe só seta aspect-ratio no contêiner — o navegador já reserva a altura calculada antes da imagem carregar, então não há salto de layout (Cumulative Layout Shift). A imagem/vídeo lá dentro geralmente usa media-fill (ou of-cov) pra preencher essa caixa sem distorcer.
Exemplos
As proporções horizontais Ao vivo
ar-sq — 1:1
ar-4-3
ar-3-2
ar-16-9
<div class="ar-16-9">
<img src="/foto.jpg" class="media-fill" alt="">
</div>
<!-- .media-fill faz a imagem preencher a caixa sem distorcer -->
SEM proporção: a caixa tem altura 0 até a imagem chegar
…e o resto da página pula quando ela chega
<!-- reserva o espaço ANTES da imagem existir -->
<div class="ar-16-9">
<img src="/foto.jpg" class="media-fill" alt="">
</div>
<!-- isso evita o Cumulative Layout Shift (CLS), que o Google mede.
Vale também pra vídeo e iframe: -->
<div class="ar-16-9">
<iframe src="https://www.youtube.com/embed/..." style="width:100%;height:100%;border:0"></iframe>
</div>
Escolhendo o que fica visível no corte Ao vivo
padrão — centro
obp-t — topo
obp-b — base
<!-- quando a proporção corta a foto, o Object-fit escolhe o pedaço -->
<div class="ar-sq">
<img src="/retrato.jpg" class="of-cov obp-t" alt="">
</div>
<!-- útil pra foto de pessoa: obp-t mantém o rosto no quadro -->
Atributos
Nenhum.
Variantes
ar-sq
1:1 — quadrado (avatar, post de feed)
ar-16-9
vídeo widescreen
ar-4-3
foto clássica
ar-3-2
foto de câmera
ar-2-1
banner largo
ar-21-9
ultrawide, cinema
ar-3-4
retrato (vertical)
ar-9-16
story / vídeo de celular
Eventos
Nenhum.
API (JavaScript)
Nenhum.
Requisitos
Nenhuma.
Limitações — o que ele não faz
A proporção manda na caixa. Se a imagem tem outra proporção, ela é cortada (com of-cov) ou sobra espaço (com of-con) — quem decide o recorte é o componente Object-fit.