Design Responsivo

Design Responsivo

O design responsivo faz com que um único layout funcione em qualquer tela. Uma tag viewport, unidades fluidas e media queries mobile-first cobrem a grande maioria dos casos.

beginner15 min readUpdated 15 de set. de 2026
responsive.css
css
/* responsive.css */
.page {
  padding: clamp(1rem, 4vw, 2.5rem);
}

.grid {
  display: grid;
  gap: 1.5rem;
  grid-template-columns: 1fr;
}

@media (min-width: 768px) {
  .grid { grid-template-columns: repeat(2, 1fr); }
}

@media (min-width: 1024px) {
  .grid { grid-template-columns: repeat(3, 1fr); }
}
Viewport
width=device-width
Abordagem
Mobile first
Breakpoints
min-width media queries
Unidades
%, rem, vw, fr
Tipografia fluida
clamp()
Moderno
Container queries

Por que importa

Por que o design responsivo é o padrão

Base de código única

Um único layout se adapta de celulares pequenos a monitores ultrawide, em vez de manter sites separados.

Melhor experiência

O conteúdo permanece legível e clicável em qualquer tamanho, o que melhora a usabilidade e a conversão.

Nativo do CSS

Flexbox, Grid, unidades fluidas e container queries lidam com a responsividade sem a necessidade de JavaScript.

O panorama completo

As três ferramentas do design responsivo

Um layout base fluido, breakpoints para mudanças estruturais e mídia flexível que nunca transborda.

A base

Fluido

Comece com um layout fluido de coluna única que funcione em qualquer lugar.

Breakpoints

Adaptar

Adicione media queries onde o layout precisa mudar de estrutura.

Mídia

Flexível

Imagens, vídeos e grids que encolhem sem transbordar.

Design responsivo em resumo

As técnicas principais

Tag Viewport

Informa aos navegadores móveis para usar a largura do dispositivo em vez de dar zoom out.

Mobile first

Escreva estilos base para telas pequenas e adicione camadas para telas maiores com min-width.

Breakpoints

Adicione-os onde o conteúdo "quebra", não em tamanhos específicos de dispositivos.

Unidades fluidas

Porcentagens, rem, vw e fr escalam conforme o viewport.

clamp()

Define um valor mínimo, preferencial e máximo em uma única declaração.

Container queries

Responde ao tamanho do próprio componente, não ao viewport.

Uma breve historia

De larguras fixas ao layout intrínseco

  1. 2001

    Layouts fluidos

    Layouts baseados em porcentagem começam a substituir tabelas de largura fixa.

    01
  2. 2010

    Web design responsivo

    Ethan Marcotte nomeia a combinação de grids fluidos, imagens flexíveis e media queries.

    10
  3. 2012

    Mobile first

    Projetar primeiro para telas pequenas torna-se a abordagem recomendada.

    12
  4. 2017

    Flexbox e Grid

    Sistemas de layout nativos tornam as estruturas responsivas muito mais simples.

    17
  5. Hoje

    Intrínseco e container queries

    Componentes respondem ao seu próprio tamanho, reduzindo o código dependente do viewport.

    Hoje

O guia completo

Design Responsivo: Tudo que voce precisa saber

O que é design responsivo?

Design responsivo é a prática de construir um único layout que se adapta a qualquer tela. Em vez de criar um site separado para dispositivos móveis, você escreve um layout base fluido, adiciona breakpoints onde a estrutura precisa mudar e permite que a mídia diminua ou cresça para se ajustar.

Isso se tornou o padrão porque é, simplesmente, uma engenharia melhor: uma única base de código, um único conjunto de conteúdo e uma única URL para ranqueamento e compartilhamento. O CSS moderno — Flexbox, Grid, unidades fluidas e container queries — torna isso mais fácil do que nunca.

A tag viewport

Tudo começa com a meta tag viewport.

<!-- index.html -->
<meta name="viewport" content="width=device-width, initial-scale=1" />

Sem ela, os navegadores móveis assumem a largura de viewport de um desktop e fazem o zoom out, o que deixa o texto minúsculo e quebra seus breakpoints. Com ela, a largura do pixel de CSS corresponde ao dispositivo, fazendo com que as media queries se comportem de forma previsível.

Mobile-first

Escreva seus estilos base para telas pequenas e, em seguida, aprimore-os para telas maiores usando min-width.

/* mobile-first.css */
.grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}

@media (min-width: 768px) {
  .grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 1024px) {
  .grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

A abordagem mobile-first tende a gerar um CSS mais simples: você adiciona regras conforme a tela cresce, em vez de sobrescrevê-las. Além disso, ela mantém a experiência em telas pequenas como a base, o que é fundamental, já que a maior parte do tráfego é mobile.

Breakpoints

Breakpoints são os pontos onde o layout precisa mudar, e não onde um dispositivo específico se encaixa.

  • Redimensione a janela lentamente e observe possíveis problemas: linhas longas demais, colunas muito estreitas ou elementos colidindo.
  • Adicione uma query min-width no ponto onde o layout “quebra”.
  • Reutilize um conjunto pequeno de breakpoints em todo o projeto para manter a consistência.
  • Deixe que o auto-fit e o minmax() do Grid resolvam muitos casos sem a necessidade de qualquer query.
/* auto.css */
.cards {
  display: grid;
  gap: 1.5rem;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}

Essa única regra substitui diversos breakpoints ao criar tantas colunas quantas couberem no espaço.

Unidades fluidas

Larguras fixas em pixels não conseguem se adaptar. Prefira unidades que escalam:

  • % relativo ao elemento pai.
  • rem relativo ao tamanho da fonte raiz, ideal para espaçamento e tipografia.
  • vw / vh relativo ao viewport.
  • fr frações do espaço disponível no Grid.
  • ch aproximadamente a largura de um caractere, útil para comprimento de linha.
/* fluid.css */
.page {
  width: min(100% - 2rem, 64rem);
  margin-inline: auto;
}

.prose {
  max-width: 65ch;
}

h1 {
  font-size: clamp(1.75rem, 5vw, 3rem);
}

clamp(min, preferred, max) é especialmente útil: ele escala com o viewport, mas nunca fica abaixo do mínimo nem acima do máximo, substituindo diversas media queries para tipografia e espaçamento fluidos.

Mídia flexível

Imagens e vídeos nunca devem transbordar (overflow) de seu container.

/* media.css */
img,
video {
  max-width: 100%;
  height: auto;
}

Para obter performance real, sirva também imagens com tamanhos apropriados usando srcset e sizes, e defina width e height (ou aspect-ratio) para que o layout não sofra saltos (layout shift) enquanto elas carregam. O guia de Web Performance aborda imagens responsivas detalhadamente.

Container queries

As media queries de viewport forçam os componentes a terem conhecimento sobre a página. As Container queries permitem que um componente responda ao seu próprio container.

/* container.css */
.card-list {
  container-type: inline-size;
}

.card {
  display: grid;
  gap: 1rem;
}

@container (min-width: 30rem) {
  .card {
    grid-template-columns: 8rem 1fr;
  }
}

Agora, o mesmo card se adapta independentemente de estar em uma sidebar estreita ou em uma coluna principal larga, o que torna os componentes genuinamente reutilizáveis. O suporte já é amplo o suficiente para uso em produção.

Touch, targets e tipografia

  • Crie áreas de toque (tap targets) com pelo menos 44×44 CSS pixels.
  • Mantenha o texto do corpo com no mínimo 16px para que os navegadores mobile não deem zoom ao focar.
  • Limite o comprimento da linha a aproximadamente 45–75 caracteres para melhor legibilidade.
  • Evite interações exclusivas de hover; forneça alternativas compatíveis com touch.
  • Teste com o teclado e em um dispositivo real, não apenas redimensionando a janela.

Testes

  • Use o modo responsivo do navegador para verificar diversas larguras rapidamente.
  • Teste em aparelhos reais; a emulação não reflete a performance real e o comportamento do toque.
  • Verifique as orientações paisagem (landscape) e retrato (portrait).
  • Aplique zoom de 200% e confirme que nada quebrou.
  • Teste conteúdos longos, não apenas o “caminho feliz” com strings curtas.

Melhores práticas

  • Sempre inclua a meta tag viewport.
  • Projete com a abordagem mobile-first e aprimore com queries de min-width.
  • Deixe que o auto-fit e o minmax() do Grid substituam diversos breakpoints.
  • Use unidades fluidas e clamp() para tipografia e espaçamento.
  • Faça com que imagens e mídias diminuam com max-width: 100%.
  • Use container queries para componentes reutilizáveis.
  • Mantenha as áreas de clique (tap targets) grandes e o texto do corpo legível.

Erros comuns

  • Esquecer a meta tag viewport.
  • Projetar primeiro para desktop e acumular overrides.
  • Buscar breakpoints de dispositivos específicos em vez de breakpoints baseados no conteúdo.
  • Larguras fixas em pixels que causam overflow em telas pequenas.
  • Interações baseadas apenas em hover que não funcionam em telas touch.
  • Testar apenas redimensionando a janela do navegador no desktop.

Próximos passos

O design responsivo é a base de qualquer interface moderna. Aprofunde-se nos fundamentos de CSS, utilize Flexbox e CSS Grid para o layout e adicione CSS Variables para manter a consistência de espaçamentos e temas. Depois, escolha uma página que você conheça e redimensione-a lentamente do celular para o desktop, corrigindo cada quebra de layout conforme elas surgirem.

Escrevendo media queries

Estilos base mobile-first com queries de min-width escalam de forma limpa. Queries de max-width desktop-first tendem a acumular sobrescritas.

Preferir
.grid {
  display: grid;
  grid-template-columns: 1fr;
}

@media (min-width: 768px) {
  .grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
Evitar
.grid {
  grid-template-columns: repeat(3, 1fr);
}

@media (max-width: 768px) {
  .grid {
    grid-template-columns: 1fr;
  }
}

Dimensionando conteúdo

O dimensionamento fluido se adapta entre um mínimo e um máximo sem a necessidade de uma media query para cada etapa.

Preferir
h1 {
  font-size: clamp(1.75rem, 5vw, 3rem);
}

.page {
  width: min(100% - 2rem, 64rem);
  margin-inline: auto;
}
Evitar
h1 { font-size: 48px; }
.page { width: 1024px; }
/* overflows on phones */

Perguntas frequentes

Perguntas frequentes

Keep learning

Related topics from the roadmap.

$ comecar a aprender

Pronto para aprender Responsive Design?

Nosso tutorial interativo te guia por Responsive Design passo a passo — com quizzes e codigo real que voce pode executar no navegador.