SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
23.11.2024

CSS: Mantendo a Proporção de um Div com Adaptação à Tela

Resposta Rápida

Para manter as proporções de um bloco ao esticá-lo para preencher a tela, use unidades vw para a largura e a função calc() para a altura em CSS:

.fullscreen-ratio {
  width: 100vw;
  height: calc(100vw * (9 / 16)); /* substitua (9 / 16) pela proporção desejada */
}

Aplique este estilo ao seu div:

<div class="fullscreen-ratio"></div>

Dessa forma, você terá um bloco que se estende completamente pela largura da tela enquanto mantém uma proporção de 16:9. A proporção (9 / 16) pode ser ajustada para qualquer outro valor conforme necessário.

Unidades de Viewport: Os Super-Heróis do CSS

Unidades de viewport (vw, vh) são ferramentas poderosas para alcançar responsividade no CSS. Para permitir que seu bloco ocupe o máximo de espaço possível na tela, defina max-width e max-height de acordo com suas dimensões:

.fullscreen-ratio {
  max-width: 100vw;
  max-height: 100vh;
  position: relative;
}

Centralização Vertical e Horizontal: O Primeiro Obstáculo no CSS

Centralizar conteúdo dentro de um bloco pode ser simples se você usar flexbox. Aqui está um método eficaz para centralizar:

.fullscreen-ratio {
  display: flex;
  justify-content: center; /* Centralização horizontal */
  align-items: center; /* Centralização vertical */
}

Suporte aos Navegadores: Não Deixe Nenhum Super-Herói CSS para Trás

Nem todas as propriedades CSS são suportadas por todos os navegadores, então certifique-se de verificar a compatibilidade em caniuse.com. Esteja preparado para aplicar soluções alternativas para garantir melhor compatibilidade entre navegadores.

Fórmula Mágica para Manter Proporções

Para um tratamento uniforme de blocos, use mixins ou funções em pré-processadores de CSS:

// Mixin em SCSS - a maneira secreta de manter proporções
@mixin aspect-ratio($width, $height) {
  position: relative;
  &::before {
    content: '';
    display: block;
    padding-top: calc((100% / ($width / $height)));
  }
  > .content {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
  }
}

Visualização

Manter as proporções de um bloco é como encaixar uma tela em uma moldura enquanto preserva suas dimensões mútuas:

🖼: [Conteúdo do Div]
🖥: { Bordas da Tela }

A tela deve caber perfeitamente dentro da moldura, preenchendo completamente o espaço sem comprometer as proporções da obra.

Quando as Dimensões do Mundo Não São Fixas

Use media queries para adaptar estilos a vários tamanhos de tela:

@media (max-width: 768px) {
  .fullscreen-ratio {
    font-size: calc(1rem + 2vw); /* Tamanho de texto dinâmico */
  }
}

@media (orientation: portrait) {
  .fullscreen-ratio {
    height: calc(100vh);
    width: calc(100vh * (16 / 9)); /* Adaptação para modo retrato */
  }
}

object-fit: O Espelho Mágico

Use object-fit para vídeos e imagens para permitir que eles preencham o bloco enquanto mantêm as proporções:

.fullscreen-media {
  object-fit: cover;
}

Tonalidades de Fundo Sutil

Crie gradientes ou padrões no fundo, enfatizando as proporções:

.background-indicator {
  background: linear-gradient(45deg, #ccc 25%, transparent 25%),
              linear-gradient(-45deg, #ccc 25%, transparent 25%);
}

Suporte a Navegadores Antigos: Trabalhando com Navegadores Legados

Para versões antigas de navegadores, aplique métodos testados e comprovados para manter proporções:

.legacy-ratio {
  padding-bottom: 56.25%; /* 16:9 */
  position: relative;
}
.legacy-ratio > .content {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
}

Domínio na Aplicação: Cálculos Precisos

Experimente combinar rem e vw para escalonamento de texto flexível:

.scalable-text {
  font-size: calc(1rem + 0.5vw);
}

E, Finalmente, Insights de @Danield

Revise a discussão de @Danield no Stack Overflow para uma compreensão mais profunda de como trabalhar com proporções.

Recursos Úteis

  1. Aspect Ratio Boxes | CSS-Tricks — Um guia abrangente sobre como trabalhar com proporções.
  2. aspect-ratio - CSS: Cascading Style Sheets | MDN — Descrição da propriedade CSS aspect-ratio.
  3. How To - Aspect Ratio / Height Equal to Width | W3Schools — Lições práticas sobre como trabalhar com proporções.
  4. html - Maintain the aspect ratio of a div with CSS - Stack Overflow — Discussão sobre métodos para manter proporções de blocos.
  5. Creating Intrinsic Ratios for Video – A List Apart — Soluções especializadas para lidar com vídeos.
  6. Fluid Width Video | CSS-Tricks — Criando players de vídeo responsivos.
  7. Understanding and Using rem Units — SitePoint — Guia detalhado sobre o uso de unidades rem em CSS.

Video

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

Thank you for voting!