SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
06.04.2025

Transformando uma Imagem Retangular em um Quadrado com CSS

Resumo Rápido

Para transformar uma imagem retangular na forma de um quadrado perfeito, defina valores iguais para a altura e a largura do elemento img e aplique a propriedade object-fit: cover. Esse método permite que a imagem preencha todo o espaço do quadrado especificado, cortando qualquer excesso sem distorcer as proporções.

.square-crop {
  width: 100px; /* Garantir forma quadrada com dimensões iguais */
  height: 100px;
  object-fit: cover; /* Cortando enquanto mantém a proporção */
}
<img src="imagem.jpg" class="square-crop" alt="Quadrado perfeito">

Dessa forma, conseguimos uma imagem cortada em forma de quadrado, preservando a proporção original.

Técnicas Avançadas e Cenários Chave

Quadrado com Imagem de Fundo

Você pode criar um quadrado usando um div e definir uma imagem de fundo para ele, o que oferece mais opções de manipulação:

.square-background {
  width: 100px;
  height: 100px;
  background-image: url('imagem.jpg');
  background-size: cover; /* Cortando a imagem de fundo */
  background-position: center; /* Centralizando a imagem */
  background-repeat: no-repeat; /* Impedindo repetição da imagem */
}
<div class="square-background"></div>

Essa abordagem proporciona flexibilidade para trabalhar com o fundo, permitindo que você coloque conteúdo sobre ele sem afetar a imagem.

Quadrado Responsivo para Design Adaptativo

Torne seus quadrados responsivos para que se exibam corretamente em várias telas:

.responsive-square {
  width: 50vw; /* Defina uma porcentagem da largura da viewport */
  height: 0;
  padding-bottom: 50vw; /* Ajuste a altura de acordo com a largura */
  position: relative;
}

.responsive-square img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover; /* Manter a visibilidade e proporção do conteúdo */
}
<div class="responsive-square">
  <img src="imagem.jpg" alt="Quadrado responsivo">
</div>

Usando esse método, o contêiner manterá uma forma quadrada em todas as telas.

Design Inclusivo e Acessibilidade

Não se esqueça da importância do atributo alt, que fornece uma descrição da imagem:

<img src="imagem.jpg" class="square-crop" alt="Texto descritivo para imagem acessível">

Atributos alt preenchidos corretamente ajudam a tornar a imagem compreensível ao usar leitores de tela.

Visualização

Um exemplo da vida real pode ajudar a esclarecer ideias complexas. Suponha que estamos lidando com uma imagem retangular representando uma bandeja de comida 🍽️🥗🍔🍟:

Uma bandeja retangular com vários pratos (🍽️🥗🍔🍟): lanche, hambúrguer, batatas fritas.

Mas estamos interessados apenas no prato principal — o hambúrguer 🍔:

.burger {
    width: 100%;    /* Largura da bandeja 🍽️ */
    height: auto;   /* Preservação automática das proporções */
    object-fit: cover; /* Manter apenas o hambúrguer 🍔, cortando tudo o mais */
    object-position: center; /* Centralizar o hambúrguer */
}

Como resultado, teremos:

Antes: Uma bandeja retangular com vários pratos 🍽️🥗🍔🍟
Depois: Um hambúrguer quadrado 🍔

Depuração e Melhorias Futuras

Centralização Habilidosa com Flexbox

Flexbox é perfeito para centralização precisa e distribuição igualitária:

.square-flexbox {
  display: flex;
  justify-content: center; /* Centralizar o conteúdo */
  align-items: center;
  width: 100px;
  height: 100px;
  overflow: hidden; /* Ocultando excesso fora do contêiner */
}

.square-flexbox img {
  flex-shrink: 0;
  min-width: 100%;
  min-height: 100%;
  object-fit: cover; /* Manter proporcionalidade */
}

Consultas de Mídia para Design Responsivo

As consultas de mídia podem ajudar a adaptar seus quadrados a diferentes resoluções de tela:

@media (max-width: 768px) {
  .responsive-square {
    width: 90vw;
    padding-bottom: 90vw;
  }
}

Ajustando width e padding-bottom, é possível controlar a exibição em dispositivos de diferentes tamanhos.

Mantendo a Forma Quadrada com Pseudo-elementos

Você também pode tentar usar o pseudo-elemento ::after:

.aspect-ratio-box::after {
  content: '';
  display: block;
  padding-top: 100%; /* Garantir que a altura seja igual à largura do elemento pai */
}

Esse método ajuda a manter as proporções sem afetar a imagem.

Recursos Úteis

  1. object-fit - CSS: Folhas de Estilo em Cascata | MDN — Descrição detalhada da propriedade object-fit para redimensionar e cortar imagens.
  2. Caixas com Relação de Aspecto | CSS-Tricks — Criando elementos enquanto preserva proporções.
  3. Vários Fundos CSS — Gerenciando fundos usando CSS.
  4. Imagens Responsivas - Aprendizado em Desenvolvimento Web | MDN — Informações sobre como criar imagens adaptativas.
  5. Guia Completo de Flexbox | CSS-Tricks — Tudo sobre Flexbox para posicionamento de elementos.
  6. Guia Completo de CSS Grid | CSS-Tricks — Leitura obrigatória se você estiver trabalhando com CSS Grid para layout de designs.
  7. Relações de Aspecto em Design Web Responsivo — Guia para manter proporções de imagem em design web responsivo.

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!