Al configurar el tamaño de las fuentes en CSS, ¿debería usar un valor de porcentaje ( %
) o em
? ¿Puedes explicar la ventaja?
Al configurar el tamaño de las fuentes en CSS, ¿debería usar un valor de porcentaje ( %
) o em
? ¿Puedes explicar la ventaja?
Respuestas:
Hay un artículo realmente bueno sobre tipografía web en A List Apart .
Su conclusión:
Se demostró que el tamaño del texto y la altura de la línea en ems, con un porcentaje especificado en el cuerpo (y una advertencia opcional para Safari 2), proporciona texto preciso y de tamaño variable en todos los navegadores de uso común en la actualidad. Esta es una técnica que puede poner en su bolsa de equipo y usar como una mejor práctica para cambiar el tamaño del texto en CSS que satisfaga tanto a los diseñadores como a los lectores.
line-heights
están mejor escritos sin unidades en absoluto. Esto está permitido por la especificación y evita por completo ciertas peculiaridades del navegador realmente molestas cuando se trata em
de alturas de línea basadas en
1
. Por ejemplo, el iPhone 4 tiene un ancho de pantalla físico de 640 px, pero aparece como 320 píxeles "CSS" (DPR = 2). ¡Entonces el sitio web no parece más pequeño!
De http://archivist.incutio.com/viewlist/css-discuss/1408
%: Algunos navegadores no manejan el porcentaje para el tamaño de fuente, pero interpretan 150% como 150px. (Algunas versiones de NN4, por ejemplo). IE también tiene problemas con el porcentaje en elementos anidados. Parece que IE usa el porcentaje relativo a la ventana gráfica en lugar de relativo al elemento principal. Otro problema más (aunque correcto de acuerdo con las especificaciones de W3C), en Moz / Ns6, no puede usar el porcentaje relativo a elementos sin altura / ancho especificado.
em: A veces los navegadores utilizan un tamaño de referencia incorrecto, pero de las unidades relativas es el que presenta menos problemas. Sin embargo, a veces puede encontrarlo interpretado como px.
pt: difiere mucho entre resoluciones y no debe usarse para visualización. Sin embargo, es bastante seguro para imprimir.
px: La única unidad absoluta confiable en pantalla. Sin embargo, podría interpretarse incorrectamente en la impresión, ya que un punto generalmente consta de varios píxeles y, por lo tanto, todo se vuelve ridículamente pequeño.
Ambos ajustan el tamaño de la fuente en relación con lo que era. 1.5em es lo mismo que 150%. La única ventaja parece ser la legibilidad, elija la que le resulte más cómoda.
La verdadera diferencia se hace evidente cuando no se usa para tamaños de fuente. Establecer un padding
de 1em
no es lo mismo que 100%
. em
siempre es relativo al tamaño de la fuente. Pero %
podría ser relativo al tamaño de fuente, ancho, alto y probablemente algunas otras cosas que no conozco.
Dado que (¿casi?) Todos los navegadores ahora cambian el tamaño de la página como un todo, en lugar de solo el texto, los problemas anteriores con px
vs. %
vs em
s en términos de cambio de tamaño de fuente accesible son bastante discutibles.
Entonces, la respuesta es que probablemente no importe. Utilice lo que funcione para usted.
%
es bueno porque permite un cambio de tamaño relativo.
px
es bueno porque es bastante fácil administrar las expectativas al usarlo.
em
puede ser útil cuando también se usa para elementos de diseño, ya que puede permitir un tamaño proporcional relacionado con el tamaño del texto.
em
, por ejemplo. Aparte de eso, creo que las respuestas sobre SO deberían esforzarse por ser atemporales; después de todo, es una base de conocimientos. Wikipedia de la programación :) Como Wikipedia se actualiza para reflejar los hechos, también debería responder, en mi humilde opinión.
Respecto a la diferencia entre las unidades css %
y em
.
Por lo que tengo entendido (al menos teóricamente / conceptualmente, pero posiblemente no cómo estas dos unidades podrían implementarse en los navegadores) estas dos unidades son equivalentes, es decir, si multiplica su em
valor por 100
y luego lo reemplaza em
por%
lo que debería ser la misma cosa?
Si realmente hay alguna diferencia real entre em y%, ¿alguien puede explicarlo (o proporcionar un enlace a una explicación)?
(Quería agregar este comentario mío donde pertenecería, es decir, con sangría justo debajo de la respuesta, "Liam, answered Sep 25 '08 at 11:21"
ya que también quiero saber por qué su respuesta fue rechazada, pero no pude averiguar cómo poner mi comentario allí y, por lo tanto, tuve que escribir esta respuesta de "hilo global")
Como menciona Galwegian, px es el más confiable para la tipografía web, ya que todo lo demás que haces en la página se presenta principalmente en referencia a un monitor de computadora. El problema con los tamaños absolutos es que algunos navegadores (IE) no escalan los elementos de valor de píxel en una página web, por lo que cuando intenta acercar / alejar, todo se ajusta excepto esos elementos.
No sé si IE8 maneja esto correctamente, pero todos los demás proveedores de navegadores manejan los píxeles bien y sigue siendo un caso minoritario en el que un usuario necesita ampliar / disminuir el texto (este cuadro de texto en SO quizás sea la excepción). Si quieres ensuciarte mucho, siempre puedes agregar una función javascript para agrandar el tamaño de tu texto y ofrecer un botón "pequeño" / "más grande" al usuario.
Biblioteca de la interfaz de usuario de Yahoo ( http://developer.yahoo.com/yui/ ) tiene un buen conjunto de clases básicas de CSS que se utilizan para "restablecer" la configuración específica del navegador de modo que la base para mostrar el sitio sea la misma para todos (compatible) navegadores.
Con YUI se supone que uno usa porcentajes.