Converta píxeis em rem com qualquer base

Última revisão do conteúdo:

Com a predefinição do navegador, 24 píxeis são 1,5rem e 14 píxeis são 0,875rem. Escreva a medida da maqueta, ajuste o tamanho de letra base e leve o resultado diretamente para a folha de estilos.

px
rem
para
PUBLICIDADE

Para que serve converter píxeis em rem?

O píxel passa a rem com uma única divisão: o número de píxeis a dividir pelo tamanho de letra base. Com a predefinição do navegador essa base vale 16 px, pelo que 24 píxeis dão 1,5rem e 14 píxeis dão 0,875rem. A unidade rem refere-se ao tamanho de texto do elemento html, a raiz do documento [1].

É o sentido mais frequente no dia a dia. A maqueta chega com medidas em píxeis, porque é assim que os programas de design contam, e a folha de estilos escreve-se em rem para que o layout responda às definições de quem lê.

O resultado traz quatro casas decimais, porque com base de 16 px um único píxel vale exatamente 0,0625rem e os tamanhos de texto produzem números como 0,875 ou 1,125.

Mais abaixo encontra uma tabela com 30 valores em três bases, como automatizar a conversão dentro do projeto e uma revisão de propriedades CSS com a resposta sobre quais passar a rem. O caminho inverso cabe ao conversor de rem para píxeis.

Como calcular píxeis em rem à mão? Fórmula e exemplo

A fórmula tem uma só operação: rem = píxeis ÷ tamanho de letra base. É a inversa da multiplicação que transforma rem em píxeis.

Exemplo com um espaçamento de 20 px: com base de 16 sai 20 ÷ 16 = 1,25rem. Esse mesmo valor com a base de 10 px da técnica dos 62,5% dá 2rem, porque dividir por dez faz-se de cabeça.

As medidas de uma maqueta costumam dar frações: 18 píxeis são 1,125rem, 30 píxeis são 1,875rem e 22 píxeis são 1,375rem. As três são exatas e a maioria dos design systems guarda-as assim, pelo que as escreve tal e qual na folha de estilos.

A unidade em calcula-se da mesma forma, dividindo pelo tamanho de letra do elemento pai em vez do da raiz: esse cálculo cabe ao conversor de píxeis para em. Se a medida seguir para o papel, o mesmo ficheiro cabe ao conversor de píxeis para polegadas.

Quantos rem valem os valores mais comuns em píxeis?

Valor em píxeisBase 16 px (predefinida)Base 10 px (62,5%)Base 20 px (texto ampliado)
1 px0,0625 rem0,1 rem0,05 rem
2 px0,125 rem0,2 rem0,1 rem
4 px0,25 rem0,4 rem0,2 rem
6 px0,375 rem0,6 rem0,3 rem
8 px0,5 rem0,8 rem0,4 rem
10 px0,625 rem1 rem0,5 rem
12 px0,75 rem1,2 rem0,6 rem
14 px0,875 rem1,4 rem0,7 rem
16 px1 rem1,6 rem0,8 rem
18 px1,125 rem1,8 rem0,9 rem
20 px1,25 rem2 rem1 rem
22 px1,375 rem2,2 rem1,1 rem
24 px1,5 rem2,4 rem1,2 rem
28 px1,75 rem2,8 rem1,4 rem
30 px1,875 rem3 rem1,5 rem
32 px2 rem3,2 rem1,6 rem
36 px2,25 rem3,6 rem1,8 rem
40 px2,5 rem4 rem2 rem
44 px2,75 rem4,4 rem2,2 rem
48 px3 rem4,8 rem2,4 rem
56 px3,5 rem5,6 rem2,8 rem
60 px3,75 rem6 rem3 rem
64 px4 rem6,4 rem3,2 rem
72 px4,5 rem7,2 rem3,6 rem
80 px5 rem8 rem4 rem
96 px6 rem9,6 rem4,8 rem
128 px8 rem12,8 rem6,4 rem
160 px10 rem16 rem8 rem
192 px12 rem19,2 rem9,6 rem
256 px16 rem25,6 rem12,8 rem

As três bases cobrem três situações: 16 px é a predefinição do navegador, 10 px vem da técnica dos 62,5% e 20 px é um número típico em quem ampliou o texto nas suas definições.

PUBLICIDADE

Como converter píxeis em rem automaticamente num projeto?

Para um valor isolado basta o conversor acima. Para uma folha de estilos inteira o cálculo passa para uma ferramenta que o executa sempre que o projeto é compilado.

Num pré-processador escreve uma função que divide o número pela base. Em Sass fica assim: @function rem($px) { @return math.div($px, 16) * 1rem; }, e depois na regra coloca padding: rem(24) e obtém 1.5rem. A base passa a viver num único sítio e muda-se uma vez.

A segunda via trabalha sobre a folha já terminada e deixa intacta a sua forma de escrever. O plugin postcss-pxtorem, ligado ao passo de compilação, percorre o ficheiro de saída e troca os píxeis por rem conforme a base configurada. Nos últimos 30 dias o registo npm contabilizou mais de 870.000 transferências [2].

A terceira via são as variáveis CSS. Escreve --space-6: 1.5rem uma vez na folha e depois invoca o nome em vez do número. A conversão passa a acontecer uma só vez, ao definir a escala, e não em cada regra.

Que propriedades passar a rem e quais deixar em píxeis?

Propriedade CSSPassar a rem?Porquê
font-sizeSimO centro de todo o assunto: o tamanho de texto deve responder à definição do navegador
padding e marginSimO espaço à volta do texto deve crescer com ele, senão um corpo maior fica apertado
largura de uma coluna de textoSimO comprimento da linha mede-se em caracteres, pelo que a largura acompanha o tamanho de texto
line-heightNão, sem unidadeUm multiplicador nu como 1.5 herda-se bem em qualquer aninhamento
border-widthNãoUm filete deve continuar a ser um filete, seja qual for o tamanho de texto
box-shadowNãoA sombra é um efeito gráfico sem relação com o tamanho do texto
border-radiusNormalmente nãoO raio descreve a forma do elemento, não o seu conteúdo
pontos de rutura das media queriesSim, mas em emDentro de uma media query o navegador conta a partir do tamanho de texto predefinido e não do elemento html, pelo que o em se comporta de forma previsível <a class="source-ref" href="#zrodlo-3">[3]</a>

Reescrever uma folha de estilos existente não obriga a converter tudo. A troca de píxeis por rem compensa onde uma medida deva crescer junto com o texto de quem lê.

O píxel e o rem lado a lado

Característicapxrem
Ponto de referênciaNenhum, é um valor absolutoTamanho de letra do elemento html
Valor predefinido1 px = 1/96 de polegada1rem = 16 px
Reação às definições de quem lêMantém-se igualEscala com elas
Onde é indicadoMaquetas, programas de design, ficheiros de imagemFolhas de estilos, design systems
Uso habitualContornos, sombras, filetesTamanhos de texto, espaçamentos, larguras
AutomatizaçãoValor escrito diretamenteFunção no pré-processador ou plugin na compilação
PUBLICIDADE

Quando vai precisar desta conversão?

  1. Passar a maqueta a código

    O design dá 24 px de espaçamento e a folha de estilos deve receber 1,5rem. É o percurso mais frequente no trabalho diário com interfaces.
  2. Fixar a escala do projeto

    Em vez de converter em cada regra, define uma vez variáveis CSS ou uma função no pré-processador e invoca os nomes.
  3. Reescrever uma folha antiga

    Na migração de píxeis para rem converte tamanhos de texto e espaçamentos, enquanto contornos e sombras ficam como estão.
  4. Verificação de acessibilidade

    Os valores escritos em rem crescem com a definição de quem lê, que é o que pede o critério WCAG 1.4.4 sobre ampliar o texto até 200% [4].

Converter Pixels para outras unidades

Explorar outros conversores de unidades

Fontes

  1. CSS Values and Units Module Level 4W3C
  2. postcss-pxtoremnpm
  3. CSS values and units – lengthMDN Web Docs
  4. Understanding SC 1.4.4: Resize Text (WCAG 2.2)W3C

Todos os valores das tabelas foram calculados a partir das definições das unidades e verificados aritmeticamente antes da publicação. Os dados históricos e os nomes das unidades locais assentam nas fontes indicadas acima.

Última revisão do conteúdo: · escrito e verificado pela equipa Arteon

Perguntas frequentes

Quantos rem é 1 píxel?

Com a base predefinida de 16 px um píxel são 0,0625rem. Com a base de 10 px da técnica dos 62,5% esse mesmo píxel dá 0,1rem, e com o texto ampliado a 20 px dá 0,05rem.

Como se convertem px em rem?

Divida o número de píxeis pelo tamanho de letra base. Com os 16 px predefinidos sai 24 ÷ 16 = 1,5rem. O conversor acima faz essa divisão para qualquer base de 1 a 100 px.

Quantos rem são 24 px?

1,5rem com base de 16 px, 2,4rem com base de 10 px e 1,2rem com base de 20 px. O valor 1,5rem é um tamanho comum de título de secção.

Quantos rem são 14 px?

0,875rem com a base predefinida de 16 px. Este valor costuma aparecer nas etiquetas dos campos e no texto de ajuda que fica por baixo.

Quantos rem são 20 px?

1,25rem com base de 16 px. Com base de 10 px saem 2rem redondos, o que é um argumento a favor da técnica dos 62,5% em projetos com uma escala de espaçamento ampla.

Quantos rem são 12 px?

0,75rem com base de 16 px. É o menor tamanho de texto em uso corrente nas interfaces: abaixo disso a leitura torna-se incómoda.

Quantos rem são 40 px?

2,5rem com base de 16 px, 4rem com base de 10 px e 2rem com base de 20 px. Valores desta ordem descrevem espaçamentos entre secções em vez de tamanhos de texto.

Quantos rem são 80 px?

5rem com a base predefinida de 16 px. Com base de 10 px saem 8rem e com 20 px saem 4rem.

É preciso arredondar o resultado em rem?

Valores como 0,875 ou 1,875rem escrevem-se tal e qual, e é assim que a maioria dos design systems os guarda. O navegador calcula-os com exatidão, ao passo que arredondar para 0,88rem deslocaria o tamanho de texto uma fração de píxel.

Como converter píxeis em rem automaticamente?

Num pré-processador escreve uma função que divide pela base e depois coloca rem(24) em vez de um número. Sobre uma folha já terminada trata disso o plugin postcss-pxtorem no passo de compilação. A terceira via são as variáveis CSS com a escala definida uma vez.

É preciso passar toda a folha de estilos a rem?

Os tamanhos de texto, os espaçamentos e as larguras de coluna sim, porque devem crescer com a definição de quem lê. Contornos, sombras e filetes ficam em píxeis, e a altura de linha escreve-se sem unidade, como simples multiplicador.

Que unidade convém nas media queries?

O em. Dentro de uma media query o navegador resolve as unidades relativas face ao tamanho de texto predefinido e não face ao valor colocado no elemento html, pelo que um ponto de rutura escrito em em se comporta de forma previsível mesmo se o projeto usar a técnica dos 62,5%.

px para rem – Arteon

Ajude-nos a melhorar as nossas ferramentas

Tem uma ideia para uma função, encontrou um erro ou quer propor outra ferramenta? Escreva-nos, respondemos em menos de 24 horas.

PUBLICIDADE