Frontends com Vibecoding · Capítulo 9 de 33 · 25 min
Adaptar o layout ao celular e ao contêiner
Você passa a decidir o layout pelo espaço do componente, devolver os recortes do aparelho, medir o alvo do dedo e escolher o teclado de cada campo.
Este capítulo faz parte do curso gratuito Frontends com Vibecoding.
A unidade 100vh esconde o botão de confirmar atrás da barra de endereço do celular assim que a página abre, e o cliente desiste sem tocar em nada. Esse é o primeiro de quatro defeitos que a tela pequena cobra caro.
Os outros três vêm junto. A tela do celular muda de tamanho durante o uso e o dedo cobre uma área bem maior que o ponto tocado. O teclado errado custa toques a mais.
A medida de altura certa, o espaço devolvido nos cantos do aparelho, o tamanho de alvo por norma e o teclado certo resolvem os quatro, nessa ordem.
Tudo começa na unidade 100vh, que significa cem por cento da altura da área visível, o pedaço da página que cabe na tela. Ela conta essa área sem a barra de endereço do navegador.
No celular a barra costuma estar à vista quando a página abre, então o bloco nasce mais alto que o espaço real e o botão cai fora. A página ainda dá um pulo quando a barra some, porque arrastar a página para cima recolhe a barra e muda a altura disponível.
Duas unidades resolvem, e a diferença é qual estado da barra cada uma conta. A pequena (svh) conta com a barra à vista e garante que nada seja cortado na abertura. A dinâmica (dvh) acompanha o movimento da barra em tempo real.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Use a dinâmica no bloco de tela cheia. No botão que precisa aparecer logo, como o de continuar do checkout, use a pequena.
O segundo defeito são os recortes do aparelho: a câmera em cima e a barra de gestos embaixo. O navegador só desenha por baixo deles quando você pede, e quem pede precisa devolver o espaço. São dois passos, e pular o primeiro faz o segundo devolver zero.
No primeiro passo, uma linha na configuração de tela do site autoriza o desenho sob os recortes. No segundo, o recuo que o aparelho informa entra no espaçamento de todo elemento colado nas bordas, sempre somado a um mínimo seu. Em aparelho sem recorte esse recuo vale zero, e sem o mínimo o botão encosta na borda.
Quem pula esse cuidado vê o botão de confirmar meio escondido atrás da barra de gestos. O toque abre o menu do sistema em vez de confirmar o pedido. O defeito quase nunca aparece no seu aparelho, porque o tamanho do recorte muda de modelo para modelo.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
O dedo cobre uma área bem maior que o ponto tocado, e três normas dizem o tamanho do alvo. Alvo aqui é o retângulo sensível ao toque, não o desenho do ícone.
São 24 por 24 pixels no piso, critério 2.5.8 da WCAG 2.2 no nível AA. A Apple pede 44 e o Android pede 48.
A parte que quase todo mundo esquece é o espaço entre um alvo e o vizinho. Três alvos de 24 pixels colados passam no piso e continuam errados, porque o dedo cobre os três de uma vez.
Com 8 pixels de distância, o mesmo trio funciona. Quando o ícone precisa ser pequeno, aumente a área tocável pelo espaçamento interno, sem redesenhar o ícone.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
O formulário é onde o celular cobra mais caro pelo descuido, porque cada campo errado custa toques a mais. Duas escolhas decidem quase tudo: o modo de entrada (inputmode), que define qual teclado sobe, e o preenchimento automático (autocomplete), que deixa o navegador completar o campo sozinho.
A armadilha mais comum é usar campo do tipo número para CPF, CEP e cartão. Esse tipo traz setas de aumentar e diminuir e perde o zero à esquerda do CEP, e nenhum dos três é um número que você vá somar. Use campo de texto com modo de entrada numérico, e o teclado certo sobe sem efeito colateral.
O preenchimento automático do código recebido por mensagem resolve o pior momento do formulário. O teclado oferece o código do SMS acima das teclas, e a pessoa não sai do site.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Quatro regras do manual de setembro de 2026 fecham a tela de celular. A primeira é a densidade, o espaço entre linhas e botões, que muda conforme o breakpoint, a largura em que o layout troca de arranjo. Apertada no computador e folgada no celular, porque um valor único erra num dos dois.
A segunda é o tema escuro feito de tokens, que são valores de cor guardados com nome, como a etiqueta na lata de tinta. Esses valores trocam de papel entre os dois temas. Cor fixa escrita em cada elemento é o que quebra no escuro. O peso da fonte sobe um degrau sobre fundo escuro, porque o traço fino some.
Terceira regra: toda janela modal tem fechamento visível e tocável, com alvo de 44 pixels, porque o gesto de tocar fora ninguém descobre sozinho.
A quarta é o campo que cresce com o conteúdo, entregue pelo field-sizing. Sem suporte, a caixa fica na altura fixa e rola por dentro.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Abra a tela mais importante do site no seu celular e role até o fim. Veja se a página pula quando a barra do navegador some e se algum botão fica fora da área visível. Testar só no computador, em modo de simulação, esconde esse defeito.
Meça os três menores botões e a distância entre eles na ferramenta de inspeção do navegador. Leve cada alvo a 44 pixels pelo espaçamento interno, sem redesenhar o ícone. Num botão de confirmar horário preso ao rodapé, é a altura dinâmica que impede a queda fora da área visível.
Troque CPF, CEP e cartão do tipo número para texto com modo de entrada numérico e confira se o zero à esquerda do CEP sobrevive. Está pronto quando nada se esconde atrás da barra e nenhum toque erra o alvo.
Faça o cartão se ajustar sozinho ao espaço que recebeu
Resolvida a medida da tela do aparelho, o layout passa a ser decidido pelo espaço de cada componente, com subgrid, alvenaria e consulta de suporte.
Um componente, que é o pedaço de tela repetido muitas vezes, como o cartão de produto, decide sozinho o layout pelo espaço que recebe, sem nenhuma programação. Com isso ele deixa de existir em duas versões separadas, uma para a lista e outra para a página interna.
Sete recursos nativos entregam esse cartão único. A seguir, o que cada um faz, o problema que ele tira da sua frente e o desenho de reserva para onde ainda não roda.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
A container query é a pergunta sobre o espaço que o componente recebeu, e não sobre o tamanho da tela. Isso muda quem decide: o elemento que segura o cartão informa a largura disponível, e o cartão escolhe o arranjo.
Na prática, o cartão empilha imagem e texto quando recebe menos de 340 px. Acima disso, põe os dois lado a lado, com a mesma marcação em qualquer página. Num cartão de imóvel, isso apaga a segunda versão do componente, hoje mantida só para a lista de resultados.
A armadilha é declarar a consulta dentro do próprio cartão. Quem pergunta pelo espaço é sempre o elemento de fora, nunca ele mesmo.
Já a style query pergunta pelo valor de um token, o ajuste guardado com nome como a etiqueta na lata de tinta, em vez de perguntar pela largura. Você guarda ali a densidade que quer e o cartão aperta ou afrouxa sozinho. Onde ela ainda não roda, o cartão fica na densidade confortável.
Laboratório ao vivo: layout decidido pelo espaço
1. Arraste o canto
Densidade
Sofá de dois lugares
R$ 1.290cenário ilustrativo
arraste o canto inferior direito da caixa
Suporte: container query em navegador atual; style query no Firefox 138. Sem style query a densidade fica na confortável, e sem container query o cartão fica lado a lado quando cabe.
2. Alvenaria nativa
Suporte: grid-lanes no Safari 26, com Chrome e Firefox atrás de opção experimental. Sem suporte, a grade deixa buracos entre as linhas e os oito blocos continuam visíveis.
3. Altura que anima de auto
Ver os detalhes do pedido
Sofá de dois lugares, tecido cinza
Entrega em cinco dias úteis
Montagem inclusa na região
Troca em sete dias
text-wrap: balance
Grade em alvenaria sem biblioteca
text-wrap: pretty
Grade em alvenaria sem biblioteca
Suporte: interpolate-size no Chrome e no Edge 129, text-wrap pretty no Safari 26. Sem suporte, o detalhamento abre sem transição e o título quebra na linha padrão.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Grade, aqui, é o arranjo invisível de linhas e colunas que alinha os elementos da página. Subgrid é a grade filha que herda as linhas e colunas da grade de cima.
É ele que faz título, preço e botão de cartões vizinhos caírem na mesma altura, mesmo quando um título ocupa duas linhas e o outro, uma.
O plano B antigo era altura mínima fixa, que sobra espaço num cartão e corta texto no outro.
Grade em alvenaria é a galeria de alturas diferentes que se encaixa sem buraco, como a estante de caixas de tamanhos variados. Até 2026 ela exigia biblioteca, o pacote de código pronto, medindo cada bloco; agora a sintaxe grid-lanes faz isso dentro do próprio Grid.
Onde ela ainda não chegou, a grade comum deixa vãos entre as linhas e todos os blocos continuam visíveis.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Altura que anima de auto era o outro caso que obrigava a instalar biblioteca. Com interpolate-size e calc-size(), o navegador consegue animar até valores como auto, e o detalhamento de um pedido abre com transição escrita em duas linhas de CSS. Use em bloco pequeno, porque animar a página inteira faz o celular engasgar.
A outra troca é a ordem de leitura. Com reading-flow, a tecla Tab segue a ordem visual da grade, e o leitor de tela acompanha, sem reescrever a marcação. A armadilha é reordenar só pelo CSS, sem reading-flow: quem navega por teclado pula de um canto ao outro da tela sem entender por quê.
Dois ajustes de tipografia fecham o cartão. O text-box-trim remove o espaço fantasma que a fonte deixa acima e abaixo da letra, e o título passa a alinhar com o ícone sem margem negativa.
O text-wrap: pretty evita a palavra órfã sozinha na última linha do parágrafo. Onde falta suporte, o texto quebra na linha padrão e ninguém percebe a diferença.
Para ordenar o que vale adotar primeiro, sirva-se do Interop 2026, o acordo anual em que os fabricantes de navegador combinam o que vão implementar juntos. Ele lista 19 áreas de foco, 11 delas de CSS.
É assim que se organiza a melhoria progressiva: uma base que funciona em todo lugar e o enfeite só onde o navegador aceita. O critério para adotar cabe em duas frases. Use o recurso nativo atrás de uma consulta de suporte, desde que o desenho de reserva ainda cumpra a função. Segure a biblioteca para quando esse desenho quebra.
Sete recursos de layout, onde já rodam e o desenho de reserva
| Recurso | Onde já roda | Desenho de reserva sem suporte |
|---|---|---|
| Container query de tamanho | Baseline Widely Available desde 14 de agosto de 2025 | Cartão lado a lado quando cabe, empilhado quando não cabe |
| Container query de estilo | Baseline Newly Available em 19 de maio de 2026; Firefox 151 fechou o conjunto | A densidade fica na confortável |
| Subgrid | Baseline Widely Available desde 15 de março de 2026 | Altura mínima fixa nos cards |
| Masonry por grid-lanes | Safari 26; Chrome e Firefox em opção experimental, previsão 2026 | Grade comum com vãos, todos os blocos visíveis |
| calc-size() e interpolate-size | Chrome e Edge 129; foco do Interop 2026 | O bloco abre sem transição |
| reading-flow e reading-order | Chrome 137 | O Tab segue a ordem da marcação; reordene no HTML |
| text-box-trim | Chrome e Edge 133, Safari 18.2; Firefox sem suporte | O espaço fantasma fica, e nada quebra |
Cada linha entra atrás de @supports; a coluna da direita é o que o visitante sem o recurso vê.
Fonte: Manual de referência Recursos de frontend moderno, edição setembro de 2026 (Brasil GEO).
Escolha o componente que mais se repete no site e peça os sete recursos numa conversa só com o agente. Diga que o cartão da lista e o da página interna são o mesmo, e que o arranjo reage ao espaço recebido, não ao tamanho da tela.
Peça também que título, preço e botão caiam na mesma altura em todos os cartões da fileira, por subgrid. Altura mínima fixa no lugar dele sobra espaço num cartão e corta texto no outro.
Antes de aceitar a entrega, abra a página no celular mais antigo que você tiver. Está pronto quando cada recurso está atrás de uma consulta de suporte e nada some sem ele.
Guia prático: zonas seguras e piso de texto conferidos por script
No celular, o defeito que passa pela revisão é o texto que existe mas não se lê: pequeno demais, cortado no fim da linha ou escondido atrás da interface de quem exibe a página. Olhar a tela não pega isso, porque o olho completa o que falta. O curso de edição de vídeo estudado em 07/10/2026 resolve com dois limites escritos em número e um script que confere.
O primeiro limite são as zonas seguras. No vídeo vertical de 1080 por 1920 pixels, nada importante entra nos 220 pixels de cima nem nos 380 de baixo, onde o aplicativo põe nome do perfil, legenda, botões e descrição. O segundo é o piso de texto: 22 pixels para o que a fala cita e 18 para o resto, com um verificador que reprova qualquer texto abaixo de 17,5. A página tem as mesmas faixas reservadas: barra do navegador, barra fixa de cookies, botão flutuante de WhatsApp e barra de gestos.
Os templates mostram o tamanho do problema. Nos 51 sites medidos, 26 usam rótulos de 9 a 11 pixels, o tamanho do texto em caixa alta acima dos títulos. Um deles, o totem de restaurante, desliga o zoom com user-scalable=no; a documentação da MDN avisa que isso impede quem tem baixa visão de ampliar a página, e que a WCAG pede ampliação de pelo menos duas vezes. A lição: escreva o limite com número e deixe um script medir cada caixa de texto, em vez de confiar na impressão de que está legível.
// Teste do Playwright: texto legível e o essencial fora das faixas reservadas, em 390 px.
import { test, expect } from "@playwright/test";
const PISO_PX = 14; // ajuste ao piso escrito no DESIGN.md
const TOPO_PX = 56; // faixa de cima reservada (barra fixa, aviso)
const BASE_PX = 88; // faixa de baixo reservada (botão flutuante, gestos)
test("texto legível e fora das faixas reservadas", async ({ page }) => {
await page.setViewportSize({ width: 390, height: 844 });
await page.goto("/");
const achados = await page.evaluate(({ piso, topo, base }) => {
const lista: string[] = [];
const alturaTela = window.innerHeight;
for (const el of document.querySelectorAll<HTMLElement>("body *")) {
const temTexto = [...el.childNodes].some((n) => n.nodeType === 3 && n.textContent!.trim());
if (!temTexto) continue;
const est = getComputedStyle(el);
if (est.visibility === "hidden" || est.display === "none") continue;
const r = el.getBoundingClientRect();
const nome = el.textContent!.trim().slice(0, 40);
if (parseFloat(est.fontSize) < piso) lista.push(`pequeno (${est.fontSize}): ${nome}`);
if (el.scrollWidth > el.clientWidth + 1 && est.overflow !== "visible") lista.push(`cortado: ${nome}`);
if (r.right > window.innerWidth + 1) lista.push(`fora da tela: ${nome}`);
}
// O que é essencial (botão principal, preço) não pode nascer sob uma faixa reservada.
for (const el of document.querySelectorAll<HTMLElement>("[data-essencial]")) {
const r = el.getBoundingClientRect();
if (r.top < alturaTela && (r.top < topo || r.bottom > alturaTela - base))
lista.push(`essencial na faixa reservada: ${el.textContent!.trim().slice(0, 40)}`);
}
return lista;
}, { piso: PISO_PX, topo: TOPO_PX, base: BASE_PX });
expect(achados, achados.join("\n")).toEqual([]);
});Do "parece legível" ao limite medido
Cinco passos para a próxima página ou o próximo vídeo vertical. Os números ficam no DESIGN.md, e o script repete a conferência.
Passo 1: Marque as faixas que a interface ocupa
Abra a página no seu celular e meça a altura da barra fixa, do aviso de cookies e do botão flutuante. No vídeo vertical, use 220 pixels em cima e 380 embaixo como ponto de partida e confira no aplicativo onde ele publica.
Deu certo quando: O DESIGN.md tem a altura de cada faixa reservada, em pixels.
Erro comum: Colocar o botão principal exatamente onde o botão flutuante de WhatsApp vai pousar.
Passo 2: Escreva o piso de texto
Defina um piso para o corpo e outro, um pouco menor, para rótulos e legendas de apoio. Rótulo em caixa alta de 9 a 11 pixels sai do projeto, mesmo que o template traga assim.
Deu certo quando: O piso está escrito e nenhum estilo do projeto fica abaixo dele.
Erro comum: Aceitar o rótulo minúsculo porque "é só enfeite"; ele costuma carregar a categoria ou o preço.
Passo 3: Rode o script em três larguras
Use o teste do bloco acima em 390, 768 e 1440 pixels, trocando o tamanho da tela no início. Ele lista texto abaixo do piso, texto cortado e texto fora da tela.
Deu certo quando: A lista volta vazia nas três larguras.
Erro comum: Rodar só na largura do computador, onde quase nada falha.
Passo 4: Marque o que é essencial
Ponha o atributo data-essencial no botão principal, no preço e no telefone. O teste confere que nenhum deles nasce sob uma faixa reservada quando a página abre. Marque poucos elementos, com motivo anotado no DESIGN.md.
Deu certo quando: Os elementos essenciais aparecem fora das faixas reservadas ao abrir a página.
Erro comum: Marcar a página inteira como essencial e receber uma lista que ninguém lê.
Passo 5: Devolva o zoom a quem precisa
Procure user-scalable=no e maximum-scale=1 na meta de viewport e tire os dois. Depois amplie a página no celular com dois dedos e confira se o conteúdo segue legível.
Deu certo quando: A página amplia no celular e nada essencial some ao ampliar.
Erro comum: Desligar o zoom para esconder um layout que quebra ao ampliar, em vez de consertar o layout.
No fim você tem: Faixas reservadas e piso de texto escritos em número, conferidos por um teste que roda a cada entrega, na página e no vídeo vertical.
Analista de conteúdo de uma imobiliária em Florianópolis, que publica a página do lançamento e os vídeos verticais do mesmo prédio
Imobiliário, lançamento
Dor
No vídeo vertical, o preço de entrada ficava atrás da legenda do aplicativo. Na página, o botão de agendar visita caía sob o botão flutuante de WhatsApp no celular, e os rótulos das plantas tinham 10 pixels.
Solução
Ela escreveu no DESIGN.md as faixas reservadas da página e do vídeo e um piso de 14 pixels para rótulos. O agente acrescentou o teste do bloco de código e corrigiu cada achado da lista nas três larguras.
Resultado
Preço e botão passaram a aparecer fora das faixas da interface, e os vídeos seguintes já saíram dentro das zonas seguras, sem revisão manual de cada quadro.
Cenário construído para fins didáticos. Números não correspondem a cliente específico.
Aplicar os recursos ao projeto
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
ResizeObserver avisa quando o tamanho de um elemento muda. Serve a componente que encolhe sem a janela mudar, como um gráfico ao lado de um painel que recolhe. Quando a tarefa é só reorganizar o layout, consulta de contêiner em CSS costuma resolver sem nenhum JavaScript.
Observe o contêiner do gráfico e leia entry.contentRect.width no callback. Use essa largura para recalcular a escala ou chamar o redimensionamento da biblioteca gráfica. Em canvas, a tela de desenho do navegador, mantenha o tamanho visual, as dimensões internas e a densidade de pixels em acordo, senão o desenho sai borrado.
Recolha o painel lateral e veja se o gráfico acompanha a largura sem cortar nada. Mudar o próprio tamanho observado pode criar um laço de atualização sem fim; compare com o valor anterior antes de escrever. Chame disconnect ao desmontar o componente. O evento resize da janela sozinho não cobre esse caso.
Consulta de contêiner deixa o componente olhar o espaço que ele recebeu, em vez de olhar a tela inteira. O mesmo cartão se arruma diferente no meio da página e na barra lateral. Use quando a peça viaja por vários lugares; a regra mede o pai preparado, nunca ele mesmo.
Marque a caixa que segura os cartões com container-type: inline-size, a declaração que autoriza medir aquela largura. Escreva uma regra @container que reorganize o miolo quando houver espaço. O cartão começa empilhado e passa a mostrar imagem e texto lado a lado, com a mesma ordem no HTML.
Coloque o mesmo cartão em duas larguras diferentes na mesma tela e aumente o tamanho da letra. Deixe o formato empilhado utilizável para quando a consulta não valer. Consulta de estilo e de rolagem são outra história, com compatibilidade própria; não presuma que funcionam junto.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Subgrid faz a grade de dentro usar as linhas da grade de fora, para peças vizinhas se alinharem sozinhas. Some a gambiarra de altura fixa e margem chutada. Escolha quando títulos e botões de cartões vizinhos precisam bater na mesma altura, mesmo com textos desiguais.
Na comparação de planos, defina as faixas na grade principal e faça cada cartão ocupar essas faixas. Dentro do cartão, use display: grid com grid-template-rows: subgrid, que manda herdar as faixas do pai. Título, preço e botão passam a seguir a mesma régua.
Aumente o texto e troque um título por outro bem mais longo para ver se o alinhamento aguenta. Subgrid herda só o eixo que você pediu, e o filho precisa estar posicionado certo. Deixe uma pilha simples como plano B e confira os navegadores da sua entrega.
Laboratório visual: adaptar o layout ao celular e ao contêiner
Ordem de leitura, largura útil, teclado e alvo de toque
Escolha seu próximo encontro.
Oficina de cerâmica. Sábado, às 14h. Veja os horários antes de reservar.
Consultar horáriosA versão revisada oferece assunto, horário e uma ação específica. Compare a ordem de leitura e o espaço disponível.
Seu caderno neste capítulo
Abrir o caderno completoSelecione um trecho do capítulo para destacar ou anotar. Nos vídeos e áudios, use Anotar este momento. No teclado, selecione com Shift e as setas e use Alt+Shift+D para destacar ou Alt+Shift+N para anotar.
Salvo neste navegador. Entre na sua conta para levar o caderno a outros aparelhos.
Entre na sua conta para compartilhar o que aprendeu e convidar alguém para estudar com você.
Conexões deste capítulo
Veja o que estudar antes e para onde seguir depois, explore os conceitos e compare abordagens em outros cursos. Sugestões marcadas como “sugerido pelo grafo” vêm dos assuntos em comum, não do índice do curso.
Estude antes
- CursoClaude Code CLI: Programação com IA
- Frontend vs Backendsugerido pelo grafoApresenta o conceito “Frontend”, usado em “Adaptar o layout ao celular e ao contêiner”.
- CursoVídeo com IA: Claude Code, Codex e ElevenLabssugerido pelo grafo20 capítulos de “Frontends com Vibecoding” usam conceitos apresentados em “Vídeo com IA: Claude Code, Codex e ElevenLabs”.
- CursoNode.js: JavaScript no Servidorsugerido pelo grafo20 capítulos de “Frontends com Vibecoding” usam conceitos apresentados em “Node.js: JavaScript no Servidor”.
Depois, siga para
- CursoPrompt Engineering para Executivossugerido pelo grafo7 capítulos de “Prompt Engineering para Executivos” usam conceitos apresentados em “Frontends com Vibecoding”.
- CursoLLM FinOps: o custo da IA para quem assina o orçamentosugerido pelo grafo3 capítulos de “LLM FinOps: o custo da IA para quem assina o orçamento” usam conceitos apresentados em “Frontends com Vibecoding”.
O mesmo assunto em outros cursos
- MCP com Chrome: Automação com IAFazer o agente ler a página em texto em vez de fotografarExaminar conexões de Fazer o agente ler a página em texto em vez de fotografar
- Segundo cérebro com IAPor que dar mais contexto pode deixar o agente piorExaminar conexões de Por que dar mais contexto pode deixar o agente pior
- Software e IA para executivosMedir a velocidade que o cliente sente no celular deleExaminar conexões de Medir a velocidade que o cliente sente no celular dele
- SO nativo de IATelas que parecem o que o time já usaExaminar conexões de Telas que parecem o que o time já usa
Voltar ao capítulo anterior: Projetar menus, popovers e modais acessíveis
Leve uma ideia para a prática
Escolha uma atividade no painel e volte a este curso quando quiser.
Atividades e evolução ficam reunidas no painel da sua conta.
Laboratórios ao vivo deste curso
Cada laboratório monta a biblioteca real dentro da aula, com controles para você mexer e o código do exemplo para copiar. O texto de reserva descreve a demonstração para quem lê sem JavaScript. O link abre o capítulo já no ponto do laboratório.
Base UI
Prenda o foco num diálogo sem escrever o comportamento
Abra a janela Agendar visita, percorra os campos com Tab, feche com Esc e acompanhe no painel onde o foco está e para onde ele volta.
Pacote
Abrir no capítuloConstruir componentes, usar o registro e publicar o catálogo@base-ui/reactLucide e Iconify
Mantenha uma família de ícones coerente e nomeie cada botão
Mude tamanho, traço e cor da barra, veja o símbolo do Iconify acompanhar o Lucide e rode a auditoria de nomes acessíveis.
Pacote
Abrir no capítuloProjetar uma linguagem de ícones e ilustraçãolucide-react, @iconify/reactMotion
Testar os três sinais que autorizam o terceiro degrau
Reproduza a entrada em sequência, aperte o botão com mola e arraste o cartão; ajuste rigidez e amortecimento e veja o que muda.
Pacote
Abrir no capítuloProjetar movimento, assinatura e narrativas por rolagemmotionVidstack
Ver o que separa um player de um vídeo cru
Dê o play, troque a velocidade e ligue a legenda; o painel ao lado mostra o estado que o player publica e que a etiqueta crua esconde.
Pacote
Abrir no capítuloProjetar movimento, assinatura e narrativas por rolagem@vidstack/reactcmdk
Achar um destino entre quarenta digitando três letras
Abra a paleta, digite fat e escolha um item só pelo teclado; o painel embaixo conta o que o filtro deixou passar e quanto tempo levou.
Pacote
Abrir no capítuloConstruir formulários e estados de interaçãocmdknumber-flow
Animar indicadores que mudam ao vivo com formato pt-BR
Veja três indicadores fictícios rolarem a cada troca e compare com o número em texto puro. Pause, reinicie e observe o separador de milhar.
Pacote
Abrir no capítuloProjetar gráficos e painéis pela decisão@number-flow/reactApache ECharts
Medir o custo de desenhar 200 mil pontos com o ECharts
Troque o tipo de gráfico e o volume de pontos, leia o tempo de desenho e alterne o eixo em zero. Mude o tema do site e veja as cores refazerem.
Pacote
Abrir no capítuloProjetar gráficos e painéis pela decisãoechartssharp e svgo
Escolher a variante certa da imagem e conferir o teto de 150 KB
Arraste a largura da tela simulada, troque a densidade entre 1x e 2x e veja qual arquivo o navegador escolhe, quanto ele pesa e se cabe no orçamento.
Pacote
Abrir no capítuloValidar desempenho, autenticação e segurançasharp, svgoReact Flow (xyflow)
Disparar um pedido e ver o orquestrador distribuir, conferir e responder
Alterne paralelo e sequencial, ligue e desligue a verificação e use a medição real; observe o tempo de parede em cada combinação.
Pacote
Abrir no capítuloConstruir as cenas do orquestrador, do paralelismo e do robô@xyflow/reactGSAP, Web Workers e number-flow
Dividir mil tarefas entre trabalhadores reais e correr três ritmos de geração
Execute com um trabalhador, depois com quatro e oito, e compare o tempo; em seguida percorra a corrida e separe a espera inicial do ritmo.
Pacote
Abrir no capítuloConstruir as cenas do orquestrador, do paralelismo e do robôgsap, @number-flow/reactThree.js com React Three Fiber, drei, Rapier e XR
Carregar o braço robótico, ver a física trabalhar e entrar na cena com o visor
Carregue a cena pelo botão, inicie o ciclo, mostre os ângulos das juntas, troque a câmera e a velocidade; com visor, entre em realidade virtual.
Pacote
Abrir no capítuloConstruir as cenas do orquestrador, do paralelismo e do robôthree, @react-three/fiber, @react-three/drei, @react-three/rapier, @react-three/xrMotion
Ver quatro agentes em raias trocando mensagens e a revisão devolvendo um trecho
Reproduza os 60 s de modelo, percorra o tempo pelo controle e esconda as mensagens para comparar a leitura; repare no tempo de parede contra a soma.
Pacote
Abrir no capítuloEspecificar, medir e produzir as cenas da máquinamotionMediaRecorder, Canvas 2D e Long Animation Frames (plataforma)
Medir o quadro da cena e gravar seis segundos dela em vídeo
Suba as partículas, force um bloqueio de 300 ms e leia o medidor; depois grave seis segundos, veja o codec escolhido e baixe o arquivo.
Pacote
Abrir no capítuloEspecificar, medir e produzir as cenas da máquinasem pacotesigma.js, graphology com ForceAtlas2 e cosmos.gl
Ver o grafo real do curso e um grafo de milhares de nós se organizarem em aglomerados
Rode o layout no grafo real, passe o mouse pelos nós e busque uma entidade; troque para 20 mil nós e leia o medidor; depois carregue o modo massivo na placa de vídeo.
Pacote
Abrir no capítuloAnimar um grafo de conhecimento amplo em movimentosigma, graphology, graphology-layout-forceatlas2, graphology-generators, @cosmos.gl/graph
Capítulos vizinhos em Frontends com Vibecoding
- 07Projetar uma linguagem de ícones e ilustração
- 08Projetar menus, popovers e modais acessíveis
- 09Adaptar o layout ao celular e ao contêiner
- 10Projetar movimento, assinatura e narrativas por rolagem
- 11Preparar imagens, ícones e vídeo para a web