Olá, Fabio.
Não existe uma regra absoluta de quando usar pixel, rem ou em. A parte importante que deve ficar bem clara quando você está escrevendo o seu CSS é como funciona cada propriedade. Por exemplo:
pixel -> será uma unidade que não pode influenciada caso você altere o valor do paí onde o componente que você está alterando está.
em -> é uma unidade de medida relativa. Que utiliza como referência o pai do elemento. Por exemplo, se você tem uma lista não ordenada (ul
) que você definiu o font-size
com o valor de 10px
e aplicar nas li
o valor para a propriedade height
com 2em
, nesse caso a altura de cada li
será a de 20px. Lembrando que se você alterar o valor da propriedade font-size
da ul
você estará impactando a altura das tags li
.
rem -> essa propriedade funciona bem parecido com a em, só que a referência dela é o valor aplicado a propriedade font-size
da tag html
.
Com base nessas informações você terá que olhar para o layout aplicado pelo designer e definir qual dos valores funcionará melhor para cada situação. Outra opção é de utilizar a rem em todos os lugar sem pensar muito, mas tome cuidado com essa estratégia, pois o rem só tem suporte completo a partir da versão 11 do IE. Você pode verificar o suporte das propriedades CSS, HTML e JavaScript no site http://caniuse.com
Espero ter conseguido ajudar, se ficou qualquer dúvida por favor, não deixe de perguntar :-)