ToolHub
View All Posts

Guia de conversão de unidades CSS: px, rem, em, vw, vh explicados

Escolher a unidade CSS correta é uma das decisiones mais impactantes ao escrever hojas de estilo. A unidade que elijas determina como se escalan os elementos em diferentes tamanhos de tela, como responden a as preferências do usuário (como a configuração do tamanho de fuente do navegador) e cuán previsível se comporta tua layout. No entanto, muitos desenvolvedores usam píxeles por defecto por costumbre, perdiendo a flexibilidade e os beneficios de acessibilidade que oferecem as unidades relativas. Esta guia cobre todas as unidades CSS principais, explica quando usar cada uma, muestra como convertir entre elas e proporciona melhores práticas para o design responsive moderno.

Compreendendo as categorías de unidades CSS

As unidades CSS se dividen em dois categorías principais: unidades absolutas e unidades relativas. As unidades absolutas têm um tamanho físico fijo, enquanto que as unidades relativas derivan seu valor calculado de outro ponto de referencia. Compreender esta distinção é fundamental para tomar decisiones informadas sobre as unidades.

Unidades absolutas

As unidades absolutas são medidas de tamanho fijo. A unidade absoluta mais utilizada em desenvolvimento web é o píxel (px). Outras unidades absolutas incluem pontos (pt), centímetros (cm), milímetros (mm) e pulgadas (in). Estas unidades se utilizan principalmente para hojas de estilo de impressão o quando necessitas medidas que no cambien segundo o contexto. Em CSS basado em tela, px é a única unidade absoluta que usarás com frequência.

Unidades relativas

As unidades relativas calculan seu valor final baseando-se em um valor de referencia. em é relativo ao tamanho de fuente do elemento actual, rem é relativo ao tamanho de fuente do elemento raíz, vw e vh são relativos a as dimensiones do viewport, e os percentagens são relativos ao elemento pai. As unidades relativas são a piedra angular do design responsive e acessível porque permitem que tua layout se adapte automaticamente a diferentes contextos.

Píxeles (px): A unidade de referencia

O píxel é a unidade CSS mais intuitiva porque se asigna diretamente a os píxeles de a tela (com algumas consideraciones sobre a relação de píxeles do dispositivo). Os valores px siempre são iguais independientemente do contexto, lo que os faz previsíveis e fáciles de entender. No entanto, esta previsibilidade tem um costo: os tamanhos basados em píxeles no se escalan quando os usuarios mudam o tamanho de fuente predeterminado do navegador, lo que crea problemas de acessibilidade.

Quando usar px

Quando evitar px

Evita usar px para tamanhos de fuente, padding, margin e dimensiones de layout que deveriam adaptarse a as preferências do usuário. Os usuarios que aumentan o tamanho de fuente do navegador a 20px esperan que todo o texto se escale em consequência, mas os tamanhos de fuente basados em px no responden a este mudo.

rem: Tamanho relativo a a raíz

). Na maioria dois navegadores, o tamanho de fuente raíz predeterminado é 16px, pelo que 1rem = 16px, 0.5rem = 8px, 2rem = 32px. A vantagem clave de rem é que se escala quando os usuarios mudam o tamanho de fuente predeterminado do navegador, tornando-o a melhor opção para a acessibilidade.

Convertir px a rem

A fórmula de conversão é simple: divide o valor em píxeles por o tamanho de fuente raíz.

rem = px / root-font-size

// With default root font size of 16px:
12px = 12 / 16 = 0.75rem
16px = 16 / 16 = 1rem
24px = 24 / 16 = 1.5rem
32px = 32 / 16 = 2rem
48px = 48 / 16 = 3rem

O truco do 62.5%

Muitos desenvolvedores encontram tediosa a matemática de dividir por 16. Um truco popular é estabelecer o tamanho de fuente raíz ao 62.5%, fazendo que 1rem seja igual a 10px. Isto simplifica o cálculo mental: 14px se converte em 1.4rem, 24px em 2.4rem, e así sucesivamente.

html {
    font-size: 62.5%; /* 1rem = 10px */
}

body {
    font-size: 1.6rem; /* 16px */
}

h1 {
    font-size: 3.2rem; /* 32px */
    margin-bottom: 1.6rem; /* 16px */
}
Nota de acessibilidade: O truco do 62.5% funciona porque aún respeta as preferências de tamanho de fuente do usuário. Estabelecer font-size: 62.5% no elemento raíz é o 62.5% do valor predeterminado escolhido por o usuario, pelo que se o usuario configura seu navegador a 20px, o elemento raíz se converte em 12.5px e todos os valores rem se escalan proporcionalmente. Nunca establezcas o tamanho de fuente raíz em um valor px fijo, já que isto anula as preferências do usuário.

em: Tamanho relativo ao contexto

A unidade em é relativa ao tamanho de fuente do elemento actual (o para propriedades distintas de font-size, relativa a seu elemento pai). Isto significa que 1em é igual ao tamanho de fuente actual, e os valores em se componen quando os elementos estão anidados. Este comportamento de composição pode ser tanto poderoso como confuso.

O problema de a composição

/* Parent: font-size 16px */
.parent {
    font-size: 1em; /* 16px */
}

/* Child: 1.2em of parent's 16px = 19.2px */
.child {
    font-size: 1.2em;
}

/* Grandchild: 1.2em of child's 19.2px = 23.04px */
.grandchild {
    font-size: 1.2em;
}

Cada elemento anidado multiplica o tamanho de fuente, lo que leva a um crecimiento exponencial. Por isso rem é generalmente preferivel para tamanhos de fuente. No entanto, em destaca em casos de uso específicos onde queres escalado a nivel de componente.

Quando usar em

Unidades de viewport: vw, vh, vmin, vmax

As unidades de viewport são relativas a as dimensiones de a janela do navegador. 1vw equivale ao 1% do largo do viewport, 1vh equivale ao 1% de a altura do viewport. vmin é o menor entre vw e vh, vmax é o mayor. Estas unidades são essenciais para criar layouts que respondan ao espaço de tela disponivel.

Casos de uso comuns de unidades de viewport

Caso de usoUnidadeExemplo
Secção hero de tela completavhheight: 100vh
Tipografia fluidavw + clampfont-size: clamp(1rem, 2.5vw, 2rem)
Layout lado a ladovwwidth: 50vw
Elemento quadradovminwidth: 20vmin; height: 20vmin
Superposição de viewport completovw + vhwidth: 100vw; height: 100vh

O problema de vh em móveis

Em navegadores móveis, 100vh no siempre equivale a a altura visível do viewport. A barra de direcciones e os controles de navegação do navegador ocupan espaço, mas 100vh inclui o área atrás de estes controles. Isto faz que o conteúdo na parte inferior das secciones a altura completa quede recortado. O CSS moderno proporciona dvh (altura de viewport dinámica) como solução, que tem em cuenta as barras de ferramentas dinámicas. Alternativamente, usa JavaScript para estabelecer uma propriedade personalizada CSS basada em window.innerHeight.

/* Modern approach */
.hero {
    height: 100dvh; /* Dynamic viewport height */
}

/* Fallback for older browsers */
.hero {
    height: 100vh;
    height: 100dvh;
}

Novas unidades de viewport: svh, lvh, dvh

CSS introdujo três novas unidades de altura de viewport para resolver o problema do viewport em móveis:

As mesmas variantes pequeno/grande/dinámico existem para o largo (svw, lvw, dvw) e as unidades mín/máx (svmin, lvmin, dvmin, etc.). Usa dvh para layouts de tela completa em móveis, svh quando necesites garantizar que o conteúdo seja visível sem scroll, e lvh quando quieras preencher o máximo espaço possível.

Tipografia fluida com clamp()

A função CSS clamp() é um mudo de juego para a tipografia responsive. Acepta três valores: um valor mínimo, um valor preferido e um valor máximo. O navegador escolhe o valor preferido mas lo restringe entre o mínimo e o máximo.

/* Font size scales from 1rem to 2.5rem based on viewport */
h1 {
    font-size: clamp(1rem, 2.5vw + 0.5rem, 2.5rem);
}

/* Padding scales proportionally */
.container {
    padding: clamp(1rem, 3vw, 3rem);
}

Este abordagem te da os beneficios do escalado basado em viewport sem o riesgo de que o texto se vuelva demasiado pequeno em móveis o demasiado grande em desktop. Elimina a necessidade de breakpoints de media queries para tamanhos de fuente, reduciendo significativamente a complexidade do CSS.

Tabla de referencia de conversão

Usa esta tabla como referencia rápida para conversões comuns. Todos os valores asumen um tamanho de fuente raíz de 16px e um viewport de 1920x1080.

pxremem (a 16px)vw (1920px)% (de 16px)
8px0.5rem0.5em0.417vw50%
12px0.75rem0.75em0.625vw75%
16px1rem1em0.833vw100%
20px1.25rem1.25em1.042vw125%
24px1.5rem1.5em1.25vw150%
32px2rem2em1.667vw200%
48px3rem3em2.5vw300%
64px4rem4em3.333vw400%

Melhores práticas de unidades CSS

Necessitas convertir rápidamente entre unidades CSS? Experimenta nosso conversor gratuito de unidades CSS online. Converte instantáneamente entre px a rem, em a px, unidades de viewport e mais.

Conversor de unidades CSS

Perguntas frequentes

Devo usar px o rem para o tamanho de fuente?

Usa rem para tamanhos de fuente na maioria dois casos. As unidades rem são relativas ao tamanho de fuente raíz, pelo que se escalan quando os usuarios mudam o tamanho de fuente predeterminado do navegador. Isto mejora a acessibilidade. Usa px solo para detalhes finos como bordes, sombras o quando necesites precisão a nivel de píxel que no deve escalar com as preferências do usuário.

Qual é a diferença entre em e rem?

em é relativo ao tamanho de fuente do elemento pai, enquanto que rem é relativo ao tamanho de fuente raíz (normalmente 16px). em se compone ao anidar, lo que pode causar cambios de tamanho inesperados. rem siempre faz referencia a a mesma base, tornando-o mais previsível. Usa rem para dimensiones globales e em para escalado a nivel de componente onde queres que os elementos anidados escalen proporcionalmente.

Como convertir px a rem?

Divide o valor em píxeles por o tamanho de fuente raíz (normalmente 16px). Por exemplo, 24px / 16 = 1.5rem. A fórmula é: rem = px / root-font-size. Se o tamanho de fuente raíz é 16px, então 1rem = 16px, 0.5rem = 8px, 2rem = 32px. Podes usar um conversor de unidades CSS online para conversões rápidas.

Quando devo usar unidades de viewport (vw, vh)?

Usa unidades de viewport quando quieras tamanhos relativos a a janela do navegador. Os casos de uso comuns incluem secciones hero de tela completa (100vh), tipografia que se escala com o largo do viewport (clamp com vw) e layouts que devem preencher o espaço disponivel. Evita usar vw solo para texto de corpo, já que pode volverse demasiado pequeno em móveis o demasiado grande em telas largas.

Qual é a melhor unidade CSS para design responsive?

No há uma única melhor unidade. Uma combinação funciona melhor: rem para tamanhos de fuente e espaçamento, percentagens para largos dentro de contêineres, unidades de viewport para elementos de tela completa, e CSS clamp() para tipografia fluida que se escala entre tamanhos mínimo e máximo. A clave é entender a que faz referencia cada unidade e escolher em consequência.

ToolHub's collection of 300+ free online tools including CSS unit converters, formatters, and more — no sign-up required.