Lição 2

px, rem e em

Escolha a unidade certa para handoff de design, escala de componentes e tipografia aninhada.

Essas três unidades aparecem em quase todo codebase frontend. Em exemplos pequenos parecem intercambiáveis, mas em componentes reais se comportam de forma diferente.

px: o padrão do handoff de design

px é unidade absoluta em CSS. 16px significa dezesseis pixels CSS, independente do font-size do pai.

Use px quando:

  • Borda fixa, sombra ou divisor de 1px
  • Canvas, traço SVG ou assets pixel-perfect
  • Spec pontual onde tokens em rem ainda não existem

Evite px para toda a tipografia se o design system espera escala em rem.

rem: relativo ao elemento raiz

1rem equivale ao font-size computado do elemento raiz (html), em geral 16px por padrão.

html {
  font-size: 16px;
}

.title {
  font-size: 1.5rem; /* 24px */
}

Use rem quando:

  • Criar tokens de design para font-size, espaçamento e radius
  • Quiser que tamanhos escalem se o projeto mudar o font-size da raiz
  • Precisar de valores consistentes entre componentes não relacionados

em: relativo ao font-size do elemento atual

1em equivale ao font-size computado do próprio elemento (ou do pai em alguns casos de herança, como padding).

.button {
  font-size: 1rem;
  padding: 0.75em 1.25em;
}

Aqui o padding escala automaticamente com o font-size do botão.

Use em quando:

  • Espaçamento deve seguir a tipografia local dentro do componente
  • Ícones ou badges devem escalar com o texto próximo
  • Você quer comportamento de tamanho aninhado de propósito

Comparação rápida

UnidadeMelhor paraCuidado
pxBordas, assets precisosNão escala com configurações da raiz
remTokens globais, tipografiaAssume font-size estável na raiz
emRitmo interno do componenteCompõe em texto muito aninhado

Erro comum: misturar contextos

O designer passa corpo em 20px. Você escreve 20px no CSS. Depois a equipe adota html { font-size: 62.5%; } para facilitar conta em rem, e seus px não alinham mais com os tokens rem.

Fluxo melhor: converter px para rem uma vez, guardar tokens e reutilizar.

Resumo

Use px para detalhes físicos fixos, rem para tokens do sistema e em para tamanhos que devem seguir o texto local.

Converta px de design para rem no Conversor de unidades CSS / Gerador clamp e defina o font-size da raiz do projeto antes de copiar valores.

Voltar à visão geral do curso