Voltar para Recursos
Biblioteca134 itens

Vocabulário de frontend para designers

134 termos de CSS, layout, acessibilidade e rendering organizados por camada do problema, com exemplos de prompt pra dirigir agentes de código.

Agente de código só conserta o que você consegue nomear. "Tá estranho no mobile" não vira instrução; "overflow horizontal em 375px" vira. A diferença entre as duas frases é vocabulário, e é isso que esta biblioteca entrega.

Os termos estão organizados por camada do defeito, não por ordem alfabética. Quando uma tela gerada por IA quebra, o problema mora numa destas camadas: caixa, layout, responsividade, cascata, tipografia, semântica, rendering, componente ou motion. Nomear a camada certa é metade do conserto. Cada seção abre com o sintoma típico, lista os termos e fecha com um par de pedidos: o vago, que não funciona, e o preciso, que funciona.

Duas ideias daqui vêm da newsletter AI-Native Designers Garden, da Evangeline (jun/2026): agente só age sobre o que você consegue nomear, e o trabalho é nomear a camada antes de pedir o conserto. O resto é meu: a taxonomia das 10 camadas, a seleção dos termos e os exemplos de prompt, calibrados nas regras que aplico neste próprio site. Pra definição canônica de cada termo, MDN e web.dev.

Publicado em 11 de junho de 2026. Reviso a cada 6 semanas.

Caixa e espaço #

Sintomas: "tá tudo colado", "vazou da tela", "a imagem ficou esticada", "a página pula quando carrega".

TermoO que éUse quando
Box modelTodo elemento é uma caixa: conteúdo, padding, borda e margin.A raiz da maioria dos problemas de espaçamento. Comece por aqui.
Box-sizingDefine se padding e borda entram na conta da largura.A caixa ficou maior do que você pediu; border-box resolve.
PaddingRespiro interno, entre o conteúdo e a borda.O texto encosta na borda do card.
MarginEspaço externo, entre a caixa e as vizinhas.Dois blocos colados um no outro.
Margin collapseMargens verticais vizinhas se fundem em vez de somar. Só no fluxo block: flex e grid não colapsam margem.O espaço entre blocos ficou menor do que a soma esperada.
BorderO traço da caixa. Ocupa espaço no layout; sombra não.Adicionar borda mexeu no alinhamento.
GapEspaço entre filhos de flex ou grid, num valor só.Prefira gap a margin avulsa em cada item: sem sobra na ponta.
Width / heightTamanho fixo do elemento.Quase sempre a causa de overflow no mobile. Desconfie de valor fixo.
Min-width / max-widthPiso e teto de largura.max-width segura parágrafo largo demais; min-width: 0 libera truncamento em flex.
Min-height / max-heightPiso e teto de altura.Card, modal e empty state que precisam de altura previsível.
OverflowO que acontece quando o conteúdo não cabe: vaza, corta ou rola.Qualquer coisa "vazando" ou barra de rolagem inesperada.
Aspect-ratioProporção fixa entre largura e altura.Reservar o espaço da imagem antes de ela carregar.
Object-fitComo imagem ou vídeo preenche a moldura: cover corta, contain mostra inteiro.Foto esticada ou distorcida dentro do container.
DisplayComo o elemento participa do layout: block, inline, flex, grid, none.O elemento não se comporta como você esperava no fluxo.
PositionComo o elemento é posicionado: static, relative, absolute, fixed, sticky.Sobreposição, header fixo, badge ancorada no canto.

Pedido que não funciona: "a foto tá esticada e a página pula quando carrega."

Pedido que funciona: "aplica object-fit: cover na imagem e reserva o espaço dela com aspect-ratio no container, pra eliminar o layout shift."

Flexbox: layout em uma direção #

Sintomas: botão espremido, ícone minúsculo, texto longo empurrando o CTA pra fora da tela.

TermoO que éUse quando
Flex containerO pai com display: flex.Organizar itens numa direção só: linha ou coluna.
Flex itemCada filho direto do container.As propriedades de crescer e encolher vivem no item, não no pai.
Main axisA direção principal do layout.Alinhar "ao longo" da linha ou coluna.
Cross axisA direção perpendicular à principal.Alinhar "através": centralizar verticalmente itens numa linha.
Justify-contentAlinhamento no eixo principal.Distribuir, centralizar ou empurrar itens pras pontas.
Align-itemsAlinhamento no eixo cruzado.Ícone desalinhado do texto na mesma linha.
Flex-growSe o item pode crescer pra absorver espaço sobrando.Campo de busca que deve ocupar o resto da barra.
Flex-shrinkSe o item pode encolher quando falta espaço.flex-shrink: 0 protege ícone e botão de serem espremidos.
Flex-basisTamanho inicial do item, antes de crescer ou encolher.Coluna que parte de um tamanho previsível mas pode colapsar.
Flex-wrapSe os itens quebram pra outra linha.Tags e chips que precisam quebrar em vez de vazar.
Min-width: 0 em flexDestrava o truncamento dentro de linha flex.Sem isso, texto longo recusa encolher e empurra o resto pra fora.
OrderReordena visualmente sem mudar o HTML.Com muito cuidado: a ordem de teclado e leitor de tela não acompanha.

Pedido que não funciona: "o nome comprido tá quebrando a linha da tabela."

Pedido que funciona: "nessa linha, a badge de status e a data têm flex-shrink: 0; o nome do arquivo recebe min-width: 0 e trunca com reticências em uma linha, em vez de empurrar as outras células."

Grid: layout em duas dimensões #

Sintomas: colunas com proporção imprevisível, dashboard que desmonta, card órfão na última linha.

TermoO que éUse quando
Grid containerO pai com display: grid.Organizar em linhas E colunas ao mesmo tempo.
Grid itemCada filho direto do grid.Posicionar e expandir itens por trilha.
Grid-template-columnsDefine as colunas e seus tamanhos.O esqueleto de qualquer dashboard ou galeria.
Grid-template-rowsDefine as linhas e seus tamanhos.Layouts de altura controlada, como hero + conteúdo + footer.
FrFração do espaço disponível. 2fr 1fr cria 2 colunas na proporção 2:1.Proporção entre colunas sem calcular pixel.
Minmax()Trilha com mínimo e máximo.Coluna que nunca fica estreita demais nem larga demais.
Auto-fit / auto-fillColunas que se criam e somem conforme o espaço.Galeria responsiva sem escrever um breakpoint por largura.
Grid areaRegiões nomeadas do layout.Reorganizar o layout inteiro por breakpoint mudando só o mapa.
SpanQuantas trilhas um item ocupa.Card de destaque que ocupa 2 colunas.

Pedido que não funciona: "quero uma galeria de cards responsiva."

Pedido que funciona: "grid com repeat(auto-fit, minmax(260px, 1fr)) e gap de 24px: as colunas se criam e somem conforme o espaço, sem nenhum breakpoint escrito à mão."

Responsividade #

Sintomas: "no celular tá quebrado", layout que só funciona na largura do seu monitor.

TermoO que éUse quando
ViewportA área visível do browser.A referência de toda media query.
BreakpointLargura em que o layout muda.Definir onde o grid colapsa pra uma coluna.
Media queryRegra de CSS condicionada ao viewport.O mecanismo clássico de adaptação por tamanho de tela.
Container queryEstilo condicionado ao tamanho do container, não da tela.O mesmo componente aparece em sidebar estreita e em área larga.
Fluid layoutLayout que adapta continuamente, sem depender só de saltos.Evitar o "pulo" visível entre breakpoints.
Clamp()Valor fluido com piso e teto.Base de tipografia e espaçamento fluidos.
Intrinsic sizingDeixar o conteúdo influenciar o tamanho (min-content, fit-content).Botões e chips que se ajustam ao próprio texto.
Content reflowComo o conteúdo se rearranja quando o espaço muda.WCAG exige a página funcional a 320px sem rolagem horizontal, salvo conteúdo que pede largura, como tabela e mapa.
Mobile-firstEstilo base pro menor viewport, adições pra cima.Disciplina o agente a não tratar mobile como retrofit.

Pedido que não funciona: "no celular tá quebrado."

Pedido que funciona: "testa a 375px e procura overflow horizontal. Acha o elemento com largura fixa estourando o viewport, troca por max-width: 100% e colapsa o grid pra 1 coluna abaixo de 768px."

Cascata e especificidade #

Sintomas: "mudei a cor e nada aconteceu", o agente empilhando !important em vez de achar a regra certa.

TermoO que éUse quando
CascadeComo o browser decide qual regra vence.A mudança não aplicou: alguma outra regra tá vencendo.
SpecificityO peso do seletor na disputa.O agente fica adicionando override em vez de corrigir a origem.
InheritancePropriedades que descem do pai, como cor e fonte.Mudar no lugar certo uma vez, em vez de em 20 elementos.
Custom propertyVariável de CSS, tipo --color-primary.É como os design tokens chegam no browser.
!importantForça bruta que atropela a cascata.Cheiro de problema: a regra certa não foi encontrada. Peça a origem.
Stacking contextO sistema de camadas que explica por que z-index "não funciona".Subir z-index não resolve: transform, opacity e filter criam contexto novo, e o filho não escapa do contexto do pai.
Z-indexOrdem de empilhamento, válida só dentro do mesmo stacking context.Modal atrás do header, dropdown cortado.
Pseudo-classe de estado:hover, :focus-visible, :disabled, :active.Estados são CSS, não telas separadas no Figma.
Utility classClasse de propósito único, estilo Tailwind.Duas utilities conflitantes não se resolvem pela ordem no HTML; quem decide é a folha gerada.

Pedido que não funciona: "mudei o token e a cor continua errada."

Pedido que funciona: "abre o DevTools nesse título e me diz qual regra está vencendo a cascata e de onde ela vem. Corrige na origem dela. Se a sua solução tiver !important, é a solução errada."

Tipografia no browser #

Sintomas: "o texto tá apertado", "cansativo de ler", título quebrando com viúva, fonte piscando no carregamento.

TermoO que éUse quando
Font-sizeTamanho do texto.A última coisa a diminuir quando "não coube".
Font-weightPeso do traço.Hierarquia sem mudar tamanho.
Line-heightEspaço vertical entre linhas.A primeira suspeita quando o parágrafo parece denso.
Letter-spacingEspaço entre letras.Títulos grandes pedem tracking mais fechado.
MeasureLargura da linha de leitura.Entre 45 e 75 caracteres é a faixa confortável; acima disso o olho se perde.
RemUnidade baseada no font-size da raiz.Acompanha a preferência de tamanho de fonte do usuário, desde que a raiz não fixe px. Padrão pra fonte.
EmUnidade baseada na fonte do elemento atual.Padding que escala junto com o texto do botão.
Fluid typeTipografia que escala com o viewport via clamp().Título de hero que funciona de 320px a 1440px sem 5 breakpoints.
Text-wrap: balanceEquilibra as linhas de um título.Elimina a viúva, aquela palavra solta na última linha.
Line-clampCorta o texto com reticências depois de N linhas.Cards de lista com descrição de tamanho variável.
Fallback fontA fonte usada enquanto (ou se) a webfont não carrega.Escolher fallback com métricas parecidas reduz o pulo na troca.
FOITFlash de texto invisível durante o carregamento da fonte.Página carrega "sem texto" por um instante.
FOUTFlash de texto sem estilo: o fallback aparece e depois troca.O texto "pisca" trocando de fonte.
Font-displayA regra que escolhe entre FOIT e FOUT (swap, optional).Decidir qual dos dois males é menor pro seu caso.

Pedido que não funciona: "o texto tá cansativo de ler."

Pedido que funciona: "limita o parágrafo a 65ch de measure e sobe o line-height pra 1.6, usando a escala de tipo existente. Se ainda não couber, o problema é o layout, não a fonte."

Semântica e acessibilidade #

Sintomas: tela que parece certa mas não opera por teclado, leitor de tela anunciando "botão" sem nome, modal que engole o foco.

TermoO que éUse quando
Semantic HTMLO elemento certo pro papel certo.Div com onClick não é botão: não tem teclado, não tem foco, não tem nome.
LandmarkRegiões estruturais: header, nav, main, footer.Leitor de tela navega por elas. Toda página precisa de main.
Heading hierarchyh1 > h2 > h3, sem pular nível.É o sumário da página pra quem não vê.
Button vs linkBotão executa ação; link navega.Trocar um pelo outro quebra teclado, histórico e expectativa.
LabelTexto associado ao input de verdade, via for/id.Placeholder não é label: some quando o campo é preenchido.
Fieldset / legendAgrupa campos relacionados num formulário.Grupos de radio e checkbox precisam de pergunta anunciada.
Source orderA ordem dos elementos no HTML.Define a ordem de teclado e leitura. CSS não "conserta" HTML fora de ordem.
Accessible nameO nome que a tecnologia assistiva anuncia.Botão de ícone sem nome vira "botão" genérico no leitor de tela.
ARIAAtributos que adicionam semântica quando o HTML nativo não basta.Depois do HTML nativo, nunca antes. ARIA errado é pior que ARIA nenhum.
RoleO que o elemento declara ser.Componente custom que precisa se apresentar (tablist, dialog).
State (ARIA)A condição atual anunciada: aria-expanded, aria-selected.Acordeão e tab que mudam sem avisar quem não vê.
Focus stateA indicação visível de onde o teclado está.:focus-visible em todo interativo. Sem anel de foco, teclado navega às cegas.
Tab orderA sequência do Tab pelos elementos interativos.Tab pulando fora de ordem denuncia HTML fora de ordem.
Focus trapManter o foco dentro do modal enquanto aberto.E devolver ao elemento de origem quando fechar.
Keyboard navigationA interface inteira operável sem mouse.O teste mais barato de acessibilidade: solte o mouse e navegue.
Screen readerSoftware que lê estrutura e conteúdo da interface.O que valida se a semântica existe de verdade.
Contrast ratioRazão de contraste entre texto e fundo.4.5:1 pra texto normal e 3:1 pra texto grande no AA. Cinza claro em fundo branco reprova.
Target sizeÁrea clicável ou tocável do elemento.24px é o mínimo do WCAG 2.2 AA; 44px é o confortável no toque.
Reduced motionPreferência do usuário por menos animação.prefers-reduced-motion se respeita sempre, sem exceção.
Color-only communicationCor como único canal da informação.Erro "em vermelho" precisa de texto ou ícone junto.
Alt textAlternativa textual de imagem com significado.Descreve a função da imagem no contexto, não a aparência.
Decorative imageImagem que o leitor de tela deve ignorar.alt="" explícito, senão o leitor lê o nome do arquivo.
Error associationA mensagem de erro conectada ao campo.Via aria-describedby, não solta na tela longe do input.
Aria-hiddenEsconde o elemento da árvore de acessibilidade.Nunca pode conter elemento focável dentro: o foco entra e o usuário some.

Pedido que não funciona: "deixa acessível."

Pedido que funciona: "roda o axe e depois revisa na mão o que ele não pega: navega só com Tab e me diz onde o foco some, onde botão deveria ser link e se o erro do formulário é anunciado no campo. HTML semântico antes de qualquer ARIA."

Rendering e performance #

Sintomas: página que pula ao carregar, animação engasgada, interface que demora a reagir, tema que pisca.

TermoO que éUse quando
Layout (etapa)O browser calcula tamanho e posição de tudo.A etapa cara. Animar width ou height roda isso a cada frame.
PaintO browser pinta os pixels: texto, cor, sombra.Sombras e blurs grandes pesam aqui.
CompositeO browser combina camadas prontas na tela.Animações de transform e opacity vivem aqui, por isso são baratas.
ReflowRecálculo de layout depois de uma mudança.Inserir conteúdo acima do que já renderizou força reflow do resto.
Layout shiftConteúdo pulando de lugar depois de carregar.O usuário ia clicar e o botão mudou de lugar.
CLSCumulative Layout Shift, a métrica que pune o pulo.Abaixo de 0.1 é o alvo. Imagem sem dimensão é o vilão clássico.
LCPLargest Contentful Paint: quando o maior elemento visível carrega.A métrica de "a página chegou".
INPInteraction to Next Paint: quanto a interface demora pra reagir.Clique que parece ignorado, digitação com atraso.
Lazy loadingCarregar só quando precisa (loading="lazy").Nunca na imagem acima da dobra: atrasa o LCP dela. Hero carrega eager.
Render-blockingRecurso que segura a renderização da página.Scripts e fontes mal carregados seguram a primeira pintura.
SkeletonPlaceholder que reserva as dimensões finais do conteúdo.Skeleton de tamanho diferente do conteúdo final só move o pulo de lugar.
CSRRenderização no browser, via JavaScript.A tela nasce vazia e preenche depois.
SSRHTML montado no servidor.Conteúdo visível antes do JavaScript chegar.
Static renderingPáginas pré-geradas no build.O mais rápido pra conteúdo que não muda por requisição.
HydrationO JavaScript ligando interatividade no HTML do servidor.A tela aparece mas os botões ainda não respondem.
Hydration mismatchServidor e cliente renderizam coisas diferentes.Hora atual, window, tema do localStorage: pisca ou quebra no carregamento.
Server / client componentOnde o componente roda.window e localStorage só existem no cliente; no servidor, quebram.

Pedido que não funciona: "a página pula quando carrega."

Pedido que funciona: "dá dimensão a toda imagem (width/height ou aspect-ratio), confere se cada skeleton tem a mesma altura do conteúdo que substitui e proíbe qualquer coisa de entrar acima do que já renderizou. Mede o CLS antes e depois; alvo abaixo de 0.1."

Componentes, estado e tokens #

Sintomas: cinco botões quase iguais na mesma página, valor de cor solto no código, o agente criando do zero o que o sistema já tem.

TermoO que éUse quando
ComponentPeça reutilizável de UI.A unidade que o agente deveria reusar, não recriar.
PropsAs entradas que configuram a instância.O equivalente em código das component properties do Figma.
VariantVersão do componente: primary, ghost, destructive.Mapeia 1:1 com as variantes do Figma.
StateDado que muda com o tempo dentro do componente.Aberto, carregando, erro: estados, não cópias do componente.
Slot / childrenÁrea de conteúdo substituível dentro do componente.Card que aceita qualquer conteúdo sem virar 8 componentes.
CompositionMontar UI complexa combinando peças pequenas.A alternativa ao mega-componente de 40 props.
PrimitiveComponente de base, sem estilo ou quase.O que bibliotecas como Radix entregam: comportamento e a11y prontos.
Controlled / uncontrolledQuem manda no estado: o pai ou o próprio componente.Formulário que precisa validar e limpar campos de fora.
Re-renderA UI atualizando porque um dado mudou.Tela inteira repintando quando só um número mudou.
Design tokenDecisão de design nomeada: cor, espaçamento, raio, sombra.A ponte entre o Figma e o código.
Semantic tokenToken nomeado pelo papel, não pelo valor.surface-danger sobrevive ao rebrand; red-500 não.
Hardcoded valueValor solto no código, fora do sistema.O que o agente faz quando você não aponta o token.
One-offComponente ou estilo único que duplica o sistema.O modo de falha clássico de UI gerada por IA.
API surfaceO conjunto de props que o componente expõe.Menos é mais: cada prop nova é manutenção pra sempre.

Pedido que não funciona: "cria um botão novo pra essa tela."

Pedido que funciona: "antes de criar qualquer coisa, lista os componentes de botão que já existem no projeto. Usa o existente passando a variante e o estado por props, com os tokens do sistema. Botão one-off só se você me provar que a API atual não cobre o caso."

Motion #

Sintomas: animação que parece barata, tudo se mexendo ao mesmo tempo, scroll engasgando enquanto algo anima.

TermoO que éUse quando
DurationQuanto tempo a animação leva.Microinteração vive entre 150 e 300ms; transição de tela inteira pode passar disso.
DelayQuanto espera antes de começar.A base do stagger e da orquestração de entrada.
EasingA curva de aceleração do movimento.Linear parece robótico; curva certa parece físico.
Ease-outRápido no início, suave no fim.Entrada de elementos: chega rápido, assenta devagar.
Ease-in-outSuave nas duas pontas.Transições de estado e movimentos contínuos.
SpringMovimento com física, sem duração fixa.Interações que respondem a gesto, como arrastar e soltar.
StaggerFilhos animando em sequência com pequeno atraso.Lista de cards entrando: 50ms entre cada um, não tudo junto.
CSS transitionAnimação de um estado pro outro.Hover, foco, abrir e fechar: o caso comum, sem biblioteca.
KeyframesAnimação com etapas nomeadas.Movimento com mais de dois estados, como pulso ou shimmer.
TransformMover, escalar, rotacionar.Anima no composite, sem reflow. O canal certo pra movimento.
OpacityTransparência.O outro canal barato. Transform + opacity cobrem 90% do motion de UI.

Pedido que não funciona: "anima esse card bonito."

Pedido que funciona: "entrada com opacity + transform: translateY(8px), 200ms ease-out, stagger de 50ms entre cards. Nada de animar height. Com prefers-reduced-motion, desliga a translação e mantém só o fade."

Fontes #

Três origens, em ordem de peso: MDN e web.dev pra definição canônica de cada termo; as regras de qualidade que aplico neste site (gates de build, Lighthouse 100 e WCAG AA) pros exemplos de prompt; e a newsletter AI-Native Designers Garden, da Evangeline, de onde vêm a tese do vocabulário como alavanca e o gesto de nomear a camada antes do conserto.

#Vocabulário#Frontend#CSS#Acessibilidade#Design-to-code#IA#Design#Prompts

Feito comporThiago Xikota