Módulo 2 · 3 de 9

CSS: o estilo que transforma estrutura em design

Leitura: ~4 min

Você acabou de ver que o HTML define o que existe na página. Agora, pense: se tudo que existisse fosse HTML puro, a web seria uma lista de textos pretos em fundo branco, sem espaçamento, sem cor, sem personalidade. É o CSS que transforma essa estrutura crua no produto visual que o usuário vê, e que você projetou.

O que é CSS

CSS significa Cascading Style Sheets, Folhas de Estilo em Cascata. É a tecnologia que controla como as coisas parecem na tela. Cores, tipografia, espaçamentos, sombras, cantos arredondados, gradientes, posicionamento, tudo isso é CSS.

O CSS funciona com propriedades e valores. Você seleciona um elemento e diz como ele deve parecer:

.botao-primario {
  background-color: #3b82f6;
  color: white;
  padding: 12px 24px;
  border-radius: 8px;
  font-size: 16px;
}

Parece familiar? Deveria. Isso é essencialmente o mesmo que você faz no painel de propriedades do Figma: define a cor de fundo, a cor do texto, o padding, o arredondamento de borda. A diferença é que no Figma você clica. No CSS, você escreve. Mas os conceitos são os mesmos.

Selectors: dizendo ao CSS o que estilizar

Para aplicar um estilo, o CSS precisa saber a qual elemento esse estilo se aplica. Ele faz isso com seletores. Os mais comuns:

  • h1 : seleciona todos os títulos de nível 1 na página
  • .botao-primario : seleciona elementos com a classe "botao-primario" (o nome no CSS precisa ser idêntico ao do HTML, letra por letra; por isso, por convenção, nomes de classe não usam acentos)
  • #header : seleciona o elemento com o ID "header" (único na página)

Para o designer, o que importa saber: quando o dev diz que "mudou o CSS do componente", ele está falando de um seletor específico. E quando algo no produto não parece como você projetou, provavelmente é um problema de propriedade CSS, algo que você pode investigar no DevTools.

O Box Model: como o navegador vê cada elemento

Todo elemento HTML é uma caixa retangular. E essa caixa tem quatro camadas, de dentro para fora:

margin border padding content Cada elemento é uma caixa com quatro camadas.
O CSS Box Model: content (conteúdo), padding (respiro interno), border (contorno) e margin (espaço externo).
  • Content : o conteúdo em si (texto, imagem)
  • Padding : o espaço interno entre o conteúdo e a borda. No Figma, é o padding do Auto Layout.
  • Border : a borda ao redor do elemento. Pode ser visível ou não.
  • Margin : o espaço externo entre esse elemento e os vizinhos, que empurra quem está em volta para longe. (O espaçamento entre itens de um Auto Layout não é margin: ele vira a propriedade gap do Flexbox, como você vê logo abaixo.)

Quando você define padding: 16px no Figma, está controlando a mesma propriedade que o dev vai usar no CSS. Quando define gap: 12px entre itens de um Auto Layout, o dev vai traduzir isso para gap: 12px no CSS. Os nomes são literalmente os mesmos.

Auto Layout do Figma = Flexbox (e Grid) do CSS

Esse é um dos pontos mais importantes para designers. O Auto Layout do Figma foi inspirado diretamente no CSS Flexbox: nos fluxos horizontal e vertical, as propriedades se correspondem quase uma a uma:

  • Direção (horizontal/vertical) → flex-direction: row ou column
  • Gap entre itens → gap
  • Padding → padding
  • Alinhamento → align-items e justify-content
  • "Preencher container" (Fill) → flex: 1
  • "Ajustar ao conteúdo" (Hug) → tamanho automático (padrão do Flexbox)

Quando você entende essa correspondência, fica muito mais fácil conversar com o dev sobre layout. Em vez de dizer "os itens deveriam estar centralizados", você pode dizer "o align-items deveria ser center". O dev vai saber exatamente o que mudar.

Existe também o CSS Grid, ideal para layouts de duas dimensões, quando você precisa alinhar elementos tanto na horizontal quanto na vertical, como um grid de cards ou uma tabela de preços. O Flexbox é unidimensional (uma direção por vez), o Grid é bidimensional. E isso também existe no Figma: desde 2025, o Auto Layout tem um terceiro fluxo, o Grid, que corresponde ao CSS Grid. Quando você monta um layout nesse fluxo, o Dev Mode já mostra o código como CSS Grid, com colunas e linhas.

CSS Variables: um preview dos design tokens

Imagine que o botão primário do seu produto usa a cor #3b82f6. Essa cor aparece nos botões, nos links, nos ícones ativos, nos cabeçalhos de seção. Agora imagine que a marca decide mudar essa cor. Se o dev usou o valor HEX solto em cada lugar, vai ter que encontrar e substituir dezenas de ocorrências.

As CSS Variables (ou Custom Properties) resolvem isso. Em vez de usar o valor direto, o dev define uma variável:

:root {
  --color-accent: #3b82f6;
}

.botao-primario {
  background-color: var(--color-accent);
}

Se a cor muda, muda em um lugar só, na definição da variável, e reflete em todo o produto automaticamente. Isso soa familiar? Deveria. No Figma, são as Variables. No código, são as CSS Variables. E quando o time usa os mesmos nomes nos dois lugares, o Figma e o código falam a mesma língua.

CSS Variables são a versão "código" dos Design Tokens. No Módulo 4, vamos aprofundar esse conceito →

Checagem rápida

Sem nota, sem pressão. Responda de cabeça e depois abra para conferir.

Um dev comenta que "mudou o CSS do .botao-primario" e você não sabe a que ele se refere. O que é esse .botao-primario, na prática?

É um seletor: a parte que diz ao CSS a qual elemento o estilo se aplica. O .botao-primario alcança todos os elementos que têm a classe "botao-primario" no HTML. Ou seja, ele mexeu na aparência de todos os botões primários de uma vez, não em um botão específico.

Você montou um card no Figma com Auto Layout: 12px de espaço entre os itens, 16px de padding e itens centralizados. Como cada uma dessas três decisões chega no CSS?

Quase uma para uma. O espaço entre os itens vira gap: 12px, o padding vira padding: 16px (o mesmo nome nos dois lados) e "centralizar" vira align-items: center. O Auto Layout foi inspirado no Flexbox, então dá para conversar com o dev nos termos exatos do código em vez de descrever o efeito.