O problema que ninguém menciona sobre unidades em UI
Você provavelmente já percebeu que o mesmo projeto fica diferente quando passa de telas pequenas para telas grandes, não é. Isso acontece porque as pessoas confundem unidades de medida com simples escolhas de estilo, quando na verdade elas definem como a interface se comporta em diferentes contextos.
ui unidade de medida: o que realmente importa na prática
Unidades em UI são ferramentas de escalabilidade. Cada uma tem um comportamento específico e escolher a errada vai te dar dor de cabeça depois. Opx e pixels fixos são os mais óbvios — um tamanho, sempre o mesmo tamanho, independente de qualquer coisa. Isso funciona para ícones pequenos e bordas, mas se você usar para tipografia ou espaçamento entre seções, vai se arrepender em dispositivos que não sejam exatamente o que você testou. Em seguida temos em, rem e percentual. rem é provavelmente a unidade mais subestimada que existe. Ela é relativa ao tamanho da fonte do elemento pai, mas o que muita gente não sabe é que, se o root estiver configurado corretamente no HTML, ela escala de forma previsível em todo o site. Já em é relativo ao elemento pai em si, o que pode criar efeitos colaterais estranhos quando você anida componentes dentro de componentes. Um espaçamento de 2em dentro de uma div com font-size 14px gera 28px, mas dentro de outra com font-size 20px gera 40px. Se você não estava esperando isso, já errou.
Porcentagem é útil para larguras, mas perigosa para altura e padding. Largura responsiva fica bem com %, mas aplicar padding em % no eixo Y vai causar resultados inesperados porque a porcentagem na altura se baseia na largura do container, não na própria altura. Isso quebrou um layout meu numa tela de 360px de largura quando o container pai tinha altura fixa de 200px. O padding inferior virou algo em torno de 72px quando eu esperava algo muito menor. vw e vh são bons para tipografia de impacto em telas inteiras, mas têm um problema grave: eles ignoram o conteúdo real. Um texto que deveria caber num card de 400px de largura pode ficar ilegível em uma tela de 1440px porque vw simplesmente não se importa com o contexto do componente.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Como escolher sem errar na primeira tentativa
A melhor abordagem que eu encontrei é pensar em camadas. Use rem para tipografia base e espaçamentos principais. Use px para bordas, sombras e separadores finos onde a precisão absoluta importa. Use percentual para larguras de containers e grids. Usevw e vh apenas para elementos que precisam dominar a viewport inteira. Na prática, eu monto meu sistema assim: o root do HTML tem font-size definido em px (16px é o padrão, mas eu costumo deixar explícito), depois todos os espaçamentos verticais e fontes herdam multiplicadores de rem a partir daí. Uma escala tipográfica de 1.25 começa em 1rem e sobe de forma consistente. Espaçamentos usam valores como 0.5rem, 1rem, 1.5rem, 2rem. Larguras de colunas usam percentual baseado no grid. Bordas e divisórias ficam em px fixo. Essa combinação resolve 90% dos casos sem precisar de media queries excessivas.
Existe uma limitação que poucos mencionam: em navegadores mais antigos, especialmente Safari em versões anteriores a 11, o suporte a clamp() com rem é instável. Se o seu público usa dispositivos com iOS antigo, teste antes de assumir que clamp(1rem, 2vw, 2rem) vai funcionar como esperado. Na minha experiência, em um app que rodava em iPad com iOS 10, o clamp() simplesmente ignorava o valor mínimo e travava no meio, criando tipografia gigante em telas pequenas. A solução foi fallback com uma media query básica em vez de depender da função.
O erro mais comum que eu vejo sendo repetido
Pessoas tentam usar uma única unidade para tudo. Ou tudo em rem, ou tudo em px, ou tudo em percentual. Isso cria sistemas que parecem coerentes no Figma mas quebram em produção. O problema não é a unidade em si — é a falta de estratégia de escala. Antes de escrever qualquer CSS, defina quantos breakpoints você precisa, qual a unidade base do sistema e quais exceções serão necessárias. Isso reduz o tempo de ajuste em produção de horas para minutos. Outro erro comum é confiar cegamente nas unidades relativas sem verificar o contexto de uso. O que é relativo para um elemento pode ser completamente diferente para outro. Teste sempre em pelo menos três larguras de tela antes de considerar um componente pronto. Não adianta funcionar perfeitamente em 375px e 1440px se quebrar em 768px.
Quando abandonar as unidades tradicionais
Às vezes nenhuma unidade convencional resolve o problema. Esse é o caso de interfaces que precisam ler dimensões do ambiente real, como realidade aumentada ou componentes que devem se adaptar a fatores externos como densidade de pixels do dispositivo. Nesses casos, ch-vw e ch-hv surgem como alternativas mais precisas porque se baseiam na largura e altura da viewport de forma mais granular. Elas também são úteis quando você precisa que elementos visuais se sincronizem com a proporção da tela, não apenas com o tamanho absoluto. Para a maioria dos projetos however, o sistema rem base com exceções pontuais em px e % é suficiente. Complexidade desnecessária só cria problemas futuros. A regra prática é simples: use a unidade mais simples que funcione para o contexto específico, e só evolua para algo mais complexo quando você tiver evidência real de que o simples não basta.