Pular para o conteúdo
Cursos

DevClub

LógicaFront-endBack-endMobile

IA Club

IA na prática
Estudar programaçãoEstudar IA

Aula 2 de 6

Construa ritmo, cor e tipografia com tokens utilitários

Use spacing, tamanho, cor e tipografia para montar a primeira seção de produto sem números aleatórios nem contraste decidido apenas pelo olhar.

30 minutos · leitura + prática · nível iniciante

Ao terminar esta aula, você vai conseguir

  • Aplicar a escala de spacing com intenção
  • Criar hierarquia tipográfica legível
  • Escolher pares de cor com contraste suficiente

Uma interface começa a parecer sistema quando as distâncias e a tipografia repetem uma lógica. Nesta aula, a seção de preço da clínica deixa de usar 13px, 19px e 27px escolhidos no olho. Ela passa a trabalhar com uma régua curta e pares de cor medidos.

p-4 e gap-4 usam a mesma base, mas cumprem funções diferentes. Padding cria respiro dentro da caixa; gap separa filhos de um container flex ou grid. Pense numa caixa de envio: padding é o material entre produto e parede; gap é o corredor entre caixas numa prateleira. A comparação não explica margin auto nem posicionamento, portanto volte aos nomes técnicos depois dela.

Comece pelo container:

html
<article class="flex flex-col gap-4 rounded-xl bg-white p-6 shadow-lg">
  <h2 class="text-2xl font-bold text-slate-900">Plano Essencial</h2>
  <p class="max-w-prose leading-7 text-slate-600">Agenda e lembretes.</p>
</article>

Uma classe de tamanho como text-2xl carrega tamanho e line-height padrão. Ao somar leading-7 ao parágrafo, você substitui a altura de linha com intenção. Não aplique leading-none a texto que pode quebrar: o componente precisa suportar zoom e uma descrição maior.

Cor é uma relação. text-cyan-600 não é automaticamente legível sobre branco só porque parece escuro. Famílias diferentes têm luminosidades diferentes no mesmo passo. Para texto normal, procure razão de pelo menos 4,5:1; para componentes, teste também foco, disabled e modo escuro.

No laboratório, o CSS já representa um pequeno resultado compilado. Alterar gap-2 para gap-6 isola o ritmo do grupo. Alterar p-4 para p-8 isola o respiro da superfície. Tente prever o efeito antes de cada troca. A previsão obriga você a ler o nome, não apenas reagir à tela.

Valor arbitrário como p-[13px] é válido para integrar uma medida legada. Ele não deve virar uma régua paralela. Se o mesmo 13px reaparece em três lugares, promova a decisão a token com nome e explique por que o sistema precisa dela.

Use largura máxima para manter leitura confortável. max-w-prose limita a linha em caracteres, enquanto w-full permite ocupar o espaço até esse teto. Num título, text-balance pode distribuir palavras entre linhas; num parágrafo longo, prefira fluxo natural ou text-pretty.

O erro mais comum desta etapa é compensar todo problema com spacing. Um texto que estoura dentro de Flexbox pode precisar de min-w-0, não menos padding. Um botão desalinhado pode estar no eixo errado, não com margin errada. Antes de trocar número, identifique a propriedade CSS que deveria mudar.

Você conclui quando o cartão possui hierarquia visível sem depender apenas de cor: título maior e mais forte, descrição legível e ação reconhecível. Liste as utilities por responsabilidade — espaço interno, intervalo, tipografia e cor. Essa lista será a base para transformar valores repetidos em tema próprio na última metade do curso.

Laboratório ao vivo

Cartão com ritmo e hierarquia

O CSS representa utilities já compiladas. Compare gap-2 e gap-6, p-4 e p-8, depois ajuste título e texto sem remover o foco do botão.

Pronto para testar
Resultado

Pare e pense

Por que gap costuma ser melhor que margin para separar irmãos num Flexbox?

Escolha uma resposta
Missão da aula

Faça sem copiar

Crie um cartão com duas densidades, confirme contraste de texto e entregue uma captura em 320px sem corte, junto da lista de tokens usados.

Fontes para consultar

Terminou a missão?

Marque apenas quando você conseguir explicar o conceito e concluir o desafio. O progresso fica salvo somente neste navegador.

Próxima: Componha a página com Flexbox e Grid sem margens mágicas →