CSS aspect-ratio e object-fit, com seletor de ponto focal

Guia de CSS aspect-ratio e object-fit

CSS aspect-ratio e object-fit: demos ao vivo e Tailwind | We.Inc

Trave caixas em uma proporção com aspect-ratio e depois encaixe fotos dentro delas com object-fit cover, contain, fill, none ou scale-down. Clique para definir um ponto focal com object-position.

Duas propriedades resolvem a maioria dos problemas de tamanho de imagem. aspect-ratio: 16 / 9 faz uma caixa manter esse formato em qualquer largura, substituindo o velho truque do padding-top. object-fit decide como um img ou video preenche essa caixa: cover corta, contain deixa faixas vazias, fill estica. object-position escolhe qual parte continua visível quando o cover corta.

Referência rápida

Abaixo, uma imagem de teste fica em uma caixa que você pode redimensionar. Alterne entre os cinco valores de object-fit, clique na imagem para mover o ponto focal e copie o CSS ou as classes do Tailwind. Mais abaixo: o truque do padding ao lado do aspect-ratio, embeds de vídeo responsivos e grades de cards com miniaturas uniformes.

Perguntas frequentes

Qual é a diferença entre aspect-ratio e object-fit?

aspect-ratio dá formato à própria caixa, em qualquer elemento. object-fit só se aplica a conteúdo substituído como img, video e canvas, e decide como esse conteúdo é desenhado dentro da caixa. Normalmente você usa os dois: aspect-ratio na imagem para fixar o formato e object-fit: cover para que a imagem a preencha.

Por que o object-fit não faz nada?

A caixa da imagem tem a mesma proporção da imagem, então não há nada para cortar ou esticar. O object-fit só mostra diferença quando a caixa tem outro formato, por exemplo uma altura fixa com width: 100%, ou um aspect-ratio diferente do arquivo.

Ainda preciso do truque do padding-top?

Não nos navegadores atuais. aspect-ratio funciona no Chrome, Edge, Firefox e Safari desde 2021. Mantenha o truque só se precisar dar suporte a navegadores mais antigos, e confira o caniuse para o seu público.

O object-fit funciona em imagens de fundo?

Não. Para fundos CSS, os equivalentes são background-size: cover ou contain, e background-position para o ponto focal. object-fit é para elementos img e video de verdade, que são melhores para imagens de conteúdo porque levam texto alt e suportam srcset.

Dá para usar aspect-ratio em uma div?

Sim. Qualquer elemento aceita. Uma div com width: 100% e aspect-ratio: 1 vira um quadrado que cresce junto com a coluna, algo útil para placeholders de mapa, avatares e skeleton loaders.

Como o navegador resolve o aspect-ratio

Escolhendo um ponto focal

aspect-ratio ao lado do truque do padding

Antes do aspect-ratio, uma caixa ganhava formato com padding-top em porcentagem, porque porcentagens de padding vertical são medidas em relação à largura. Funciona, mas o conteúdo precisa ser posicionado de forma absoluta dentro dela. As duas caixas abaixo são 16:9.

Antigo e novo, mesmo resultado

56.25% é 9 dividido por 16. A versão moderna precisa de uma linha só e deixa o conteúdo fluir normalmente.

Os cinco valores de object-fit na mesma foto

A imagem é 3:2 e todas as caixas são quadradas, então cada valor tem uma diferença de proporção para resolver e as diferenças ficam bem claras.

Valores de object-fit

fill, contain, cover, none, scale-down

A mesma imagem de 300 por 200 em cinco quadrados de 110 pixels. Observe o ponto vermelho: ele é o assunto que o cover não pode perder.

Vídeo e embeds responsivos

Um iframe no estilo YouTube que mantém 16:9

Dê ao iframe largura de 100% e um aspect-ratio. Sem div envolvendo e sem posicionamento absoluto.

Grades de cards com miniaturas uniformes

Todas as miniaturas com o mesmo formato

Os uploads chegam em todos os formatos. aspect-ratio com object-fit: cover deixa a grade organizada sem editar um único arquivo.

Classes do Tailwind para proporção e encaixe

Utilitários do Tailwind v4 (consulte a documentação da v3 se estiver em uma versão anterior)

Playground de proporção, encaixe e ponto focal

Imagem de origem (3:2). Clique nela, ou dê foco e use as setas do teclado, para definir o ponto focal.

Definir ponto focal, agora {pos}

Paisagem de teste com um ponto vermelho como assunto

Voltar ao centro

Resultado em uma caixa {ratio} com object-fit: {fit}

Proporção da caixa

O ponto focal importa mais com cover e none. Com contain ou scale-down, ele decide onde ficam as faixas vazias.

Copiar CSS

Copiar classes

Precisa do tamanho exato em pixels para uma proporção? Use a

calculadora de proporção

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site