CSS font-sizePropiedad

Ejemplo

Establecer el tamaño de fuente de diferentes elementos HTML:

h1 {font-size:250%} h2 {font-size:200%} p {font-size:100%}

¡Pruébalo »

Definición e instrucciones de uso de la propiedad

La propiedad font-size se utiliza para establecer el tamaño de la fuente.

font-size no solo determina el tamaño de visualización del texto, sino que también afectaem、line-height、letter-spacingy otros cálculos de composición tipográfica relacionados.

Valor por defecto: medium
Herencia: yes
Versión: CSS1
Sintaxis de JavaScript: object.style.fontSize="larger"
/*<absolute-size>, valor de tamaño absoluto*/ font-size: xx-small; font-size: x-small; font-size: small; font-size: medium; font-size: large; font-size: x-large; font-size: xx-large; /*<relative-size>, valor de tamaño relativo*/ font-size: larger; font-size: smaller; /*<length>, valor de longitud*/ font-size: 12px; font-size: 0.8em; /*<percentage>, valor de porcentaje*/ font-size: 80%; font-size: inherit;


Compatibilidad del navegador

Los números en la tabla indican la versión del navegador que soporta la propiedad por primera vez.

Propiedad
font-size 1.0 5.5 1.0 1.0 7.0

Conceptos básicos

font-sizeSe utiliza para establecer el tamaño del texto dentro de un elemento.

El tamaño de fuente raíz predeterminado del navegador suele ser16px。

es decir, por defectohtml { font-size: 100%; }normalmente equivale ahtml { font-size: 16px; }。

Este valor predeterminado se convierte en la base de cálculo de muchas unidades relativas.

Ejemplo

/* Establecer el tamaño de fuente predeterminado de la página */
html {
    font-size: 100%; /* Normalmente equivale a 16px, respetando la configuración del navegador del usuario */
}

/* Establecer el tamaño del texto del cuerpo */
body {
    font-size: 16px; /* Tamaño de fuente base común para el cuerpo */
    line-height: 1.6; /* Usar altura de línea sin unidad para facilitar la herencia */
}

/* Establecer el tamaño del título */
h1 {
    font-size: 2rem; /* Por defecto, aproximadamente 32px */
}

No se recomienda fijar arbitrariamente el tamaño de fuente del elemento raíz a un valor muy pequeño, porque puede afectar las preferencias de fuente del navegador del usuario y la experiencia de accesibilidad.


Tipos comunes de valores de font-size

font-sizeSe pueden usar palabras clave, unidades de longitud, porcentajes y funciones.

Diferentes valores son adecuados para diferentes escenarios.

Tipo de valor Ejemplo Descripción Escenario adecuado
Palabra clave small、large El navegador lo calcula según una proporción predefinida. Páginas simples, escenarios donde se necesita seguir la configuración predeterminada del usuario.
Unidades absolutas 16px、12pt El tamaño es relativamente fijo y altamente controlable. Control preciso de la interfaz, estilos de impresión.
Unidades relativas 1rem、1.25em Se calculan en relación con el elemento padre o el elemento raíz. Diseño responsivo, páginas basadas en componentes.
Unidades de viewport 4vw、3vmin Se calculan en relación con el tamaño del viewport del navegador. Titulares grandes, páginas de presentación, tipografía fluida.
Funciones CSS clamp()、calc() Se calcula el tamaño de fuente dinámicamente mediante expresiones. Tipografía responsiva moderna.

Valores de palabras clave

CSS proporciona dos tipos de palabras clave para el tamaño de fuente.

Un tipo son palabras clave de tamaño absoluto, por ejemplosmall、medium、large。

El otro tipo son palabras clave de tamaño relativo, por ejemplolargerysmaller。

Palabras clave de tamaño absoluto

Las palabras clave de tamaño absoluto no son valores de píxel fijos, sino niveles calculados por el navegador según el tamaño de fuente predeterminado.

Palabra clave Valor aproximado con 16px predeterminado Proporción Escenario adecuado
xx-small Aprox. 9px 0.56 veces Notas extremadamente pequeñas, no se recomienda para el cuerpo del texto.
x-small Aprox. 10px 0.625 veces Notas al pie o información auxiliar.
small Aprox. 13px 0.8 veces Texto auxiliar.
medium Aprox. 16px 1 vez Cuerpo de texto predeterminado.
large Aprox. 18px 1.125 veces Subtítulo o texto enfatizado.
x-large Aprox. 24px 1.5 veces Título.
xx-large Aprox. 32px 2 veces Título grande.
xxx-large Aprox. 48px 3 veces Título de exhibición.

Palabras clave de tamaño relativo

largerysmallerSe amplían o reducen en relación con el tamaño de fuente del elemento padre.

Son adecuadas para escenarios simples donde se necesita seguir el cambio de tamaño de fuente del padre.

Ejemplo

/* El tamaño de fuente del elemento padre es 16px */
.parent {
    font-size: 16px;
}

/* larger se ampliará en relación con el padre, la proporción específica la decide el navegador */
.child-larger {
    font-size: larger;
}

/* smaller se reducirá en relación con el padre, la proporción específica la decide el navegador */
.child-smaller {
    font-size: smaller;
}

Las palabras clave son relativamente amigables con la accesibilidad, pero tienen menor control; en proyectos reales se usan más comúnmenterem、emoclamp()。


Unidades absolutas

Los valores de las unidades absolutas son relativamente fijos y no dependen del tamaño de fuente del elemento padre.

Son adecuadas para interfaces que requieren control preciso, o para estilos de impresión.

Unidad Significado Relación de conversión Escenario adecuado
px Píxel lógico CSS. La unidad de longitud más utilizada en pantalla. Interfaces web, tamaños de fuente de componentes.
pt Punto de impresión. 1pt = 1/72 pulgada, aproximadamente 1.333px. Estilos de impresión.
cm / mm Centímetros / milímetros. 1cm = 37.8px,1mm = 3.78px. Composición tipográfica de impresión, raramente se usa en web.
in Pulgada. 1in = 96px. Impresión o conversión de tamaños especiales.
pc Pica. 1pc = 12pt = 16px. Escenarios de tipografía tradicional, muy raramente en web.

Ejemplo

/* Relaciones de conversión de unidades absolutas */
/* 1in = 96px = 2.54cm = 25.4mm = 6pc = 72pt */

/* Al imprimir, normalmente se usa pt */
@media print {
    body {
        font-size: 12pt;
    }
}

/* En pantalla, normalmente se usa px, rem o clamp() */
@media screen {
    body {
        font-size: 16px;
    }
}

En pantallas modernas, 1px generalmente se refiere a un píxel lógico CSS, no necesariamente igual a un píxel físico.


Unidades relativas

Las unidades relativas se calculan dinámicamente según un valor de referencia.

Son las unidades más utilizadas para tamaños de fuente en el diseño responsivo moderno.

Unidad Objeto de referencia Descripción Uso típico
em Tamaño de fuente del elemento padre o del elemento actual. Cuando se usafont-sizees relativo al elemento padre; al anidar, se multiplica en cadena. Escalado de componentes locales.
rem Elemento raízhtmlTamaño de fuente. No se ve afectado por el anidamiento, el cálculo es más estable. Sistema de tamaños de fuente de todo el sitio.
% Tamaño de fuente del elemento padre. Enfont-sizeSu comportamiento es similar aem。 Escalado según la proporción del padre.
ch Carácter0Ancho de. Se usa más comúnmente para controlar el ancho de línea. width: 60ch;
ex Altura de la letra x minúscula. Fuertemente influenciado por el diseño tipográfico. Maquetación especial limitada.
lh La altura de línea del elemento. Unidades nuevas en CSS Values 4. Espaciado alineado con la altura de línea.

Diferencia entre em y rem

emAl establecerfont-sizese calcula en relación con el tamaño de fuente del elemento padre.

Si se usa en múltiples niveles de anidamientoem, el tamaño de fuente se multiplica en cada nivel.

remSiempre se calcula respecto al tamaño de fuente del elemento raíz, por lo que es más estable.

Ejemplo

/* El tamaño de fuente del elemento raíz es 16px */
html {
    font-size: 16px;
}

/* em se ve afectado por el tamaño de fuente del padre */
.outer {
    font-size: 1.5em; /* 16px × 1.5 = 24px */
}

.middle {
    font-size: 1.5em; /* 24px × 1.5 = 36px */
}

/* rem siempre se calcula respecto a html */
.outer-rem {
    font-size: 1.5rem; /* 16px × 1.5 = 24px */
}

.middle-rem {
    font-size: 1.5rem; /* 16px × 1.5 = 24px, no se multiplica en cadena */
}

Enfont-sizeal usarlo enemse refiere al tamaño de fuente del padre; pero en el mismo elementopaddingomarginal usarlo enemse refiere al tamaño de fuente del propio elemento.


Unidades de viewport

Las unidades de viewport se calculan según el tamaño de la ventana del navegador.

Son adecuadas para lograr tipografía fluida que cambia con el ancho de la pantalla.

Sin embargo, usar solo unidades de viewport puede resultar en texto demasiado pequeño en móviles y demasiado grande en pantallas ultrapanorámicas.

Unidad Significado Descripción Caso de uso típico
vw El 1% del ancho del viewport. Cuanto más ancho es el viewport, mayor es el tamaño de fuente. Títulos responsivos.
vh El 1% de la altura del viewport. En móviles se ve afectado por la barra de herramientas del navegador. Páginas de presentación a pantalla completa.
vmin vwyvhEl 1% del valor más pequeño entre ambos. Adecuado para equilibrar orientación horizontal y vertical. Títulos grandes adaptativos.
vmax vwyvhEl 1% del valor más grande entre ambos. Mayor amplitud de variación. Diseño visual de exhibición.
svh / dvh / lvh Altura de viewport pequeña / dinámica / grande. Se usa para resolver el problema de los cambios en la barra de herramientas del navegador en móviles. Páginas de pantalla completa en móviles.
cqi / cqb Unidades de consultas de contenedor. Relativas al tamaño del contenedor, no al viewport completo. Tipografía responsiva a nivel de componente.

Ejemplo

/* Al usar solo vw, el escalado del tamaño de fuente puede ser demasiado agresivo */
h1 {
    font-size: 5vw;
}

/* Se recomienda usar clamp() para establecer límites mínimo y máximo */
h1 {
    font-size: clamp(1.5rem, 5vw, 3.5rem);
}

/* Las unidades de consultas de contenedor son adecuadas para diseño responsivo a nivel de componente */
.card {
    container-type: inline-size;
}

.card-title {
    font-size: clamp(1rem, 4cqi, 2rem);
}

Las unidades de consultas de contenedor son adecuadas para bibliotecas de componentes y diseños de tarjetas, porque el tamaño del componente no siempre equivale al tamaño del viewport del navegador.


Función clamp()

clamp()es una función muy útil en la tipografía responsiva moderna.

Permite limitar el tamaño de fuente entre un valor mínimo y un valor máximo.

El valor preferido suele usar unidades de viewport o expresiones de cálculo, para que el tamaño de fuente cambie con la pantalla.

Parámetro Significado Ejemplo Descripción
Valor mínimo El tamaño de fuente no será menor que este valor. 1rem Garantiza legibilidad en móviles.
Valor preferido El navegador intenta usar primero este valor dinámico. 2vw + 1rem Hace que el tamaño de fuente fluya con la pantalla.
Valor máximo El tamaño de fuente no será mayor que este valor. 3rem Evita que el texto sea demasiado grande en pantallas grandes.

Ejemplo

/* clamp(valor mínimo, valor preferido, valor máximo) */
h1 {
    font-size: clamp(1.75rem, 2.5vw + 1rem, 3.5rem);
}

h2 {
    font-size: clamp(1.25rem, 2vw + 0.75rem, 2.25rem);
}

p {
    font-size: clamp(1rem, 1vw + 0.5rem, 1.25rem);
}

/* Combinado con variables CSS para construir un sistema de diseño */
:root {
    --text-sm: clamp(0.8rem, 1.5vw + 0.25rem, 0.95rem);
    --text-md: clamp(1rem, 2vw + 0.5rem, 1.25rem);
    --text-lg: clamp(1.25rem, 3vw + 0.5rem, 2rem);
    --text-xl: clamp(1.75rem, 4vw + 0.75rem, 3.5rem);
}

.article-title {
    font-size: var(--text-xl);
}

Funciones min() y max()

min()toman el valor más pequeño de varios valores.

max()toman el valor más grande de varios valores.

Se pueden usar para el tamaño de fuente, pero en tipografía fluida normalmente no son tanclamp()intuitivas.

Función Comportamiento Ejemplo Caso de uso adecuado
min() Selecciona el resultado menor de los cálculos. min(5vw, 48px) Solo limita el valor máximo.
max() Selecciona el resultado mayor de los cálculos. max(1rem, 2vw) Solo limita el valor mínimo.
clamp() Establece simultáneamente el mínimo, el preferido y el máximo. clamp(1rem, 2vw, 2rem) Solución completa de tamaño de fuente fluido.

Ejemplo

/* El tamaño de fuente no superará 48px, pero en pantallas pequeñas puede ser demasiado pequeño */
h1 {
    font-size: min(5vw, 48px);
}

/* El tamaño de fuente no será menor que 16px, pero en pantallas grandes puede ser demasiado grande */
h2 {
    font-size: max(16px, 3vw);
}

/* Limita el mínimo y el máximo a la vez, más adecuado para proyectos reales */
h3 {
    font-size: clamp(16px, 3vw, 32px);
}

Función calc()

calc()permite mezclar diferentes unidades en cálculos dentro de CSS.

Se usa a menudo para combinar valores fijos y relativos.

En el caso del tamaño de fuente,calc()a menudo se combina convw、remse usa junto con.

Ejemplo

/* Usando calc() para combinar rem y vw */
h1 {
    font-size: calc(1.5rem + 2vw);
}

/* Usar calc() dentro de clamp(), sintaxis más clara */
h2 {
    font-size: clamp(1.25rem, calc(1rem + 2vw), 3rem);
}

/* Nota: se deben dejar espacios alrededor de los operadores */
p {
    font-size: calc(1rem + 0.25vw);
}

calc(1rem+2vw)Esta forma de escribir es incorrecta; se deben escribir espacios a ambos lados del operador, por ejemplocalc(1rem + 2vw)。


Herencia y cascada

font-sizees una propiedad heredable.

Si un elemento hijo no declara un tamaño de fuente, hereda el tamaño de fuente calculado del elemento padre.

Esta es tambiénemuna de las razones por las que el anidamiento puede provocar fácilmente problemas de multiplicación en cadena.

Ejemplo

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Ejemplo de herencia de font-size</title>
    <style>
        .article {
font-size: 18px; /* los elementos hijos heredan este tamaño por defecto */
        }

        .article p {
font-size: 1em; /* equivale a 18px */
        }

        .article .note {
            font-size: 0.875em; /* 18px × 0.875 = 15.75px */
        }
    </style>
</head>
<body>
    <div class="article">
        <p>Este es un párrafo de texto.</p>
        <p class="note">Este es un texto explicativo más pequeño.</p>
    </div>
</body>
</html>

Mejores prácticas

En proyectos reales, no se recomienda fijar todo el texto directamente apx。

Una mejor manera es usar el tamaño de fuente raíz, variables CSS yclamp()combinarlos para formar un sistema de tamaños de fuente estable.

Escritura no recomendada Escritura recomendada Motivo
font-size: 12px;Se usa como cuerpo de texto principal. font-size: 1rem; Si el texto del cuerpo es demasiado pequeño, se perjudica la experiencia de lectura.
Todos los componentes en múltiples capas usanem。 El tamaño de fuente global usarem, y para el escalado local se usaem。 para evitar que la multiplicación en cadena por anidamiento haga que el tamaño de fuente se descontrole.
Los títulos solo usanfont-size: 6vw;。 font-size: clamp(1.75rem, 4vw, 3.5rem); para evitar que sean demasiado pequeños en pantallas pequeñas y demasiado grandes en pantallas grandes.
Definir tamaños de fuente arbitrarios en diferentes páginas. Usar variables CSS para unificar la escala de tamaños de fuente. Facilita mantener un sistema visual coherente.

Ejemplo

/* Recomendado: usar variables CSS para gestionar el sistema de tamaños de fuente */
:root {
    --font-size-xs: 0.75rem;
    --font-size-sm: 0.875rem;
    --font-size-base: 1rem;
    --font-size-lg: 1.125rem;
    --font-size-xl: clamp(1.5rem, 3vw, 2.5rem);
    --font-size-hero: clamp(2rem, 6vw, 4.5rem);
}

body {
    font-size: var(--font-size-base);
    line-height: 1.6;
}

.caption {
    font-size: var(--font-size-sm);
}

.article-title {
    font-size: var(--font-size-xl);
}

.hero-title {
    font-size: var(--font-size-hero);
}

Generalmente se puede usarrempara establecer el sistema global de tamaños de fuente, usarempara el escalado proporcional local, usarclamp()para manejar los títulos responsivos.

Sistema de escala de fuentes recomendado

A continuación se presenta un sistema de tokens de tamaños de fuente basado en el enfoque de Modular Scale.

Cada token usaclamp()para garantizar un tamaño adecuado en pantallas mínimas y máximas.

Token Uso Valor recomendado con clamp() Notas
--text-xs Etiquetas, insignias clamp(0.7rem, 0.5vw + 0.5rem, 0.8rem) No se recomienda menos de 11px.
--text-sm Texto auxiliar, aclaraciones clamp(0.85rem, 0.8vw + 0.6rem, 0.95rem) Común en notas e información secundaria.
--text-md Texto base (cuerpo) clamp(1rem, 1vw + 0.75rem, 1.125rem) Recomendado como tamaño de fuente de cuerpo predeterminado.
--text-lg Subtítulo clamp(1.15rem, 1.5vw + 0.8rem, 1.5rem) Título pequeño para artículos o tarjetas.
--text-xl Encabezado de nivel h3 clamp(1.25rem, 2vw + 0.75rem, 2rem) Título de subsección.
--text-2xl Encabezado de nivel h2 clamp(1.5rem, 2.5vw + 1rem, 2.5rem) Título de capítulo.
--text-3xl Encabezado de nivel h1 clamp(2rem, 4vw + 1rem, 3.5rem) Título principal de página.
--text-hero Título grande de exhibición clamp(2.5rem, 6vw + 1rem, 5rem) Título de portada o landing.

Ejemplo

/* Recomendado: usar clamp() + variables CSS para gestionar el sistema de tamaños de fuente */
:root {
    --text-xs:   clamp(0.7rem, 0.5vw + 0.5rem, 0.8rem);
    --text-sm:   clamp(0.85rem, 0.8vw + 0.6rem, 0.95rem);
    --text-md:   clamp(1rem, 1vw + 0.75rem, 1.125rem);
    --text-lg:   clamp(1.15rem, 1.5vw + 0.8rem, 1.5rem);
    --text-xl:   clamp(1.25rem, 2vw + 0.75rem, 2rem);
    --text-2xl:  clamp(1.5rem, 2.5vw + 1rem, 2.5rem);
    --text-3xl:  clamp(2rem, 4vw + 1rem, 3.5rem);
    --text-hero: clamp(2.5rem, 6vw + 1rem, 5rem);
}

body {
    font-size: var(--text-md);
    line-height: 1.6;
}

h1 { font-size: var(--text-3xl); }
h2 { font-size: var(--text-2xl); }
h3 { font-size: var(--text-xl); }
small { font-size: var(--text-sm); }

Prácticas recomendadas y prácticas a evitar

A continuación se enumeran varias escrituras recomendadas y no recomendadas en escenarios comunes.

Escenario Escritura no recomendada Escritura recomendada
Configuración del tamaño de fuente raíz html { font-size: 10px; } html { font-size: 100%; }
Tamaño de fuente del cuerpo p { font-size: 14px; } p { font-size: 1rem; }
Tamaño de fuente de títulos h1 { font-size: 48px; } h1 { font-size: clamp(1.75rem, 4vw + 1rem, 3.5rem); }
Texto pequeño small { font-size: 11px; } small { font-size: max(0.75rem, 12px); }
Tamaño de fuente responsivo Usar múltiples@mediapuntos de interrupción para cambiar valores fijos Usarclamp()para lograr una transición fluida
Accesibilidad html { font-size: 62.5%; } No establecer un tamaño de fuente raíz, o usar100%

Nohtmlobodyusar un valor fijo enpxpara establecer el tamaño de fuente raíz; esto sobrescribe la preferencia de tamaño de fuente del usuario en el navegador y desactiva la función de accesibilidad de fuentes grandes.


Derivación de la fórmula de tipografía fluida con clamp()

clamp()El valor intermedio normalmente usa unidades de viewport más una base de rem.

Esto forma una fórmula de interpolación lineal de "ancla + pendiente", que controla con precisión la tasa de cambio del tamaño de fuente en diferentes anchos de pantalla.

Pasos de derivación de la fórmula

Supongamos que se necesita una transición suave del tamaño de fuente de 16px a 24px entre viewports de 320px y 1240px.

Paso Fórmula Cálculo de este ejemplo
1. Calcular la pendiente (px máx - px mín) / (vp máx - vp mín) (24 - 16) / (1240 - 320) = 0.00869, aproximadamente 0.87vw
2. Calcular la intersección px mín - pendiente × vp mín 16 - 0.00869 × 320 = 13.2px, aproximadamente 0.825rem
3. Obtener el valor preferido pendiente × 100vw + intersección 0.87vw + 0.825rem

Ejemplo

/* Fórmula: preferred = pendiente × 100vw + intersección */
/* Pendiente = (px máx - px mín) / (vp máx - vp mín) */
/* Intersección = px mín - pendiente × vp mín */

/* Ejemplo: transición de 16px a 24px entre viewports de 320px~1240px */
/* Pendiente = (24-16) / (1240-320) = 0.00869 ≈ 0.87vw */
/* Intersección = 16 - 0.00869×320 ≈ 13.2px ≈ 0.825rem */

p {
    font-size: clamp(1rem, 0.87vw + 0.825rem, 1.5rem);
}

clamp()Es compatible con Chrome 79+, Firefox 75+, Safari 13.1+ y Edge 79+, por lo que se puede usar de forma segura en producción.


Explicación detallada de las funciones min() y max()

min(a, b, ...)Devuelve el valor mínimo entre varios valores, lo que equivale a establecer un "límite superior".

max(a, b, ...)Devuelve el valor máximo entre varios valores, lo que equivale a establecer un "límite inferior".

Pueden recibir cualquier cantidad de argumentos y se pueden mezclar diferentes unidades entre los argumentos.

Función Comportamiento Efecto Escenarios de uso
min() Selecciona el valor mínimo entre todos los argumentos Establecer límite superior Evita que el tamaño de fuente sea demasiado grande.
max() Selecciona el valor máximo entre todos los argumentos Establecer límite inferior Garantiza un tamaño de fuente mínimo legible.
clamp() Limita simultáneamente el valor mínimo, el valor preferido y el valor máximo Establecer límites superior e inferior Solución completa de tamaño de fuente fluido.

Ejemplo

/* min() — el tamaño de fuente no supera 2rem */
h2 {
    font-size: min(5vw, 2rem);
}

/* max() — el tamaño de fuente no es inferior a 1rem */
small {
    font-size: max(0.75vw, 1rem);
}

/* Combinación: min y max equivalen a clamp */
/* clamp(MIN, VAL, MAX) es equivalente a max(MIN, min(VAL, MAX)) */
h1 {
    font-size: max(1.5rem, min(4vw, 3rem));
}

/* Múltiples argumentos: toma el mínimo de los tres */
.label {
    font-size: min(1rem, 3vw, 14px);
}

/* Unidades mixtas */
.fluid {
    font-size: max(12px, 1.2vw + 0.5rem);
}

Explicación detallada de la función calc()

calc()Admite las cuatro operaciones aritméticas (suma, resta, multiplicación y división) y puede mezclar cualquier unidad.

En escenarios de tamaño de fuente, a menudo se usa conremyvwen combinación.

Reglas de operaciones aritméticas

Operación Sintaxis Restricciones Ejemplo
Suma calc(1rem + 0.5vw) Debe haber espacios en ambos lados del operador. font-size: calc(1rem + 0.5vw);
Resta calc(2rem - 4px) Debe haber espacios en ambos lados del operador. font-size: calc(2rem - 4px);
Multiplicación calc(1.5 * 16px) Uno de los valores debe carecer de unidad. font-size: calc(1.5 * 16px);
División calc(24px / 1.5) El lado derecho debe ser un número sin unidad y distinto de 0. font-size: calc(24px / 1.5);

calc(1rem+2px)es una sintaxis incorrecta; se deben escribir espacios en ambos lados del operador. La sintaxis correcta escalc(1rem + 2px)。

Ejemplo

/* Operaciones aritméticas básicas */
font-size: calc(1rem + 0.5vw);       /* Suma */
font-size: calc(2rem - 4px);         /* Resta */
font-size: calc(1.5 * 16px);         /* Multiplicación (uno debe ser un número sin unidad) */
font-size: calc(24px / 1.5);         /* División (el lado derecho debe ser un número sin unidad) */

/* Combinado con variables CSS */
:root {
    --scale: 1.25;
    --base: 1rem;
}
h3 {
    font-size: calc(var(--base) * var(--scale));
}

/* calc anidado (los navegadores modernos admiten omitir el calc interno) */
font-size: calc(clamp(1rem, 2vw, 2rem) * 0.8);

Uso de calc para construir una escala tipográfica modular

Mediantecalc()y variables CSS, se puede implementar una escalera de tamaños de fuente basada en una proporción fija.

El siguiente ejemplo utiliza la proporción Major Third (1.25).

Ejemplo

/* Uso de calc + variables CSS para implementar la proporción Major Third (1.25) */
:root {
    --ratio: 1.25;
    --step-0: 1rem;                                       /* 16px */
    --step-1: calc(var(--step-0) * var(--ratio));         /* 20px */
    --step-2: calc(var(--step-1) * var(--ratio));         /* 25px */
    --step-3: calc(var(--step-2) * var(--ratio));         /* 31.25px */
    --step--1: calc(var(--step-0) / var(--ratio));        /* 12.8px */
}

p     { font-size: var(--step-0); }
h3    { font-size: var(--step-1); }
h2    { font-size: var(--step-2); }
h1    { font-size: var(--step-3); }
small { font-size: var(--step--1); }

Herencia y cascada

font-sizeEs una propiedad heredable.

Si un elemento hijo no establece explícitamente el tamaño de fuente, hereda el valor calculado del elemento padre, no el valor declarado.

Proceso de cálculo de herencia

A continuación se muestra una cadena típica de herencia de tamaño de fuente.

Selector Valor declarado Resultado calculado Explicación
html 100% 16px Valor predeterminado del navegador.
body inherit 16px Heredado de html.
.article 1.125rem 18px Calculado según el tamaño de fuente raíz.
.article p inherit 18px Se hereda el valor calculado de 18px, no 1.125rem.
.article em 1em 18px emSegún el valor calculado del elemento padre, 1 × 18px = 18px.

Prioridad y orden de cascada

Cuando varias reglas establecen simultáneamentefont-size, se aplican en el siguiente orden de prioridad, de mayor a menor.

Prioridad Origen Ejemplo
1 (la más alta) !importantEstilo en línea <p style="font-size: 20px !important">
2 !importantReglas de hoja de estilos p { font-size: 20px !important; }
3 Estilo en línea <p style="font-size: 18px">
4 Selector de ID #title { font-size: 24px; }
5 Selectores de clase / pseudoclase / atributo .heading { font-size: 22px; }
6 Selectores de elemento / pseudoelemento p { font-size: 16px; }
7 (la más baja) Herencia / estilos predeterminados del navegador Proviene del elemento padre o del valor predeterminado del navegador.

Ejemplo

/* Prioridad de mayor a menor */
/* 1. Estilo en línea !important */
/* <p style="font-size: 20px !important"> */

/* 2. Reglas de hoja de estilos !important */
p { font-size: 20px !important; }

/* 3. Estilo en línea */
/* <p style="font-size: 18px"> */

/* 4. Selector de ID */
#title { font-size: 24px; }

/* 5. Selectores de clase/pseudoclase/atributo */
.heading { font-size: 22px; }

/* 6. Selectores de elemento/pseudoelemento */
p { font-size: 16px; }

/* 7. Herencia / estilos predeterminados del navegador */

No useshtmlobodyun valor fijo enpxpara establecer el tamaño de fuente raíz, ya que esto anula las preferencias de fuente del navegador del usuario. Usahtml { font-size: 100%; }o simplemente no lo configures.


Demostración interactiva

Con la demostración siguiente, puedes ver de forma intuitiva el efecto del tamaño de fuente con diferentes unidades.

Selecciona el tipo de unidad y arrastra el control deslizante de valor; el área de vista previa se actualiza en tiempo real.

Conversión y vista previa de unidades de font-size
16px
Texto de ejemplo del tutorial de CSS font-size

Resumen

font-sizeEs la propiedad fundamental del sistema de tipografía de CSS.

pxAdecuado para un control preciso,remAdecuado para sistemas globales de tamaño de fuente,emAdecuado para escalado local.

Las unidades de viewport son adecuadas para la tipografía fluida, pero es mejor combinarlas conclamp()para limitar los límites superior e inferior.

En proyectos reales, se recomienda usar variables CSS para gestionar los tamaños de fuente de forma unificada, priorizando la legibilidad y la experiencia responsive.

Para el texto del cuerpo en pantalla, se recomiendarem + clamp(), para estilos de impresión usapt。

No bloquees el tamaño de fuente raíz; siempre establece un límite mínimo para el texto pequeño (se recomienda no menos de 12px / 0.75rem).

Para el diseño responsive a nivel de componentes, prioriza las unidades de consulta de contenedorcqi / cqb。



Artículos relacionados

Tutorial de CSS:CSS Font

Referencia de CSS:Propiedad font

Otras extensiones