1. O Que E px e Quando Usar
Pixel (px) e a unidade absoluta mais comum no CSS. Em telas modernas com alto DPI (retina), um "pixel CSS" pode corresponder a multiplos pixels fisicos — mas logicamente, 1px sempre representa a mesma unidade visual independente da tela.
Use px para: bordas (border: 1px solid), sombras (box-shadow), posicionamento absoluto onde a precisao importa, e tamanhos de icones fixos.
2. O Que E rem e Como Funciona
rem (root em) e uma unidade relativa ao font-size do elemento raiz, ou seja, do elemento <html>. O valor padrao do navegador e 16px, entao 1rem = 16px por padrao.
A grande vantagem e a acessibilidade: usuarios que configuram um tamanho de fonte maior no navegador fazem com que todos os elementos em rem se adaptem proporcionalmente. Isso nao acontece com px.
3. A Diferenca Entre rem e em
Enquanto rem e sempre relativo ao <html>, em e relativo ao font-size do elemento pai imediato. Isso cria o problema do "compounding" (efeito cascata): se um elemento pai tem font-size: 1.2em e um filho tambem tem 1.2em, o filho tera na pratica 1.44em em relacao ao root.
Use em para: padding e margin dentro de componentes onde voce quer que o espacamento acompanhe o tamanho do texto local. Use rem para: font-sizes globais, espacamentos do layout, e qualquer valor que deve ser previsivel em todo o sistema.
"Como regra geral: rem para o sistema de design, em para espacamentos internos de componentes autonomos."
4. A Formula de Conversao
A conversao e simples e direta:
- px para rem: rem = px / font-size-base
- rem para px: px = rem * font-size-base
Com base 16px: 24px = 24/16 = 1.5rem. Com base 10px (tecnica 62.5%): 24px = 24/10 = 2.4rem. A tecnica 62.5% consiste em definir font-size: 62.5% no html, fazendo 1rem = 10px, o que simplifica a matematica mental.
5. Boas Praticas de Unidades CSS
- Use rem para font-size, padding, margin, gap e border-radius
- Use px apenas para bordas finas (1px) e sombras
- Nunca defina font-size em px no body — isso quebra a acessibilidade do navegador
- Em design systems, defina tokens de espaco em rem para garantir escalabilidade
- Use a tecnica 62.5% apenas se o projeto inteiro adota — nunca misture com base 16px
6. Perguntas Frequentes
Devo sempre converter todos os px para rem?
Nao. Bordas de 1px, box-shadow e outline geralmente ficam bem em px. O importante e que font-size, padding e margin estejam em rem para respeitar as preferencias de acessibilidade do usuario.
Tailwind CSS usa rem?
Sim. O sistema de espacamento do Tailwind usa rem com base 16px. Por exemplo, p-4 = padding: 1rem = 16px na base padrao.
rem funciona em media queries?
Sim, mas com um detalhe: em media queries, rem e baseado no font-size padrao do navegador (16px), nao no font-size definido no html via CSS. Isso torna as media queries em rem previsíveis e independentes de customizacoes.