1001Ferramentas
📐 Conversores

Conversor CSS px ↔ em

Converte entre pixels e em em relação ao font-size do contexto pai (padrão 16px). Diferente de rem (sempre :root).

Diferente de rem (sempre relativo ao :root), em é relativo ao pai imediato.

px, em e a conta que muda conforme o pai

A diferença entre px e em não é de unidade, é de referência. Um pixel é um valor absoluto no CSS. Um em vale o font-size do elemento pai — ou do próprio elemento, quando aplicado a propriedades que não sejam font-size. Como o navegador começa com 16px por padrão, 1em costuma dar 16px na raiz, mas basta um contêiner com fonte diferente para a mesma declaração render outro tamanho.

Aqui você informa o font-size de referência e converte nos dois sentidos: digite o valor em pixels para saber quantos em ele representa, ou o contrário. Deixando a base em 16, 24px viram 1.5em e 0.875em viram 14px. Trocando a base para 20, os mesmos 24px passam a valer 1.2em — que é justamente o efeito que pega desprevenido quem aninha componentes.

Vale distinguir em de rem. O rem sempre olha para a raiz do documento, ignorando os pais, e por isso não acumula: dois níveis de 0.9em multiplicam para 0.81, enquanto dois níveis de 0.9rem continuam valendo 0.9. A regra prática que evita dor de cabeça é usar rem para tamanho de fonte e espaçamento geral, e reservar em para o que deve escalar junto com o texto do próprio componente, como o padding de um botão.

Perguntas frequentes

Devo mesmo evitar px em font-size?
A preocupação antiga era que px ignorava o ajuste de tamanho de fonte do navegador. Isso mudou: os navegadores atuais aplicam o zoom de página sobre px normalmente. O que ainda vale é que quem configurou uma fonte padrão maior nas preferências do navegador é atendido por rem e não por px — um argumento de acessibilidade que continua de pé.
Por que meu 1em deu um valor diferente do esperado?
Quase sempre porque a referência não é a que você imaginou. Um em dentro de um elemento cujo pai já reduziu a fonte parte desse valor reduzido, não de 16px. Inspecione o elemento e veja o font-size computado do pai — é esse número que entra como base aqui.
Onde entra o pt?
pt é unidade de impressão: 1pt equivale a 1/72 de polegada, e no CSS 1pt corresponde a aproximadamente 1,333px. Ele faz sentido em folha de estilo para impressão; na tela, px, rem e em descrevem melhor o que acontece.

Ferramentas Relacionadas