Ao definir o tamanho das fontes em CSS, devo usar um valor percentual ( %
) ou em
? Você pode explicar a vantagem?
Ao definir o tamanho das fontes em CSS, devo usar um valor percentual ( %
) ou em
? Você pode explicar a vantagem?
Respostas:
Há um artigo muito bom sobre tipografia para web em A List Apart .
A conclusão deles:
O tamanho do texto e da altura da linha em ems, com uma porcentagem especificada no corpo (e uma advertência opcional para o Safari 2), foi mostrado para fornecer texto redimensionável e preciso em todos os navegadores de uso comum hoje. Essa é uma técnica que você pode colocar na sacola do kit e usar como prática recomendada para dimensionar texto em CSS que satisfaça designers e leitores.
line-heights
são melhor escritos sem nenhuma unidade. Isso é permitido pela especificação e evita completamente certas peculiaridades do navegador realmente irritantes quando se trata em
de alturas de linha baseadas
1
. Por exemplo, o iPhone 4 tem uma largura de tela física de 640 px, mas aparece como 320 pixels "CSS" (DPR = 2). Portanto, o site não parece menor!
De http://archivist.incutio.com/viewlist/css-discuss/1408
%: Alguns navegadores não lidam com a porcentagem para o tamanho da fonte, mas interpretam 150% como 150px. (Algumas versões do NN4, por exemplo.) O IE também tem problemas com porcentagem em elementos aninhados. Parece que o IE usa porcentagem em relação à janela de visualização em vez de em relação ao elemento pai. Outro problema (embora correto de acordo com as especificações do W3C), no Moz / Ns6, você não pode usar porcentagem em relação a elementos sem altura / largura especificada.
em: Às vezes, os navegadores usam o tamanho de referência errado, mas das unidades relativas é o que tem menos problemas. Você pode achar que às vezes é interpretado como px.
pt: difere muito entre as resoluções e não deve ser usado para exibição. É bastante seguro para uso em impressão.
px: A única unidade absoluta confiável na tela. Pode ser mal interpretado na impressão, já que um ponto geralmente consiste em vários pixels e, portanto, tudo se torna ridiculamente pequeno.
Ambos ajustam o tamanho da fonte em relação ao que era. 1.5em é o mesmo que 150%. A única vantagem parece ser a legibilidade, escolha aquela com a qual você se sentir mais confortável.
A diferença real fica aparente quando você não o usa para tamanhos de fonte. Definir um padding
de 1em
não é o mesmo que 100%
. em
é sempre relativo ao tamanho da fonte. Mas %
pode ser relativo ao tamanho da fonte, largura, altura e provavelmente algumas outras coisas que eu não conheço.
Dado que (quase?) Todos os navegadores agora redimensionam a página como um todo, em vez de apenas o texto, os problemas anteriores com px
vs. %
vs. em
s em termos de redimensionamento de fonte acessível são bastante discutíveis.
Portanto, a resposta é que provavelmente não importa. Use o que funcionar para você.
%
é bom porque permite um redimensionamento relativo.
px
é bom porque é bastante fácil gerenciar as expectativas ao usá-lo.
em
pode ser útil quando também usado para elementos de layout, pois pode permitir o dimensionamento proporcional relacionado ao tamanho do texto.
em
, por exemplo. Além disso, acho que as respostas sobre SO devem se esforçar para ser atemporais - afinal, é uma base de conhecimento. Wikipedia de programação :) Como a Wikipedia é atualizada para refletir os fatos, o mesmo deve acontecer com as respostas, na minha humilde opinião.
Em relação à diferença entre as unidades css %
e em
.
Tanto quanto eu entendo (pelo menos teoricamente / conceitualmente, mas possivelmente não como essas duas unidades podem ser implementadas em navegadores) essas duas unidades são equivalentes, ou seja, se você multiplicar seu em
valor por 100
e depois substituir em
por %
ele, deve ser a mesma coisa?
Se realmente houver alguma diferença real entre em e%, alguém pode explicá-la (ou fornecer um link para uma explicação)?
(Eu queria adicionar este meu comentário onde ele deveria pertencer, ou seja, recuado logo abaixo da resposta por, "Liam, answered Sep 25 '08 at 11:21"
pois também quero saber por que sua resposta foi rejeitada, mas não consegui descobrir como colocar meu comentário lá e, portanto, tive que escrever esta resposta do "tópico global")
Como Galwegian menciona, px é o mais confiável para a tipografia da web, já que tudo o mais que você faz na página é apresentado principalmente em referência a um monitor de computador. O problema com tamanhos absolutos é que alguns navegadores (IE) não escalam elementos de valor de pixel em uma página da web, então quando você tenta aumentar / diminuir o zoom , tudo se ajusta, exceto para esses elementos.
Não sei se o IE8 lida com isso corretamente, mas todos os outros fornecedores de navegador lidam com pixels muito bem e ainda é um caso minoritário em que um usuário precisa aumentar / diminuir o texto (esta caixa de texto no SO talvez seja a exceção). Se você quiser realmente sujar, pode sempre adicionar uma função javascript para aumentar o tamanho do texto e oferecer um botão "pequeno" / "maior" ao usuário.
A biblioteca de interface do usuário do Yahoo ( http://developer.yahoo.com/yui/ ) tem um bom conjunto de classes css básicas usadas para "redefinir" as configurações específicas do navegador para que a base para a exibição do site seja a mesma para todos (compatível) navegadores.
Com YUI, deve-se usar porcentagens.