CSS font-sizeEigenschaft
Legen Sie die Schriftgröße für verschiedene HTML-Elemente fest.
Selbst ausprobieren »
Eigenschaftsdefinition und Verwendungshinweise
Die Eigenschaft font-size wird verwendet, um die Schriftgröße festzulegen.
font-size bestimmt nicht nur die angezeigte Textgröße, sondern beeinflusst auchem、line-height、letter-spacingund andere damit zusammenhängende Typografie-Berechnungen.
| Standardwert: | mittel |
|---|---|
| Vererbt: | ja |
| Version: | CSS1 |
| JavaScript-Syntax: | object.style.fontSize="larger" |
Browser-Unterstützung
Die Zahlen in der Tabelle geben die erste Browserversion an, die die Eigenschaft unterstützt.
| Eigenschaft | |||||
|---|---|---|---|---|---|
| font-size | 1.0 | 5.5 | 1.0 | 1.0 | 7.0 |
Grundlegende Konzepte
font-sizeWird verwendet, um die Schriftgröße des Textes innerhalb eines Elements festzulegen.
Die standardmäßige Root-Schriftgröße des Browsers ist normalerweise16px。
Das heißt, standardmäßightml { font-size: 100%; }normalerweise äquivalent zuhtml { font-size: 16px; }。
Dieser Standardwert dient als Berechnungsgrundlage für viele relative Einheiten.
Beispiel
html {
font-size: 100%; /* Normalerweise äquivalent zu 16px, unter Berücksichtigung der Browsereinstellungen des Benutzers */
}
/* Textgröße des Body-Textes festlegen */
body {
font-size: 16px; /* Übliche Basis-Schriftgröße für den Body-Text */
line-height: 1.6; /* Einheitenlose Zeilenhöhe für einfachere Vererbung verwenden */
}
/* Überschriftengröße festlegen */
h1 {
font-size: 2rem; /* Standardmäßig ungefähr 32px */
}
Es wird nicht empfohlen, die Schriftgröße des Wurzelelements willkürlich auf einen sehr kleinen Wert festzulegen, da dies die Schriftpräferenzen der Nutzer im Browser und das Barrierefreiheitserlebnis beeinträchtigen kann.
Häufige Werttypen für font-size
font-sizeEs können Schlüsselwörter, Längeneinheiten, Prozentwerte und Funktionen verwendet werden.
Verschiedene Werte eignen sich für verschiedene Szenarien.
| Werttypen | Beispiel | Beschreibung | Anwendbare Szenarien |
|---|---|---|---|
| Schlüsselwörter | small、large |
Vom Browser anhand voreingestellter Verhältnisse berechnet. | Geeignet für einfache Seiten und Szenarien, die den Standardeinstellungen des Nutzers folgen müssen. |
| Absolute Einheiten | 16px、12pt |
Die Größe ist relativ fest und bietet eine starke Kontrollierbarkeit. | Präzise Steuerung der Benutzeroberfläche und Druckstile. |
| Relative Einheiten | 1rem、1.25em |
Berechnet relativ zum Elternelement oder Wurzelelement. | Responsives Design und komponentenbasierte Seiten. |
| Viewport-Einheiten | 4vw、3vmin |
Berechnet relativ zur Größe des Browser-Viewports. | Große Überschriften, Präsentationsseiten und fluide Typografie. |
| CSS-Funktionen | clamp()、calc() |
Berechnet die Schriftgröße dynamisch über Ausdrücke. | Moderne responsive Typografie. |
Schlüsselwortwerte
CSS bietet zwei Arten von Schriftgrößen-Schlüsselwörtern.
Eine Art sind absolute Größen-Schlüsselwörter, wie z. B.small、medium、large。
Die andere Art sind relative Größen-Schlüsselwörter, wie z. B.largerundsmaller。
Schlüsselwörter für absolute Größen
Schlüsselwörter für absolute Größen sind keine festen Pixelwerte, sondern vom Browser anhand der Standard-Schriftgröße berechnete Stufen.
| Schlüsselwörter | Ungefähre Werte bei der Standardgröße von 16px | ratio | Anwendbare Szenarien |
|---|---|---|---|
xx-small |
ungefähr 9px | 0.56-fach | Sehr kleiner Anmerkungstext, nicht für Fließtext empfohlen. |
x-small |
Etwa 10px | 0.625x | Fußnoten oder Zusatzinformationen. |
small |
Etwa 13px | 0.8-fach | Hilfetext. |
medium |
Etwa 16px | 1x | Standard-Fließtext. |
large |
Etwa 18px | 1.125x | Kleine Überschriften oder hervorgehobener Text. |
x-large |
Etwa 24px | 1.5-mal | Titel. |
xx-large |
Etwa 32px | 2x | Große Überschrift. |
xxx-large |
Etwa 48px | 3x | Display-Überschriften. |
Schlüsselwörter für relative Größen
largerundsmallerSie skalieren relativ zur Schriftgröße des übergeordneten Elements nach oben oder unten.
Sie eignen sich für einfache Szenarien, in denen die Schriftgröße dem Elternelement folgen muss.
Beispiel
.parent {
font-size: 16px;
}
/* larger wird relativ zum Elternelement hochskaliert, wobei das genaue Verhältnis vom Browser bestimmt wird */
.child-larger {
font-size: larger;
}
/* smaller wird relativ zum Elternelement herunterskaliert, wobei das genaue Verhältnis vom Browser bestimmt wird */
.child-smaller {
font-size: smaller;
}
Schlüsselwortwerte sind barrierefreundlicher, bieten aber weniger Kontrolle; in realen Projekten werden häufiger verwendet
rem、emoderclamp()。
Absolute Einheiten
Absolute Einheitenwerte sind relativ fest und hängen nicht von der Schriftgröße des Elternelements ab.
Sie eignen sich für Oberflächen, die eine präzise Steuerung erfordern, oder für Druckstile.
| Einheit | Bedeutung | Umrechnungsverhältnis | Anwendbare Szenarien |
|---|---|---|---|
px |
Logische CSS-Pixel. | Die am häufigsten verwendete Längeneinheit auf Bildschirmen. | Weboberflächen und Schriftgrößen von Komponenten. |
pt |
Druckpunkt. | 1pt = 1/72 Zoll, ungefähr 1.333px. | Druckstil. |
cm / mm |
Zentimeter / Millimeter. | 1cm = 37.8px,1mm = 3.78px. | Drucktypografie; wird selten auf Webseiten verwendet. |
in |
Zoll. | 1in = 96px. | Druck- oder spezielle Größenumrechnung. |
pc |
Pica. | 1pc = 12pt = 16px. | Traditionelle Typografie-Szenarien, selten auf Webseiten verwendet. |
Beispiel
/* 1in = 96px = 2.54cm = 25.4mm = 6pc = 72pt */
/* Beim Drucken normalerweise pt verwenden */
@media print {
body {
font-size: 12pt;
}
}
/* Bildschirmanzeigen verwenden normalerweise px, rem oder clamp() */
@media screen {
body {
font-size: 16px;
}
}
Auf modernen Bildschirmen bezieht sich 1px normalerweise auf ein CSS-logisches Pixel, das nicht unbedingt einem physischen Pixel entspricht.
Relative Einheiten
Relative Einheiten werden dynamisch anhand eines Referenzwerts berechnet.
Sie sind die am häufigsten verwendeten Schriftgrößeneinheiten im modernen responsiven Design.
| Einheit | Referenzobjekt | Beschreibung | Typische Verwendung |
|---|---|---|---|
em |
Die Schriftgröße des übergeordneten Elements oder des aktuellen Elements. | verwendet fürfont-sizeBei Bezug auf das übergeordnete Element multiplizieren sie sich kumulativ, wenn sie verschachtelt werden. |
Lokale Komponentenskalierung. |
rem |
WurzelelementhtmlSchriftgröße. |
Unbeeinflusst von Verschachtelung, was eine stabilere Berechnung ermöglicht. | Websiteweites Schriftgrößensystem. |
% |
Schriftgröße des übergeordneten Elements. | Infont-sizeverhält sich ähnlichem。 |
Skaliert proportional zum übergeordneten Element. |
ch |
Zeichen0die Breite. |
Wird häufiger zur Steuerung der Linienbreite verwendet. | width: 60ch; |
ex |
Die Höhe eines Kleinbuchstabens x. | Wird erheblich vom Schriftdesign beeinflusst. | Einige spezielle Typografie-Fälle. |
lh |
Zeilenhöhe des Elements. | Eine neue Einheit, die in CSS Values 4 hinzugefügt wurde. | Abstand, der an der Zeilenhöhe ausgerichtet ist. |
Der Unterschied zwischen em und rem
emin den Einstellungenfont-sizees wird relativ zur Schriftgröße des übergeordneten Elements berechnet.
Wenn mehrere Verschachtelungsebenen alle verwendenemwird die Schriftgröße Schicht für Schicht multipliziert.
remImmer relativ zur Schriftgröße des Wurzelelements berechnet, daher ist es stabiler.
Beispiel
html {
font-size: 16px;
}
/* em wird von der Schriftgröße des übergeordneten Elements beeinflusst */
.outer {
font-size: 1.5em; /* 16px × 1.5 = 24px */
}
.middle {
font-size: 1.5em; /* 24px × 1.5 = 36px */
}
/* rem wird immer relativ zu html berechnet */
.outer-rem {
font-size: 1.5rem; /* 16px × 1.5 = 24px */
}
.middle-rem {
font-size: 1.5rem; /* 16px × 1.5 = 24px, nicht kumulativ multipliziert */
}
In
font-sizeAngewendet aufemBei Verwendung ist es relativ zur Schriftgröße des Elternelements; aber im selben ElementpaddingodermarginAngewendet aufemist es relativ zur Schriftgröße des Elements selbst.
Viewport-Einheiten
Viewport-Einheiten werden basierend auf der Größe des Browserfensters berechnet.
Sie eignen sich für die Umsetzung fluider Typografie, die sich mit der Bildschirmbreite ändert.
Die alleinige Verwendung von Viewport-Einheiten kann jedoch dazu führen, dass Text auf Smartphones zu klein und auf ultrabreiten Bildschirmen zu groß ist.
| Einheit | Bedeutung | Beschreibung | Typische Szenarien |
|---|---|---|---|
vw |
1% der Viewport-Breite. | Je breiter der Viewport ist, desto größer ist die Schriftgröße. | Responsive Überschriften. |
vh |
1% der Viewport-Höhe. | Auf Mobilgeräten werden sie durch die Browser-Toolbar beeinflusst. | Vollbild-Anzeigeseiten. |
vmin |
vwundvh1% des kleineren Werts. |
Geeignet für die Handhabung sowohl des Quer- als auch des Hochformats. | Adaptive große Überschriften. |
vmax |
vwundvh1% des größeren Werts. |
Größerer Variationsgrad. | Visuelles Design im Präsentationsstil. |
svh / dvh / lvh |
Kleine / dynamische / große Viewport-Höhe. | Wird verwendet, um das Problem sich ändernder Browser-Toolbars auf Mobilgeräten zu lösen. | Mobile Vollbildseiten. |
cqi / cqb |
Container-Query-Einheiten. | Relativ zur Containergröße, nicht zum gesamten Viewport. | Responsive Typografie auf Komponentenebene. |
Beispiel
h1 {
font-size: 5vw;
}
/* Es wird empfohlen, clamp() zu verwenden, um die oberen und unteren Grenzen festzulegen */
h1 {
font-size: clamp(1.5rem, 5vw, 3.5rem);
}
/* Container-Query-Einheiten eignen sich für responsives Design auf Komponentenebene */
.card {
container-type: inline-size;
}
.card-title {
font-size: clamp(1rem, 4cqi, 2rem);
}
Container-Query-Einheiten eignen sich für Komponentenbibliotheken und Kartenlayouts, weil die Größe einer Komponente nicht unbedingt der Größe des Browser-Viewports entsprechen muss.
clamp()-Funktion
clamp()Sie ist eine sehr praktische Funktion in der modernen responsiven Typografie.
Sie kann die Schriftgröße zwischen einem Mindest- und einem Höchstwert begrenzen.
Der mittlere Wert verwendet normalerweise Viewport-Einheiten oder Berechnungsausdrücke, wodurch sich die Schriftgröße mit dem Bildschirm ändern kann.
| Parameter | Bedeutung | Beispiel | Beschreibung |
|---|---|---|---|
| Mindestwert | Die Schriftgröße wird nicht kleiner als dieser Wert. | 1rem |
Sorgt für Lesbarkeit auf mobilen Geräten. |
| bevorzugter Wert | Der Browser versucht zuerst, diesen dynamischen Wert zu verwenden. | 2vw + 1rem |
Ermöglicht, dass sich die Schriftgröße fließend mit dem Bildschirm ändert. |
| Höchstwert | Die Schriftgröße wird nicht größer als dieser Wert sein. | 3rem |
Verhindert, dass Text auf großen Bildschirmen zu groß wird. |
Beispiel
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);
}
/* Ein Design-System mit CSS-Variablen aufbauen */
: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);
}
min()- und max()-Funktionen
min()Nimmt den kleinsten Wert aus mehreren Werten.
max()Nimmt den größten Wert aus mehreren Werten.
Sie können für die Schriftgröße verwendet werden, aber in der fluiden Typografie sind sie normalerweise nicht so gut wieclamp()intuitiv.
| Funktion | Verhalten | Beispiel | Anwendbare Szenarien |
|---|---|---|---|
min() |
Den kleineren berechneten Wert auswählen. | min(5vw, 48px) |
Nur das Maximum begrenzen. |
max() |
Den größeren berechneten Wert auswählen. | max(1rem, 2vw) |
Nur das Minimum begrenzen. |
clamp() |
Minimale, bevorzugte und maximale Werte gleichzeitig festlegen. | clamp(1rem, 2vw, 2rem) |
Eine vollständige Lösung für fluide Schriftgrößen. |
Beispiel
h1 {
font-size: min(5vw, 48px);
}
/* Die Schriftgröße wird nicht kleiner als 16px sein, kann auf großen Bildschirmen aber zu groß sein */
h2 {
font-size: max(16px, 3vw);
}
/* Begrenzt sowohl den Minimal- als auch den Maximalwert, besser für echte Projekte geeignet */
h3 {
font-size: clamp(16px, 3vw, 32px);
}
calc()-Funktion
calc()Verschiedene Einheiten können in Berechnungen innerhalb von CSS gemischt werden.
Es wird oft verwendet, um feste Werte mit relativen Werten zu kombinieren.
In Szenarien mit Schriftgröße,calc()oft mitvw、remWird zusammen verwendet.
Beispiel
h1 {
font-size: calc(1.5rem + 2vw);
}
/* Die Verwendung von calc() in clamp() macht den Code klarer */
h2 {
font-size: clamp(1.25rem, calc(1rem + 2vw), 3rem);
}
/* Hinweis: Auf beiden Seiten des Operators müssen Leerzeichen beibehalten werden */
p {
font-size: calc(1rem + 0.25vw);
}
calc(1rem+2vw)Diese Art von Syntax ist falsch; Leerzeichen sollten auf beiden Seiten des Operators geschrieben werden, z. B.calc(1rem + 2vw)。
Vererbung und Kaskade
font-sizeEs ist eine vererbte Eigenschaft.
Wenn ein Kindelement keine deklarierte Schriftgröße hat, erbt es die berechnete Schriftgröße des Elternelements.
Dies ist ebenfallsemEiner der Gründe, warum es beim Verschachteln leicht zu kumulativen Multiplikationsproblemen kommt.
Beispiel
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>font-size-Vererbungsbeispiel</title>
<style>
.article {
font-size: 18px; /* Untergeordnete Elemente erben diese Schriftgröße standardmäßig */
}
.article p {
font-size: 1em; /* entspricht 18px */
}
.article .note {
font-size: 0.875em; /* 18px × 0.875 = 15.75px */
}
</style>
</head>
<body>
<div class="article">
<p>Dies ist ein Text.</p>
<p class="note">Dies ist ein kleinerer Erklärungstext.</p>
</div>
</body>
</html>
Best Practices
In realen Projekten ist es nicht empfehlenswert, den gesamten Text fest alspx。
Ein besserer Ansatz ist die Verwendung von Root-Schriftgröße, CSS-Variablen undclamp()Kombiniert zu einem stabilen Schriftgrößensystem.
| Nicht empfohlen | Empfohlene Vorgehensweise | Grund |
|---|---|---|
font-size: 12px;Wird für großen Fließtext verwendet. |
font-size: 1rem; |
Zu kleiner Fließtext kann das Leseerlebnis beeinträchtigen. |
Alle Ebenen der Komponenten verwendenem。 |
Für globale Schriftgrößen verwenden Sierem, und für lokale Skalierung verwenden Sieem。 |
Vermeiden Sie, durch verschachtelte Multiplikation die Kontrolle über die Schriftgröße zu verlieren. |
Nur Titelfont-size: 6vw;。 |
font-size: clamp(1.75rem, 4vw, 3.5rem); |
Verhindert, dass Text auf kleinen Bildschirmen zu klein und auf großen Bildschirmen zu groß ist. |
| Schriftgrößen willkürlich über verschiedene Seiten hinweg definieren. | CSS-Variablen verwenden, um die Schriftgrößenskala zu vereinheitlichen. | Erleichtert die Pflege eines konsistenten visuellen Systems. |
Beispiel
: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);
}
Im Allgemeinen kann verwendet werden
remEin globales Schriftgrößensystem einrichten, verwendenemfür lokale proportionale Skalierung verwendenclamp()für responsive Überschriften.
Empfohlenes Schriftgrößenskala-System
Das Folgende ist ein font-size-Token-System, das auf dem Modular-Scale-Ansatz basiert.
Jedes Token verwendetclamp()Stellen Sie geeignete Größen sowohl auf den kleinsten als auch auf den größten Bildschirmen sicher.
| Token | Zweck | Empfohlene clamp()-Werte | Hinweise |
|---|---|---|---|
--text-xs |
Labels, Badges | clamp(0.7rem, 0.5vw + 0.5rem, 0.8rem) |
Es wird nicht empfohlen, unter 11px zu gehen. |
--text-sm |
Hilfstext, Bildunterschriften | clamp(0.85rem, 0.8vw + 0.6rem, 0.95rem) |
Häufig in Anmerkungen und sekundären Informationen zu sehen. |
--text-md |
Body-Baseline | clamp(1rem, 1vw + 0.75rem, 1.125rem) |
Empfohlen als Standard-Schriftgröße für den Fließtext. |
--text-lg |
Untertitel | clamp(1.15rem, 1.5vw + 0.8rem, 1.5rem) |
Unterüberschriften für Artikel oder Karten. |
--text-xl |
Überschrift der Ebene h3 | clamp(1.25rem, 2vw + 0.75rem, 2rem) |
Unterabschnittstitel. |
--text-2xl |
Überschrift der Ebene h2 | clamp(1.5rem, 2.5vw + 1rem, 2.5rem) |
Abschnittstitel. |
--text-3xl |
Überschrift auf h1-Ebene | clamp(2rem, 4vw + 1rem, 3.5rem) |
Haupttitel der Seite. |
--text-hero |
Große Überschrift im Display-Stil | clamp(2.5rem, 6vw + 1rem, 5rem) |
Titel der Homepage oder Landingpage. |
Beispiel
: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); }
Empfohlene Vorgehensweisen und was zu vermeiden ist
Im Folgenden finden Sie mehrere Sammlungen empfohlener und nicht empfohlener Vorgehensweisen für häufige Szenarien.
| Szenarien | Nicht empfohlen | Empfohlene Vorgehensweise |
|---|---|---|
| Einstellung der Root-Schriftgröße. | html { font-size: 10px; } |
html { font-size: 100%; } |
| Body-Schriftgröße | p { font-size: 14px; } |
p { font-size: 1rem; } |
| Schriftgröße für Überschriften | h1 { font-size: 48px; } |
h1 { font-size: clamp(1.75rem, 4vw + 1rem, 3.5rem); } |
| Kleiner Text | small { font-size: 11px; } |
small { font-size: max(0.75rem, 12px); } |
| Responsive Schriftgröße. | mit mehreren@mediaFeste Werte an Breakpoints umschalten |
Nutzungclamp()Flüssige Übergänge implementieren |
| Barrierefreiheit | html { font-size: 62.5%; } |
Legen Sie die Root-Schriftgröße nicht fest oder verwenden Sie100% |
nicht
htmloderbodyOben fixiertpxDas Festlegen der Root-Schriftgröße überschreibt die vom Benutzer im Browser eingestellte bevorzugte Schriftgröße, wodurch die Barrierefreiheitsfunktion für großen Text fehlschlägt.
Herleitung der clamp()-Formel für flüssige Schriftgröße
clamp()Der mittlere Wert verwendet normalerweise Viewport-Einheiten plus eine rem-Basislinie.
Dies ergibt eine lineare Interpolationsformel aus "Anker + Steigung", die die Geschwindigkeit, mit der sich die Schriftgröße über verschiedene Bildschirmbreiten ändert, präzise steuert.
Schritte zur Formelableitung
Angenommen, die Schriftgröße muss zwischen Viewports von 320px und 1240px reibungslos von 16px auf 24px übergehen.
| Schritte | Formel | Berechnung in diesem Beispiel |
|---|---|---|
| 1. Steigung berechnen | (max. px - min. px) / (max. vp - min. vp) | (24 - 16) / (1240 - 320) = 0.00869, ungefähr 0.87vw |
| 2. Achsenabschnitt berechnen | Min. px - Steigung × min. vp | 16 - 0.00869 × 320 = 13.2px, ungefähr 0.825rem |
| 3. Bevorzugten Wert herleiten | Steigung × 100vw + Achsenabschnitt | 0.87vw + 0.825rem |
Beispiel
/* Slope = (max px - min px) / (max vp - min vp) */
/* Intercept = minimum px - slope × minimum vp */
/* Beispiel: Übergang von 16px zu 24px zwischen 320px und 1240px Viewport-Breite */
/* slope = (24-16) / (1240-320) = 0.00869 ≈ 0.87vw */
/* intercept = 16 - 0.00869×320 ≈ 13.2px ≈ 0.825rem */
p {
font-size: clamp(1rem, 0.87vw + 0.825rem, 1.5rem);
}
clamp()Unterstützt in Chrome 79+, Firefox 75+, Safari 13.1+ und Edge 79+, daher ist die Verwendung in der Produktion sicher.
Ausführliche Erklärung der Funktionen min() und max()
min(a, b, ...)Gibt das Minimum mehrerer Werte zurück, was dem Festlegen einer „Obergrenze“ entspricht.
max(a, b, ...)Gibt das Maximum mehrerer Werte zurück, was dem Festlegen einer „Untergrenze“ entspricht.
Sie können beliebig viele Argumente annehmen, und unter den Argumenten können verschiedene Einheiten gemischt werden.
| Funktion | Verhalten | Wirkung | Anwendbare Szenarien |
|---|---|---|---|
min() |
Den Mindestwert unter allen Parametern auswählen | Obergrenze festlegen | Verhindert, dass die Schriftgröße zu groß wird. |
max() |
Den Höchstwert unter allen Parametern auswählen | Untergrenze festlegen | Sorgt für eine minimale lesbare Schriftgröße. |
clamp() |
Begrenzt gleichzeitig den Mindestwert, den bevorzugten Wert und den Höchstwert. | Ober- und Untergrenzen festlegen. | Eine vollständige Lösung für fluide Schriftgrößen. |
Beispiel
h2 {
font-size: min(5vw, 2rem);
}
/* max() — Schriftgröße nicht kleiner als 1rem */
gering {
font-size: max(0.75vw, 1rem);
}
/* Kombination: min und max sind äquivalent zu clamp */
/* clamp(MIN, VAL, MAX) ist äquivalent zu max(MIN, min(VAL, MAX)) */
h1 {
font-size: max(1.5rem, min(4vw, 3rem));
}
/* Mehrere Parameter: nimmt das Minimum der drei */
.label {
font-size: min(1rem, 3vw, 14px);
}
/* Gemischte Einheiten */
.fluid {
font-size: max(12px, 1.2vw + 0.5rem);
}
Detaillierte Erklärung der calc()-Funktion
calc()Unterstützt die vier Grundrechenarten Addition, Subtraktion, Multiplikation und Division und kann beliebige Einheiten mischen.
In Schriftgrößen-Szenarien oft verwendet mitremundvwIn Kombination verwenden.
Regeln für arithmetische Operationen
| Operation | Syntax | Grenzwert | Beispiel |
|---|---|---|---|
| Addition | calc(1rem + 0.5vw) |
Auf beiden Seiten des Operators müssen Leerzeichen stehen. | font-size: calc(1rem + 0.5vw); |
| Subtraktion | calc(2rem - 4px) |
Auf beiden Seiten des Operators müssen Leerzeichen stehen. | font-size: calc(2rem - 4px); |
| Multiplikation | calc(1.5 * 16px) |
Einer der Werte muss einheitenlos sein. | font-size: calc(1.5 * 16px); |
| division | calc(24px / 1.5) |
Die rechte Seite muss eine einheitenlose Zahl sein, und nicht 0. | font-size: calc(24px / 1.5); |
calc(1rem+2px)Ist eine falsche Syntax; Leerzeichen sollten auf beiden Seiten des Operators geschrieben werden, die korrekte Syntax istcalc(1rem + 2px)。
Beispiel
font-size: calc(1rem + 0.5vw); /* Addition */
font-size: calc(2rem - 4px); /* Subtraktion */
font-size: calc(1.5 * 16px); /* Multiplikation (einer muss eine einheitenlose Zahl sein) */
font-size: calc(24px / 1.5); /* Division (die rechte Seite muss eine einheitenlose Zahl sein) */
/* Mit CSS-Variablen kombinieren */
:root {
--scale: 1.25;
--base: 1rem;
}
h3 {
font-size: calc(var(--base) * var(--scale));
}
/* Verschachteltes calc (moderne Browser unterstützen das Weglassen des inneren calc) */
font-size: calc(clamp(1rem, 2vw, 2rem) * 0.8);
Verwenden Sie calc, um eine modulare Schriftgrößenskala aufzubauen
Durchcalc()Und mit CSS-Variablen können Sie eine font-size-Leiter basierend auf einem festen Verhältnis implementieren.
Das folgende Beispiel verwendet das Verhältnis der großen Terz (1.25).
Beispiel
: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); }
Vererbung und Kaskade
font-sizeEs ist eine vererbte Eigenschaft.
Wenn ein Kindelement keine Schriftgröße explizit festlegt, erbt es den berechneten Wert des Elternelements, nicht den deklarierten Wert.
Berechnungsprozess erben
Nachfolgend sehen Sie eine typische font-size-Vererbungskette.
| Selektoren | deklarierter Wert | Berechnungsergebnis | Beschreibung |
|---|---|---|---|
html |
100% |
16px | Standardwert des Browsers. |
body |
inherit | 16px | Von html geerbt. |
.article |
1.125rem |
18px | Basierend auf der Root-Schriftgröße berechnet. |
.article p |
inherit | 18px | Vererbt wird der berechnete Wert 18px, nicht 1.125rem. |
.article em |
1em |
18px | emBasierend auf dem berechneten Wert des Elternelements: 1 × 18px = 18px. |
Spezifität und Kaskadenreihenfolge
Wenn mehrere Regeln gleichzeitig festlegenfont-sizeBei Anwendung gelten die folgenden Prioritäten von hoch bis niedrig.
| Rangfolge | Source | Beispiel |
|---|---|---|
| 1 (höchste) | !importantInline-Stil |
<p style="font-size: 20px !important"> |
| 2 | !importantStylesheet-Regeln. |
p { font-size: 20px !important; } |
| 3 | Inline-Stil | <p style="font-size: 18px"> |
| 4 | ID-Selektor | #title { font-size: 24px; } |
| 5 | Klassen- / Pseudoklassen- / Attributselektoren | .heading { font-size: 22px; } |
| 6 | Element- / Pseudo-Element-Selektoren | p { font-size: 16px; } |
| 7 (niedrigste) | Vererbte / Browser-Standardstile | Stammt vom Elternelement oder aus Browser-Standardwerten. |
Beispiel
/* 1. !important Inline-Stil */
/* <p style="font-size: 20px !important"> */
/* 2. !important-Stylesheet-Regeln */
p { font-size: 20px⟦⟧!important !important; }
/* 3. Inline-Stil */
/* <p style="font-size: 18px"> */
/* 4. ID-Selektoren */
#title { font-size: 24px; }
/* 5. Klassen-/Pseudoklassen-/Attribut-Selektoren */
.heading { font-size: 22px; }
/* 6. Element-/Pseudoelement-Selektoren */
p { font-size: 16px; }
/* 7. Vererbung/Browser-Standardstile */
nicht
htmloderbodyOben fixiertpxDas Festlegen der Root-Schriftgröße überschreibt die Schriftvoreinstellungen des Browsers des Benutzers. Bitte verwenden Siehtml { font-size: 100%; }Oder legen Sie sie einfach nicht fest.
Interaktive Demo
Durch die folgende Demo können Sie die font-size-Effekte unter verschiedenen Einheiten intuitiv sehen.
Wählen Sie den Einheitentyp und ziehen Sie den Werteschieberegler, und der Vorschaubereich wird in Echtzeit aktualisiert.
Zusammenfassung
font-sizeEs ist die grundlegende Eigenschaft des CSS-Typografiesystems.
pxGeeignet für präzise Kontrolle,remGeeignet für ein globales Schriftgrößensystem,emGeeignet für lokale Skalierung.
Viewport-Einheiten eignen sich für flüssige Typografie, aber am besten kombiniert man sie mitclamp()Begrenzen Sie die oberen und unteren Grenzen.
In echten Projekten wird empfohlen, CSS-Variablen zu verwenden, um Schriftgrößen einheitlich zu verwalten, wobei Lesbarkeit und responsives Erlebnis im Vordergrund stehen.
Empfohlen für Fließtext am Bildschirmrem + clamp(), für Druckstile verwendenpt。
Die Root-Schriftgröße nicht fixieren und für kleinen Text immer eine Mindestgrenze festlegen (empfohlen nicht unter 12px / 0.75rem).
Für Responsivität auf Komponentenebene Container-Query-Einheiten priorisierencqi / cqb。
Ähnliche Artikel
CSS-Tutorial:CSS-Schrift
CSS-Referenzhandbuch:font-Eigenschaft
Weitere Erweiterungen