🎉 SEMANA DO CONSUMIDOR

Últimos dias para comprar os cursos com 50% de desconto

Ver detalhes

Postado em em 23 de setembro de 2024

Você já conhece as Container Queries no CSS? Essa é uma nova forma de criar e estilizar layouts responsivos com base no tamanho do container.

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Para receber o(s) arquivo(s) utilizados na aula, preencha seu e-mail:

Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.

Container Queries no CSS – Nova Forma de Criar Designs Responsivos

O desenvolvimento web tem evoluído significativamente, especialmente no que diz respeito à criação de designs responsivos.

A Media Query é uma ferramenta essencial para adaptar os layouts de sites e aplicativos ao tamanho da tela do usuário. No entanto, essa abordagem apresenta algumas limitações.

Para resolver esse problema, surge uma nova funcionalidade chamada Container Queries, que permite controlar o layout responsivo com base no container em que o elemento está inserido.

Material da Aula – Página de Exemplo

No material disponível para download, você encontrará os arquivos index.html e style.css.

arquivos index.html e style.css

Esse material é responsável por estruturar a página da web que utilizaremos como exemplo.

Página de Exemplo

Essa é uma página bem simples, contendo um título principal (<h1>), seguido de um parágrafo e dois blocos: o bloco principal e o bloco de colunas (à direita na tela).

Dentro de ambos os blocos, temos caixas organizadas contendo uma imagem e um parágrafo. Cada uma dessas caixas compartilha a mesma classe .caixa.

Problema com Media Queries

As Media Queries funcionam monitorando o tamanho da tela do usuário e, a partir dessa informação, é possível definir regras CSS para modificar o layout da página, garantindo que ele se adapte a diferentes dispositivos.

No entanto, essa abordagem pode ser restritiva em layouts mais complexos, como no exemplo em que múltiplos elementos compartilham a mesma classe.

Ao aplicar uma Media Query, qualquer mudança feita na classe .caixa será replicada para todos os elementos que a utilizam, independentemente do tamanho individual de cada um.

Perceba que se isso acontecer nosso layout ficará desconfigurado e inconsistente, pois a caixa do bloco principal, deve ser maior do que as caixas no bloco de colunas.

O ideal, nesse caso, seria modificar os elementos com base no tamanho disponível dentro de cada container, e não apenas no tamanho da tela. Para isso, podemos utilizar as Container Queries.

Para saber mais sobre Media Queries e responsividade no CSS confira nossa aula: Responsividade no CSS: Criando Layouts para Diferentes Dispositivos

Container Queries no CSS

As Container Queries são a abordagem mais indicada quando desejamos que o layout responda ao tamanho do contêiner, em vez de ser baseado no tamanho da tela.

Com essas regras, você pode especificar que um determinado elemento altere seu comportamento visual conforme o espaço disponível no container onde está inserido.

Isso nos dá muito mais controle e flexibilidade na criação de layouts responsivos, garantindo que o estilo se mantenha adequado, independentemente do dispositivo que o usuário esteja utilizando.

Para usar uma Container Query, o primeiro passo é definir qual elemento será o contêiner. Isso é feito no CSS, utilizando a propriedade container-type.

Uma vez que o contêiner é declarado, você pode usar as Container Queries para modificar o layout com base no seu tamanho.

Como qualquer nova funcionalidade do CSS, é sempre importante verificar o suporte dela nos navegadores. O site Can I Use é uma excelente ferramenta para isso.

Atualmente, mais de 90% dos navegadores já suportam as Container Queries, o que as torna uma opção viável e segura para seus projetos.

site Can I Use

Analisando o Layout

Antes de aplicarmos as container queries à nossa página, é importante analisarmos o layout para verificar em que dimensão o contêiner precisa ser modificado.

Podemos fazer essa verificação usando as Ferramentas do Desenvolvedor, um recurso que nos ajuda a visualizar informações da página e realizar testes com diferentes configurações.

Diferentes navegadores podem ter formas distintas de acessar essa opção, mas ela estará disponível em todos eles.

No Chrome, por exemplo, você pode clicar nos três pontos no canto superior direito do navegador, ir em Mais ferramentas e selecionar Ferramentas do desenvolvedor, ou utilizar o atalho Ctrl + Shift + I.

Ferramentas do desenvolvedor

Ao acessar essa ferramenta, você verá a opção Toggle device toolbar, localizada no canto superior esquerdo da janela recém-aberta (segunda opção à esquerda de Elements).

opção Toggle device toolbar

Essa ferramenta permite alterar o tamanho do layout, facilitando a verificação da responsividade em diferentes dispositivos.

Ao modificar o tamanho da tela, você notará que, em larguras menores que 1430px, as caixas no bloco de colunas ficam com o texto e a imagem apertados.

Ajustando as dimensões da página

No entanto, perceba que a caixa no bloco principal ainda possui espaço suficiente para ajustar o conteúdo.

Esse é o motivo pelo qual container queries são essenciais: com elas, podemos controlar o layout de acordo com o container específico de cada caixa.

Para verificar as dimensões de um elemento específico, você pode usar a primeira opção à esquerda de Toggle device toolbar e selecionar o elemento desejado.

selecionando um elemento pela ferramenta do desenvolvedor

No nosso caso, vamos selecionar o container da coluna e observar suas dimensões nas Ferramentas do Desenvolvedor.

Selecionando o container coluna

Verificamos que, a partir de 550px de largura, o layout do elemento começa a ficar apertado, prejudicando a visualização do texto e da imagem.

Verificando o layout do elemento a partir de 550px de largura

Portanto, a regra de estilo dos nossos elementos deve ser aplicada quando o contêiner em que eles estão inseridos tiver 550px ou menos. Nesse caso, vamos alterar a direção dos elementos internos para orientação em coluna, usando flex-direction: column.

Aplicando as Container Queries no CSS

Agora que já identificamos as dimensões nas quais precisamos alterar o layout, vamos definir as regras de estilo no CSS.

O primeiro passo é declarar os elementos que serão os containers das nossas caixas. Isso é feito utilizando a propriedade container-type, como vimos anteriormente. Ela recebe o valor inline-size, que se refere à largura do container (eixo horizontal).

Aplicamos essa propriedade aos seletores dos elementos com as classes .principal e .coluna.

.principal {
  display: flex;
  width: 60%;
  container-type: inline-size;
}

.coluna {
  display: flex;
  flex-direction: column;
  gap: 10px;
  width: 40%;
  container-type: inline-size;
}

Uma vez que o contêiner é declarado, podemos usar a Container Query para modificar o layout com base no seu tamanho, de forma semelhante ao que fazemos com Media Queries.

No nosso exemplo, queremos que, quando o container tiver 550px ou menos, o layout mude a direção dos elementos internos para orientação em coluna. Isso pode ser feito através da propriedade flex-direction com o valor de column.

@container (max-width: 550px) {
  .caixa {
    flex-direction: column;
  }
}

Com essa regra, o flex-direction: column só afetará os elementos com a classe .caixa quando o container onde eles estão inseridos tiver uma largura menor que 550 pixels.

Assim, quando o bloco de colunas atingir 550px ou menos, as caixas dentro dele serão reorganizadas. Já a caixa no bloco principal permanecerá inalterada até que o bloco principal também chegue a essa medida.

Visualizando a página após aplicar a container query

Isso nos proporciona um controle mais refinado e preciso dos elementos que compartilham a mesma classe em nossa página.

Conclusão – Container Queries no CSS

As container queries representam um avanço significativo no design responsivo, oferecendo maior controle sobre como os layouts se adaptam ao espaço disponível.

Nessa aula, você aprendeu o que são e como implementar container queries, permitindo aplicar regras específicas aos elementos com base no tamanho de seus containers, e não no tamanho da tela.

Essa abordagem torna o layout dos seus projetos mais flexível e eficiente, permitindo um controle mais preciso dos elementos. Com o suporte crescente nos navegadores, essa é uma ferramenta poderosa que você pode explorar nos seus projetos.

Para aprofundar seus conhecimentos em HTML e CSS e aprender a criar projetos e páginas de destaque no mercado, confira o nosso Curso Completo HTML e CSS Impressionador.

Hashtag Treinamentos

Para acessar publicações de JavaScript, clique aqui!


Quer aprender mais sobre JavaScript com um minicurso básico gratuito?

Posts mais recentes de HTML e CSS

Posts mais recentes da Hashtag Treinamentos

Diego Monutti

Expert em conteúdos da Hashtag Treinamentos. Auxilia na criação de conteúdos de variados temas voltados para aqueles que acompanham nossos canais.