Como escolher a melhor unidade CSS para criar melhores layouts de site

Publicados: 2023-02-12

As unidades CSS são um dos aspectos mais fundamentais a serem considerados ao criar um layout de site. Essas unidades definirão como seu design interagirá em vários dispositivos.

Mas quando se trata de unidades CSS, há muitas opções para escolher e todas as opções não são iguais. As unidades CSS não se limitam apenas a fontes, portanto, como desenvolvedor front-end, você também deve entender como essas unidades afetam os layouts.

Neste artigo, mostraremos como diferentes unidades CSS funcionam, para que você possa usá-las para criar layouts e designs de site melhores.

Tipos de unidades CSS

As unidades CSS podem ser separadas nas seguintes categorias:

  • unidades absolutas
  • Unidades relativas da fonte
  • Unidades relativas da janela de visualização

Unidades Absolutas

Algumas unidades dependem de certos valores absolutos e não são afetadas por nenhum tamanho de tela ou fonte. A exibição dessas unidades pode variar dependendo das diferentes resoluções de tela, pois dependem do DPI (pontos por polegada) das telas.

Essas unidades são:

  • px (pixels)
  • em polegadas)
  • cm (centímetro)
  • mm (milímetro)
  • pc (picas)
  • pt (pontos)

Píxeis

Os pixels são a unidade mais comumente usada e aceita. E é considerada a base de medida para muitas outras unidades. Ele fornece o resultado mais consistente entre vários dispositivos.

O elemento box no exemplo a seguir tem altura de 150px e largura de 150px e permanecerá o mesmo em todos os tamanhos de tela.

[css]
.caixa{
altura: 150px;
largura: 150px;
}
[/css]

Todas as outras unidades absolutas como em (polegadas), cm (centímetro) e mm (milímetro) são unidades de medida do mundo real com muito poucos casos de uso de CSS do mundo real.

No entanto, ainda é bom entender sua relação com os pixels, então é assim que eles se comparam:

  • 1in = 96px
  • 1 cm = 37,8 pixels
  • 1 mm = 3,78 px

Enquanto pc (picas) e pt (pontos) estão diretamente relacionados a polegadas.

  • 1in = 72pt
  • 1 pol = 6 unidades
Comparação de unidades CSS

A relação entre todas as unidades absolutas pode ser demonstrada assim:

Rem

Além de pixels, todas as outras unidades absolutas têm muito pouco ou nenhum caso de uso para CSS de tela, mas como são unidades de medida do mundo real, elas podem ser usadas efetivamente em CSS de impressão. (Caso você esteja se perguntando sobre pixels, eles também funcionam bem em CSS de impressão!)

Unidades relativas da fonte

Existem algumas unidades que dependem do tamanho da fonte ou da família de fontes do documento ou de seus elementos de nível pai. Isso inclui unidades como:

  • em
  • rem
  • ex
  • CH

Em

Em é uma unidade de comprimento relativo; depende do tamanho da fonte do elemento pai ou do documento. Por padrão, 1em é igual a 16px se nenhum font-size for definido.

Em herda o tamanho do tamanho da fonte de seu pai imediato. Portanto, se um elemento pai tiver font-size:18px , 1em será medido como 18px para todos os seus filhos.

Aqui temos um div .post com três filhos, .post-item , com um título e algum texto.

[html]
<div class="post">
<div class="post-item">
<h2>Título</h2>
Lorem Ipsum é simplesmente um texto fictício da indústria tipográfica e de impressão. Lorem Ipsum tem sido o texto fictício padrão da indústria desde os anos 1500
</div>
<div class="post-item">
<h2>Título</h2>
Lorem Ipsum é simplesmente um texto fictício da indústria tipográfica e de impressão. Lorem Ipsum tem sido o texto fictício padrão da indústria desde os anos 1500
</div>
<div class="post-item">
<h2>Título</h2>
Lorem Ipsum é simplesmente um texto fictício da indústria tipográfica e de impressão. Lorem Ipsum tem sido o texto fictício padrão da indústria desde os anos 1500
</div>
</div>
[/html]

Agora o .post pai tem um font-size:20px e o elemento filho .post div tem seu próprio font-size:1.2em com padding:0.75em e margin:0.75em , então o padding calculado e a margem serão 18px (20px *1,2em*0,75em).

[css]
html{
tamanho da fonte: 20px;
}

.publicar{
tamanho da fonte: 20px;
}

.post div{
tamanho da fonte: 1,2em;
}

.post-item{
fundo: rosa;
preenchimento: 0,75em;
margem:0,75em;
}

.post-item h2{
tamanho da fonte: 1,5em;
margem:0,5em 0;
}

.post-item p{
margem:0;
tamanho da fonte: 1em;
}
[/css]

3 unidades css idênticas com um título grande e um texto de preenchimento Lorem Ipsum menor

Como você pode ver, os elementos filho estão herdando valores do pai.

A vantagem de usar em é que, se você decidir alterar proporcionalmente o font-size , padding e margin de cada elemento, basta alterar o tamanho da fonte do elemento pai e todos os outros elementos serão ajustados de acordo.

Esse não será o caso de unidades absolutas como px, onde você deve ajustar cada elemento individualmente.

Essa natureza de herança pode ser um pouco complicada de gerenciar, no entanto, se os elementos aninhados também tiverem seu próprio font-size .

Como na demonstração anterior, se você agrupar o título e o parágrafo dentro de outro div em um dos itens filhos, verá resultados estranhos.

[html]
<div class="post-item">
<div>
<h2>Título</h2>
Lorem Ipsum é simplesmente um texto fictício da indústria tipográfica e de impressão. Lorem Ipsum tem sido o texto fictício padrão da indústria desde os anos 1500
</div>
</div>
[/html]

3 unidades css com um título grande e um texto de preenchimento Lorem Ipsum menor, o Lorem Ipsum na unidade do meio é ligeiramente maior do que nas unidades superior e inferior

Como post-item tem um div aninhado, o tamanho base mudará de 24px para 28,8px (20px*1,2em*1,2em) e font-size e margin para h2 mudará para 43,2px (20px*1,2em*1,2em *1,5em) e 14,4px (20px*1,2em*1,2em*0,5em), respectivamente.

Rem

Rem pode ser muito útil nesses tipos de situações porque sempre se referem ao tamanho da fonte do elemento raiz, não ao elemento pai.

Se você pegar o exemplo anterior e alterar as unidades de em para rem para .post div , verá todos os elementos filho se corrigirem.

[css]
.post div{
tamanho da fonte: 1,2 rem;
}
[/css]

Depois que a unidade é alterada de em para rem, sua base muda de div pai para elemento raiz, que tem um front-size:20px .

3 unidades css idênticas com um título grande e um texto de preenchimento Lorem Ipsum menor

Portanto, o cálculo será 20px*1.2rem*value e h2 p ambos terão font-size e margin consistentes, independentemente de seus pais.

Ex

Ex é relativo à altura x da fonte atual e raramente é usado. A medição da altura x não é consistente; às vezes vem da própria fonte e às vezes o próprio navegador calcula.

Como em e rem, depende da fonte, mas a principal diferença é que ex também mudará quando você alterar a font-family , o que não é o caso das outras duas.

[css]
.caixa{
largura:150ex;
altura:150ex;
}
[/css]

CH

Ch é similar a ex mas não depende da altura x; em vez da largura do caractere zero (0). Também muda com font-family .

[css]
.caixa{
largura: 150ch;
altura: 150 canais;
}
[/css]

Unidades Relativas da Janela de Visualização

Existem algumas unidades que dependem da altura e largura da viewport, como:

  • vh (altura da janela de visualização)
  • vw (largura da janela de visualização)
  • vmin (mínimo da janela de visualização)
  • vmax (máximo da janela de visualização)

Vh

Vh (altura da janela de visualização) é medido como 1vh igual a 1% da altura da janela de visualização. Esta unidade é muito útil para criar elementos de altura total. Vh reage de forma semelhante à porcentagem, mas não depende da altura do elemento pai.

Você pode usar vh em qualquer lugar, mas o caso de uso mais comum de vh é para criar elementos de altura total. Neste exemplo, a classe full-height criará um contêiner azul que terá 100% da altura da viewport.

[css]
.altura toda{
altura: 100vh;
fundo: azul;
}
[/css]

vw

Vw (largura da viewport) é semelhante a vh, mas considera a largura, em vez da altura da viewport. 1vw é igual a 1% da largura da viewport. Essas unidades podem ser realmente úteis se você deseja criar uma viewport responsiva com base na tipografia.

Neste exemplo, font-siz de h1 é 6% da largura da viewport, portanto, se a largura da viewport for 1000px, o tamanho da fonte será 60px e, se a viewport for 500px, o tamanho da fonte será 30px.

[css]
h1{
tamanho da fonte: 6vw;
}
[/css]

Vmin

Vmin é calculado com base no valor mínimo da largura ou altura da viewport, o que for menor. Digamos que você tenha um tamanho de viewport de 1000px de altura por 800px de largura. 1vmin será igual a 8px.

Vmáx

Vmax é calculado exatamente ao contrário de vmin , onde é considerado o valor máximo do viewport.

Como o exemplo anterior da viewport com 1000px de altura por 800px de largura, 1vmax será igual a 10px.

Agora vamos explorar como você pode usar vmin e vmax de forma eficaz. Usando nosso exemplo anterior, digamos que queremos ter um preenchimento fluido e uma margem com base no tamanho da viewport agora, em vez de um valor fixo.

Neste trecho de código, defini o preenchimento como 3vmax e a margem como 1.5vmin .

[css]
.post-item{
fundo rosa;
preenchimento: 3vmax;
margem: 1,5vmin;
}
[/css]

6 unidades CSS, as três no lado esquerdo são mais longas e mais curtas em altura, as três à direita são mais altas em altura, mas mais curtas em comprimento

O preenchimento e a margem mudarão de acordo com o tamanho da viewport.

Porcentagem (%) unidade

A unidade de porcentagem (%) não pertence a nenhuma categoria específica mencionada acima, mas pode ser categorizada como uma unidade relativa. É relativo ao seu elemento pai.

A porcentagem é associada principalmente à altura e largura de um elemento, mas pode ser usada em qualquer lugar onde as unidades de comprimento CSS são permitidas.

A porcentagem é uma das unidades mais úteis para criar um layout responsivo ou fluido. Estruturas populares como Bootstrap, Foundation e Bulma usam porcentagem para seu layout básico.

Aqui, a classe full-width terá 100% da largura de seu elemento pai.

[css]
.largura completa{
largura: 100%;
}
[/css]

Conclusão

Cobrimos quase todas as unidades CSS disponíveis para uso. Dependendo de seus objetivos, alguns serão mais adequados do que outros. Como desenvolvedor front-end, é sempre bom conhecer suas opções, porque você nunca sabe qual delas pode precisar em seu próximo projeto.

Então, quais unidades você usa com mais frequência para obter o resultado desejado? Deixe-nos saber na seção de comentários abaixo!