09 - CSS: Medidas

Quando criamos nossos layouts usamos diversos tipos de medidas, usamos a medidas de diversas formas: para dar tamanho aos nossos elementos para especificar distâncias entre os elementos, para especificar o tamanho de textos e por ai vai. Vamos conhecer algumas medidas e entender quando usar cada uma delas.

Pixel

O pixel é uma unidiade fixa que foi muito usada no passado para criar layouts, ele corresponde a um pixel da tela. (Não é bem assim que funciona mas é uma forma de entender).

Podemos usá-lo para especificar tamanhos de elementos, fontes e aplicar espaços, apesar das unidades relativas serem mais apropriadas hoje em dia ele ainda é bastante utilizado.

Alguns exemplos:

.box { width: 500px; height: 500px; } .container { margin: 30px auto; } .message { font-size: 24px; }

Porcentagem

Diferente do pixel as medidas em porcentagem são relativas, isso nos possibilita criar layouts flexíveis que se adaptam melhor a diferentes tamanhos de telas. Vamos entender isso com alguns exemplos:

<div class="wrapper"> <div class="box"> </div> </div> .wrapper { width: 500px; height: 400px; margin: 20px auto; } .box { width: 50%; height: 50%; background-color: red; }

No código acima temos 2 divs uma com a classe "wrapper" e outra com a classe "box", a div container tem um tamanho fixo de 500px por 400px já a div box tem um tamanho relativo de 50% por 50%.

O que significa ser relativo?

50% de que exatamente?

A unidade de porcentagem sempre usará o elemento container como referência para calcular o valor, no exemplo acima o container da div "box" é a div "wrapper". Isso significa que a "box" vai ter 50% da largura e 50% da altura da classe "wrapper" (250px de largura e 200px de altura).

Guarde isso:

A unidade de porcentagem sempre usará o elemento container como referência

em

Outra unidade relativa é o em, muito usado para especificar tamanhos de fontes e espaçamentos. Essa unidade usa o tamanho da fonte do container mais próximo para calcular seu tamanho, vamos ao exemplo:

<div class="wrapper"> <div class="box"> </div> </div> .wrapper { width: 500px; height: 400px; font-size: 10px; margin: 20px auto; } .box { width: 50%; height: 50%; margin-top: 2em; background-color: red; }

Note que nós especificamos uma margem de 2em na classe "box" o que esse valor representa? Se testarmos esse código no navegador e inspecionarmos as medidas vamos ver que essa margem terá o valor de 20px por que?

Esse valor é calculado a partir do tamanho da fonte do container, ou seja, da propriedade font-size da classe "container". Como a classe "container" tem um font-size de 10px temos então: 2em x 10px = 20px.

rem

Diferente do em a unidade rem é sempre relativa ao tamanho da fonte da página, em outras palavras ao tamanho da fonte da tag html. Vamos ao exemplo:

<div class="wrapper"> <div class="box"> </div> </div> html { font-size: 16px; } .wrapper { width: 500px; height: 400px; font-size: 10px; margin: 20px auto; } .box { width: 50%; height: 50%; margin-top: 2rem; background-color: red; }

Nesse caso a margem da nossa div "box" será de 32px, isso porque a unidade rem vai usar o font-size do html para calcular o tamanho final. Teremos então: 2rem x 16px = 32px.

bye bye