SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
22.11.2024

CSS: Como Criar um Div com Altura Dinâmica Igual à Largura?

Resposta Rápida

Você quer que a altura de um elemento se ajuste automaticamente à sua largura variável? A solução é simples: use a propriedade padding-top com um valor especificado em porcentagens. Assim, a altura do elemento dependerá de sua largura:

.quadrado {
  width: 50%; /* Ajuste este parâmetro conforme suas necessidades */
  height: 0;
  padding-top: 50%; /* Proporções quadradas excelentes */
}

Aplique esses estilos no HTML da seguinte forma:

<div class="quadrado">
  <!-- O conteúdo se adapta automaticamente à largura, voilà! -->
</div>

Assim, o elemento .quadrado manterá proporções quadradas em qualquer valor de largura, mantendo rigorosamente uma relação de aspecto 1:1.

Definindo Tamanho Dinâmico Usando Pseudo-elementos

Os pseudo-elementos ::before ou ::after ajudam a preservar as proporções de um bloco, mesmo que o conteúdo dentro dele mude:

.container-relativa {
  width: 100%; /* Dependente do tamanho do elemento pai */
  display: inline-block;
  position: relative;
}

.container-relativa::before {
  content: '';
  display: block;
  padding-top: 100%; /* Garante proporções quadradas */
}

.conteudo {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
}

A implementação fica assim:

<div class="container-relativa">
  <div class="conteudo">
    <!-- Seu conteúdo que vai se transformar lindamente -->
  </div>
</div>

Herdando Tendências: aspect-ratio

Se você deseja se manter atualizado e usar as propriedades mais recentes do navegador, a propriedade aspect-ratio será útil:

.caixa-moderna {
  width: 100%; /* A largura se ajusta ao tamanho do contêiner */
  aspect-ratio: 1 / 1; /* Proporções quadradas para os pioneiros do design */
}

Truques com Tamanhos vw/vh

Use as unidades vw e vh, que são baseadas nas dimensões da janela do navegador, para alcançar proporções perfeitas:

.caixa-viewport {
  width: 50vw;
  height: 50vw; /* A altura corresponde à largura para manter uma relação de aspecto 1:1 */
}

Esses truques garantirão que o bloco mantenha sempre proporções quadradas.

Visualização

Imagine que você precisa manter a relação de aspecto de uma tela de televisão em qualquer diagonal:

 Diagonal da Tela      Relação de Aspecto (Largura:Altura)
 ------------------    ----------------------------------
|📺 32"               |   16:9                              |
|📺 50"               |   16:9                              |
|📺 75"               |   16:9                              |

Para esta tarefa, o seguinte código CSS funciona bem:

.elemento {
  width: 100%; /* Ocupa toda a largura disponível */
  height: 0;   /* A altura inicial é zero */
  padding-top: 56.25%; /* Valor ideal para telas com relação 16:9 */
}

Aqui, o padding-top atua como um assistente de mágico, alinhando automaticamente a altura do elemento com sua largura.

Abordagem Prática e Considerações

Variações de Proporção

Experimente com diferentes valores de padding-top para alcançar as proporções exatas que você precisa:

  • Use padding-top: 75% para uma relação clássica de 4:3.
  • Para uma relação cinematográfica de 16:9, usar padding-top: 56.25% é ideal.

Redimensionamento Dinâmico com JavaScript

Aprimore o método utilizando JavaScript ou jQuery para monitorar eventos de redimensionamento da janela. Isso ajudará a manter as proporções do elemento em tempo real.

Compatibilidade Entre Navegadores

Não esqueça de verificar o suporte para propriedades modernas como aspect-ratio em recursos como caniuse.com.

Posicionamento Adequado

Para um posicionamento absoluto eficaz, considere cuidadosamente o uso da classe .conteudo. Isso garantirá que o conteúdo se encaixe perfeitamente no espaço alocado pelo pseudo-elemento.

Experimentos para Prática

Use sandboxes como CodePen ou JSFiddle para experimentar proporções e ajustes no seu código.

Recursos Úteis

  1. Aspect Ratio Boxes | CSS-Tricks — mergulhe mais fundo nas complexidades de manter relações.
  2. Usando Variáveis em CSS — aprenda a aproveitar o poder das variáveis em CSS na prática.
  3. Posicionamento em CSS — um curso rápido que cobre os fundamentos do posicionamento.
  4. Calculadora de Proporção — uma ferramenta para calcular proporções com facilidade.
  5. Mantendo as Proporções de Vídeo — dicas para lidar com conteúdo de vídeo.
  6. Design Responsivo: Princípios e Fundamentos — uma visão geral das melhores práticas para o desenvolvimento de design responsivo.
  7. CSS Flexbox — um guia completo sobre o versátil sistema de layout Flexbox.

Video

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

Thank you for voting!