Skip to content
This page has been auto-translated and may contain errors.View in English

Tipografía

docs.scrimba.com

La mayoría de lo que la gente lee en la web es texto, y la mayor parte de la sensación que transmite una página proviene de cómo se configura ese texto. Cambia la tipografía, ajusta el espaciado entre líneas, limita la longitud de línea, y el mismo párrafo pasa de ser apretado y desagradable a ser tranquilo y legible. Nada de eso es decoración. Es tipografía, el puñado de propiedades CSS que deciden lo cómodo que es leer tus palabras, y este capítulo es el recorrido por las que usas a diario.

Elegir una tipografía

La propiedad que elige tu fuente es font-family, y le das no una sola fuente sino una lista. Esta lista es la pila de fuentes: el navegador intenta la primera fuente, y si no está disponible retrocede a la siguiente, y así sucesivamente por toda la línea.

css
body {
  font-family: "Helvetica Neue", Arial, sans-serif;  /* intenta Helvetica, luego Arial, luego cualquier sans-serif */
}

El último nombre siempre debe ser una familia genérica como sans-serif o serif. Esa es tu red de seguridad: si ninguna de las fuentes nombradas está en el dispositivo del lector, el navegador aún muestra algo sensato en lugar de un predeterminado que no elegiste. Los nombres de fuente con espacios van entre comillas; los nombres de una sola palabra no las necesitan.

font-family toma una pila de fuentes separada por comas, y el navegador usa la primera fuente en la lista que realmente puede renderizar. Cada nombre es un respaldo para el anterior, y la lista debe terminar en una familia genérica (sans-serif, serif, monospace) para que siempre haya una respuesta final.

css
body {
  font-family: "Inter", "Helvetica Neue", Arial, sans-serif;
}

Tienes dos opciones amplias para las fuentes que nombres. La pila de fuentes del sistema enumera las fuentes de interfaz predeterminadas de cada sistema operativo, por lo que la página toma prestada cualquier fuente que el dispositivo del lector ya use. No cuesta nada descargar y se siente nativa, razón por la cual muchas aplicaciones la usan:

css
body {
  font-family: -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}

La otra opción es una fuente web: un archivo de fuente que cargas para que cada lector vea la misma tipografía. Vinculas una desde un host como Google Fonts, o la alojas por ti mismo con @font-face. Eso te da control sobre la apariencia al costo de una descarga que el lector espera.

font-family resuelve una pila de fuentes de izquierda a derecha, eligiendo la primera familia que el navegador puede renderizar, razón por la cual la lista termina en una familia genérica (sans-serif, serif, monospace) como último recurso garantizado. Dos estrategias se encuentran detrás de los nombres que eliges, y se intercambian de manera diferente.

La pila de fuentes del sistema nombra la fuente de interfaz nativa de cada plataforma, por lo que la página hereda la tipografía que el sistema operativo ya proporciona. Nada se descarga, por lo que no hay retraso de carga ni cambio de diseño, y el texto se ve nativo en cada dispositivo. El costo es que tu página se ve ligeramente diferente en todas las plataformas, lo cual está bien para interfaces tipo aplicación pero es incorrecto para una marca que necesita una cara consistente.

css
body {
  /* la pila del sistema moderna: San Francisco, Segoe UI, Roboto, luego respaldos */
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}

Una fuente web es un archivo de fuente que el navegador descarga para que cada lector vea la misma tipografía. O bien lo vinculas desde un host, o lo alojas por ti mismo con una regla @font-face que asigna un nombre de familia a un archivo. El alojamiento propio mantiene la fuente en tu propio origen, lo que evita una solicitud de terceros y te da control sobre el almacenamiento en caché y el comportamiento de font-display que rige si el texto se muestra en un respaldo mientras se carga la fuente.

css
@font-face {
  font-family: "Satoshi";
  src: url("/fonts/satoshi.woff2") format("woff2");
  font-weight: 400 700;         /* un archivo variable que cubre un rango de peso */
  font-display: swap;           /* muestra texto de respaldo inmediatamente, intercambia cuando se carga */
}

body {
  font-family: "Satoshi", system-ui, sans-serif;  /* fuente web nombrada, luego un respaldo nativo */
}

La razón por la que el respaldo sigue siendo importante con una fuente web es que la descarga puede ser lenta o fallar, y font-display: swap renderiza tu familia de respaldo mientras tanto. Elegir un respaldo con métricas similares a la fuente web evita que el intercambio sacuda el diseño.

JunoElegir una tipografíafont-family toma una lista, no una sola fuente, y el navegador usa la primera que pueda encontrar. Siempre termina la lista con una familia genérica como sans-serif para que haya un respaldo seguro. Envuelve cualquier nombre de fuente con espacios en comillas.
JunoElegir una tipografía La pila de fuentes es una lista de respaldos que termina en una familia genérica, y el navegador toma la primera fuente que puede renderizar. La pila de fuentes del sistema toma prestadas las fuentes nativas del dispositivo de forma gratuita sin descarga, mientras que una fuente web carga un archivo para que todos vean la misma cara. Elige la pila del sistema para trabajo tipo aplicación y una fuente web cuando la apariencia debe ser consistente.
JunoElegir una tipografía Las pilas se resuelven de izquierda a derecha y deben terminar en una familia genérica, para que el lector siempre vea texto. La pila del sistema no cuesta nada y nunca cambia el diseño pero varía según la plataforma; una fuente web es una cara consistente al costo de una descarga que debes proteger con font-display: swap y un respaldo bien emparejado. Aloja por ti mismo con @font-face cuando quieras control sobre el almacenamiento en caché y la solicitud de terceros desaparecida.

Dimensionamiento de texto

Estableces el tamaño del texto con font-size. Puedes darle un valor en píxeles, pero el tamaño que debes alcanzar es el rem, una unidad vinculada al tamaño de fuente base de la página. Una rem es igual al tamaño de texto predeterminado del navegador, que suele ser 16px, por lo que 1rem es un tamaño de lectura normal y 1.25rem es un poco más grande.

css
body {
  font-size: 1rem;             /* el tamaño de lectura base, generalmente 16px */
}
h1 {
  font-size: 2rem;             /* el doble del tamaño base */
}

font-size establece el tamaño del texto, y para cuerpo de texto debes dimensionarlo en rem en lugar de px. Una rem es el tamaño de fuente del elemento raíz, que por defecto es 16px y es un valor que el lector puede cambiar en su configuración del navegador. Dimensionar en rem significa que tu texto se escala con esa preferencia; dimensionar en px lo bloquea.

css
:root {
  font-size: 100%;             /* respeta el predeterminado del lector, generalmente 16px */
}
p {
  font-size: 1rem;             /* se escala si el lector cambia su predeterminado */
}

Dimensiona el texto del cuerpo en rem, no en px, para que respete el tamaño elegido por el lector. El capítulo sobre unidades de dimensionamiento profundiza en cómo resuelven rem, em, porcentajes y unidades de vista; la versión corta para tipografía es que rem te da texto escalable y accesible con matemáticas predecibles.

font-size acepta muchas unidades, pero para cuerpo de texto la elección se reduce a accesibilidad. Una rem (root em) es relativa al font-size del elemento raíz (<html>), cuyo predeterminado es lo que el lector estableció en su navegador, normalmente 16px pero libremente cambiable. Un valor en píxeles ignora esa preferencia. Un lector que aumenta su tamaño de texto predeterminado por comodidad o un impedimento visual ve el texto dimensionado en rem crecer y el texto dimensionado en px quedarse quieto, por lo que el cuerpo de texto en px anula silenciosamente una configuración de accesibilidad que el lector eligió deliberadamente.

css
:root {
  /* deja la raíz en el predeterminado del lector; no la configures en 16px en px */
  font-size: 100%;
}

p {
  font-size: 1rem;             /* 1rem = el tamaño raíz del lector, se escala con él */
}

.lead {
  font-size: 1.125rem;         /* 18px en una raíz de 16px, aún se escala */
}

Prefiere rem sobre em para font-size porque em es relativo al tamaño de fuente del padre, por lo que los ems se acumulan cuando se anidan: un elemento dimensionado en em dentro de otro elemento dimensionado en em se multiplica, y una lista anidada tres niveles profundos puede encoger o crecer inesperadamente. rem siempre se refiere al único valor raíz, por lo que se mantiene predecible sin importar qué tan profundo se encuentre el elemento. Ten en cuenta que esto es distinto del zoom de página, que escala todo incluyendo px; el caso que rem protege es cuando el lector aumenta el tamaño de fuente predeterminado específicamente, lo cual muchas personas hacen y lo cual el texto en px ignora.

JunoDimensionamiento de textofont-size establece qué tan grande es el texto, y rem es la unidad a alcanzar. Una rem es el tamaño de texto normal del navegador, por lo que 1rem es regular y 2rem es el doble de grande. Evita dimensionar el cuerpo de texto en px, que es en lo que profundizan los siguientes niveles.
JunoDimensionamiento de texto Dimensiona el cuerpo de texto en rem, no en px. Una rem es el tamaño de fuente raíz del lector, por lo que el texto en rem se escala cuando cambian su predeterminado y el texto en px se queda atrapado. El capítulo de unidades de dimensionamiento cubre las matemáticas, pero para tipo la regla es corta: rem para cualquier cosa que una persona lea.
JunoDimensionamiento de textorem rastrea el tamaño de fuente raíz que el lector controla, por lo que el texto del cuerpo en px anula silenciosamente una elección de accesibilidad que hicieron a propósito. Alcanza rem sobre em también, porque em es relativo al padre y se acumula cuando los elementos se anidan. Esto trata sobre el tamaño de fuente predeterminado del lector, que es una cosa separada del zoom de página.

Peso y estilo

Dos propiedades cambian la forma de tus letras. font-weight controla qué tan negrita es el texto, y font-style enciende cursiva.

css
strong {
  font-weight: bold;           /* trazos más pesados, más gruesos */
}
em {
  font-style: italic;          /* inclinado */
}

bold y normal son las palabras clave de peso de uso diario. Para cursiva, italic inclina el texto y normal lo mantiene vertical.

font-weight establece qué tan pesado es el texto, y aunque normal y bold son las palabras clave familiares, la propiedad realmente toma pesos numéricos de 100 a 900 en pasos de 100. 400 es lo que normal asigna, y 700 es lo que bold asigna. Los números importan porque muchas fuentes tienen pesos adicionales que las palabras clave no pueden alcanzar.

css
h1 {
  font-weight: 700;            /* igual a bold */
}
.caption {
  font-weight: 300;            /* un peso ligero, sin palabra clave para él */
}

font-style: italic te da el verdadero diseño en cursiva de la fuente donde existe, una cara inclinada dibujada por separado en lugar de una inclinación mecánica. Resérvalo para énfasis real o convenciones como títulos de libros, no para estilizar bloques grandes, que la cursiva hace más difícil de leer.

font-weight toma pesos numéricos de 100 a 900; normal es un alias para 400 y bold para 700. El número solo se resuelve en un grosor distinto si la fuente realmente contiene ese peso. Pide 600 de una fuente que solo proporciona 400 y 700, y el navegador redondeará a un peso real o sintetizará un bold falso engrosando los trazos, que se ve peor que el peso diseñado. Entonces los pesos disponibles dependen de lo que cargaste: una fuente web vinculada a solo dos pesos te da dos, sea cual sea el número que escribas.

css
h1 {
  font-weight: 800;            /* solo distinto si la fuente proporciona una cara 800 */
}
p {
  font-weight: 400;
}

font-style: italic selecciona la cara cursiva dibujada de la fuente, que es un diseño separado con diferentes formas de letras en lugar de una inclinación mecánica. Donde no existe una cara cursiva el navegador finge una inclinándola, llamada cursiva sintética, y se lee como más barata. También está oblique, una verdadera inclinación del diseño vertical, pero italic es lo que quieres para prosa porque elige la cara apropiadamente dibujada cuando la fuente la tiene.

JunoPeso y estilofont-weight hace el texto más negrita o más ligero, y font-style: italic lo inclina. Las palabras clave bold y normal cubren la mayoría de lo que necesitas a diario. Usa cursiva para énfasis, no para párrafos completos, que se vuelven difíciles de leer.
JunoPeso y estilofont-weight realmente funciona de 100 a 900, con 400 como normal y 700 como bold, y los números desbloquean pesos que las palabras clave no pueden nombrar. Solo los pesos que tu fuente realmente proporciona se mostrarán; el resto se falsifican o se redondean. Mantén italic para énfasis y títulos en lugar de largas extensiones de texto.
JunoPeso y estilo Los pesos numéricos van de 100 a 900, pero un número solo encaja si la fuente contiene esa cara; de lo contrario el navegador redondea o sintetiza un bold falso que se ve peor. Entonces una fuente web cargada en dos pesos te da dos, sea cual sea lo que escribas. italic elige la cara cursiva dibujada cuando existe y retrocede a una inclinación sintética cuando no.

Espaciado que hace que el texto sea legible

El texto cómodo es principalmente sobre espacio. line-height controla el espacio entre líneas, y darle un poco de espacio hace que un párrafo sea mucho más fácil de leer.

css
p {
  line-height: 1.5;            /* una vez y media el tamaño de fuente */
}

Usa un número simple como 1.5 sin unidad. Eso significa "una vez y media el tamaño de fuente", por lo que el espaciado crece en paso con el texto. Las líneas apretadas son una de las razones más comunes por las que una página se siente difícil de leer, y este único valor arregla la mayoría de ellas.

Tres propiedades hacen la mayor parte del trabajo del texto legible. line-height establece el espacio vertical entre líneas, y debes darle un valor sin unidad como 1.5, que significa 1.5 veces el tamaño de fuente del elemento. letter-spacing ajusta el espacio entre caracteres, útil en pequeñas dosis para títulos en mayúsculas. Y la longitud de una línea importa tanto como cualquiera: las líneas muy largas son cansadas de leer, por lo que limitas la línea con max-width.

css
p {
  line-height: 1.5;            /* sin unidad: se escala con el tamaño de fuente */
  max-width: 65ch;             /* limita la medida a unos 65 caracteres */
}
.eyebrow {
  text-transform: uppercase;
  letter-spacing: 0.05em;      /* seguimiento pequeño para que las mayúsculas no se amonten */
}

Esa unidad ch es el ancho del carácter "0", por lo que 65ch es aproximadamente 65 caracteres de ancho. La medida cómoda, el número de caracteres por línea, se sitúa alrededor de 45 a 75, y limitarla es uno de los movimientos de tipografía de mayor impacto que puedes hacer.

La legibilidad se reduce a tres controles: altura de línea, espaciado de letras y longitud de línea. line-height debe ser sin unidad (1.5, no 24px), y la razón es la herencia. Una altura de línea sin unidad se hereda como el factor, por lo que cada descendiente la multiplica por su propio tamaño de fuente y cada elemento obtiene espaciado proporcional. Una altura de línea con unidad se hereda como la longitud calculada, por lo que un hijo con un tamaño de fuente más grande hereda la caja de línea fija del padre y sus líneas se solapan.

css
body {
  line-height: 1.5;            /* herencia como factor: cada elemento la escala */
}

h1 {
  font-size: 2.5rem;
  /* hereda 1.5, calcula a 1.5 x 2.5rem; una altura de línea fija de 24px estaría recortada aquí */
}

.article {
  max-width: 65ch;             /* medida de ~65 caracteres */
  text-wrap: balance;          /* opcional: equilibra las líneas irregulares en títulos */
}

letter-spacing (seguimiento) se deja mejor en el predeterminado de la fuente para cuerpo de texto, donde el diseñador ya lo ajustó; pequeños valores positivos ayudan a ejecutar todo en mayúsculas y pequeñas mayúsculas que de otro modo se amontonarían, y valores negativos minúsculos pueden ajustar títulos de pantalla grandes. La longitud de línea es la medida, el recuento de caracteres por línea, y la banda cómoda es aproximadamente 45 a 75 caracteres. Establécela con max-width en ch (el ancho de avance del glifo "0") para que el límite rastreje la fuente, y el efecto en la comodidad de lectura supera casi cualquier elección de fuente.

JunoEspaciado que hace que el texto sea legibleline-height establece el espacio entre líneas, y un valor de alrededor de 1.5 hace que el texto sea mucho más fácil de leer. Escríbelo como un número simple sin unidad para que el espaciado crezca con el texto. Las líneas apretadas son una razón principal por la que una página se siente difícil de leer, y esto arregla la mayoría.
JunoEspaciado que hace que el texto sea legible Dale a line-height un valor sin unidad como 1.5 para que se escale con el tamaño de fuente de cada elemento. Limita la longitud de línea con max-width en ch para mantener la medida alrededor de 45 a 75 caracteres, que es una de las mayores ganancias de legibilidad que hay. Usa letter-spacing con moderación, principalmente para abrir títulos en mayúsculas.
JunoEspaciado que hace que el texto sea legible Mantén line-height sin unidad para que se herede como factor y se escale por elemento; una unidad hereda la longitud calculada y hace que los títulos grandes se superpongan. Deja letter-spacing solo para cuerpo de texto y ajústalo solo para mayúsculas o tipo de pantalla grande. Limita la medida cerca de 45 a 75 caracteres con max-width en ch, y supera la mayoría de decisiones de fuente para legibilidad.

Alineación y decoración

Tres propiedades manejan la alineación y los toques finales. text-align mueve el texto a la izquierda, derecha o centro. text-transform cambia el caso, como hacer que el texto esté todo en mayúsculas. Y text-decoration añade o elimina líneas como subrayados.

css
h1 {
  text-align: center;          /* centra el título */
}
.button {
  text-transform: uppercase;   /* muestra como todo en mayúsculas */
  text-decoration: none;       /* elimina el subrayado del enlace */
}

text-transform: uppercase muestra el texto en mayúsculas sin que tengas que reescribirlo, por lo que el contenido original permanece como palabras normales. Los subrayados se añaden o se eliminan con text-decoration.

text-align posiciona el texto en línea dentro de su caja (left, right, center, justify). text-transform cambia el caso para pantalla (uppercase, lowercase, capitalize) sin alterar el texto subyacente, por lo que un lector de pantalla aún lee las palabras reales y tu HTML permanece limpio. text-decoration controla subrayados, líneas superior y líneas de tachado.

css
.card-title {
  text-align: center;
}
.nav-link {
  text-decoration: none;              /* elimina el subrayado predeterminado */
}
.price--old {
  text-decoration: line-through;      /* precio antiguo tachado */
}

Dos hábitos que vale la pena mantener. Evita text-align: justify para cuerpo de texto web, porque sin control de guionización fino, abre espacios feísimos de espacio en blanco entre palabras. Y cuando eliminas un subrayado de un enlace, asegúrate de que otra clave como el color aún lo marca como un enlace, o has ocultado que es clickeable. El capítulo de colores y fondos cubre darle a los enlaces un color distinto y accesible.

text-align establece la alineación en línea del contenido dentro de su caja contenedora. Salta justify para cuerpo de texto web: los navegadores justifican estirando el espaciado de palabras, y sin el control de guionización y saltos de línea que los tipógrafos de impresión tienen, abre ríos de espacio en blanco y daña la legibilidad más que lo que ayuda el borde ordenado.

text-transform (uppercase, lowercase, capitalize) cambia solo el caso renderizado, no el texto fuente, por lo que el árbol de accesibilidad y tu marcado mantienen el caso real. Esa es la forma correcta de hacer todo en mayúsculas: transformar en CSS en lugar de escribir mayúsculas en el HTML, para que la tecnología asistiva no lea la palabra letra por letra y el contenido siga siendo editable como prosa normal. Empareja el cambio a mayúsculas con un pequeño letter-spacing positivo, ya que las mayúsculas configuradas en el seguimiento predeterminado del cuerpo se leen apretadas.

text-decoration es una abreviatura para línea, estilo, color y grosor (text-decoration: underline wavy crimson 2px), con propiedades largas como text-decoration-color y text-underline-offset para control más fino. El caso común es text-decoration: none en enlaces, y la regla que viene con él es mantener otra señal visual, ya que eliminar el subrayado elimina la señal principal de que el texto es un enlace.

css
.headline {
  text-transform: uppercase;
  letter-spacing: 0.04em;             /* las mayúsculas necesitan espacio para respirar */
}

a {
  text-decoration-color: currentColor;
  text-underline-offset: 0.15em;      /* ajusta el subrayado del línea base */
}

text-align, text-transform y line-height heredan, por lo que establecerlos en un contenedor fluye hacia el texto adentro; el capítulo de selectores cubre dirigir el contenedor correcto para establecerlos.

JunoAlineación y decoracióntext-align mueve el texto a la izquierda, derecha o centro, text-transform: uppercase lo muestra en mayúsculas, y text-decoration añade o elimina líneas como subrayados. El cambio a mayúsculas en CSS mantiene tu texto actual como palabras normales, para que nunca lo reescribas en mayúsculas. Alcanza text-decoration: none cuando quieras eliminar el subrayado de un enlace.
JunoAlineación y decoracióntext-align coloca el texto en línea, text-transform cambia el caso solo para pantalla, y text-decoration maneja subrayados y líneas de tachado. Salta justify en la web, donde abre brechas feas entre palabras. Si eliminas el subrayado de un enlace, mantén otra clave para que la gente aún vea que es clickeable.
JunoAlineación y decoración Evita justify para cuerpo de texto web; los navegadores estiran el espaciado de palabras y abren ríos de espacio en blanco. Haz todo en mayúsculas con text-transform, no escribiendo mayúsculas, para que la tecnología asistiva lea palabras reales y la fuente permanezca limpia, y añade un pequeño letter-spacing a las mayúsculas. Cuando estableces text-decoration: none en un enlace, mantén otra affordancia para que aún se lea como un enlace.

La abreviatura font y la herencia

Las propiedades de fuente tienen un rasgo útil: se transmiten. Establece font-family en el <body> y cada párrafo, título y enlace adentro la hereda, por lo que raramente te repites.

css
body {
  font-family: system-ui, sans-serif;  /* todo adentro hereda esto */
  line-height: 1.5;
}

Debido a esto, la mayoría de tu tipografía vive en un lugar cerca de la parte superior de tu hoja de estilos, e elementos individuales solo anulan lo que necesitan diferir.

Las propiedades de fuente heredan: font-family, font-size, font-weight, font-style, line-height, y color todos se pasan de un elemento a sus descendientes a menos que se anulen. Por eso estableces el tipo base en body una vez y dejas que fluya hacia abajo, un punto que el capítulo de cómo funciona CSS cubre en profundidad.

También hay una abreviatura font que empaqueta varias propiedades en una sola declaración, pero viene con una trampa que vale la pena conocer antes de usarla.

css
body {
  font: 1rem/1.5 system-ui, sans-serif;   /* tamaño/altura-de-línea familia */
}

El orden es fijo y tanto font-size como font-family son obligatorios. El line-height va después del tamaño con una barra. Debido a que es una abreviatura, cualquier propiedad de fuente que dejes fuera se restablece a su valor inicial, que puede borrar un font-weight que estableciste en otro lugar.

Las propiedades de fuente heredan hacia abajo en el árbol, por lo que font-family, font-size, font-weight, font-style y line-height establecidos en un contenedor se aplican a todo adentro hasta que un elemento los anula. Establecer el tipo base una vez en body y anular selectivamente es el patrón idiomático; el capítulo de cómo funciona CSS detalla cómo la herencia y la cascada deciden el valor final.

La abreviatura font establece varias de estas a la vez, y su trampa es real: es una abreviatura, por lo que cada propiedad larga que puede establecer pero omites se restablece a su valor inicial. Escribe font: 1rem/1.5 system-ui y cualquier font-weight, font-style o font-variant establecido anteriormente se borra silenciosamente hacia atrás a normal. La sintaxis también tiene un orden fijo y dos partes requeridas, font-size y font-family, con un line-height opcional adjunto al tamaño por una barra.

css
.callout {
  font: italic 700 1rem/1.5 system-ui, sans-serif;  /* estilo peso tamaño/altura-de-línea familia */
}

Dos notas más avanzadas. Las fuentes variables modernas empacan un rango continuo de pesos (y a veces ancho e inclinación) en un archivo, por lo que font-weight: 550 puede ser un valor real y dibujado en lugar de uno redondeado cuando la fuente expone ese eje. Y la regla de accesibilidad de la sección de dimensionamiento se mantiene en toda esta: mantén los tamaños en rem y la altura de línea sin unidad para que todo el sistema de tipo se escale cuando el lector ajuste su tamaño de fuente predeterminado o hace zoom en la página, en lugar de fijar el texto a una cuadrícula de píxel fijo.

JunoLa abreviatura font y la herencia La configuración de fuente se transmite hacia los elementos adentro, por lo que establece font-family en el <body> una vez y todo lo hereda. Eso mantiene tu tipografía en un lugar cerca de la parte superior de la hoja de estilos. Los elementos individuales solo anulan los bits que necesitan cambiar.
JunoLa abreviatura font y la herencia Las propiedades de fuente heredan, por lo que el tipo base establecido en <body> fluye hacia abajo y solo anulan lo que difiere. La abreviatura font empaqueta tamaño, altura de línea y familia juntos, pero vigila la trampa: cualquier cosa que dejes fuera se restablece a su valor inicial, que puede borrar un peso que estableciste en otro lugar. Su orden es fijo, con tamaño y familia requeridos.
JunoLa abreviatura font y la herencia Las propiedades de fuente heredan, por lo que establece el tipo base en <body> y anula selectivamente. La abreviatura font restablece cada propiedad larga que omites a su valor inicial, por lo que puede borrar silenciosamente un peso o estilo establecido anteriormente; alcanza sabiendo eso. Mantén los tamaños en rem y la altura de línea sin unidad para que el tipo se escale con el tamaño predeterminado y zoom del lector, y apóyate en fuentes variables cuando necesites un rango de peso continuo de un archivo.