CSS hat keine max-font-size, daher müssen wir trickreich vorgehen, wenn wir etwas Ähnliches brauchen.
Warum sollte man es überhaupt brauchen? Nun, font-size selbst kann auf dynamische Weise eingestellt werden. Zum Beispiel: font-size: 10vw;. Das ist die Verwendung von „Viewport-Einheiten“ zur Größenbestimmung des Textes, der mit der Größe des Browserfensters größer und kleiner wird. Wenn wir max-font-size hätten, könnten wir begrenzen, wie groß er wird (ähnlich in die andere Richtung mit min-font-size).
Eine Lösung besteht darin, bei einer bestimmten Bildschirmgröße einen Media Query zu verwenden, der die Schriftgröße in einer nicht-relativen Einheit festlegt.
body {
font-size: 3vw;
}
@media screen and (min-width: 1600px) {
body {
font-size: 30px;
}
}
Es gibt ein Konzept, das als CSS-Locks bezeichnet wird und hier ausgefeilter ist, indem ein Wert langsam zwischen einem Minimum und einem Maximum skaliert wird. Wir haben das behandelt. Es kann so sein...
body {
font-size: 16px;
}
@media screen and (min-width: 320px) {
body {
font-size: calc(16px + 6 * ((100vw - 320px) / 680));
}
}
@media screen and (min-width: 1000px) {
body {
font-size: 22px;
}
}
Wir haben auch behandelt, wie es einfacher geworden ist (oder werden wird).
Es gibt eine max()-Funktion in CSS, sodass unser obiges Beispiel zu einer Einzeiler-Lösung wird
font-size: max(30vw, 30px);
Oder verdoppeln Sie es mit einem Minimum und Maximum
font-size: min(max(16px, 4vw), 22px);
Was identisch ist mit
font-size: clamp(16px, 4vw, 22px);
Die Browserkompatibilität für diese Funktionen ist ziemlich spärlich, während ich das schreibe, aber Chrome hat sie derzeit. Es wird schon noch kommen, aber schauen Sie sich die erste Option in diesem Artikel an, wenn Sie sie sofort benötigen.
Jetzt, da wir diese Funktionen haben, erscheint es mir unwahrscheinlich, dass wir jemals min-font-size und max-font-size in CSS erhalten werden, da die Funktionen fast so klar sind, wie sie sind.
Zustimmung. Mathematische Funktionen, die auf Größenwerte in Standardeigenschaften angewendet werden können, ergeben viel mehr Sinn als spezielle min-* und max-* Eigenschaften. Sogar alle überflüssigen Eigenschaften, die derzeit existieren, sollten als veraltet gekennzeichnet werden, sobald die clamp-Funktion weit verbreitet unterstützt wird.
Wie immer ein großartiger Artikel, Chris.
Nur eine Randbemerkung zur Einzeiler-Version mit clamp() – bei Verwendung von Viewport-Einheiten als bevorzugter Wert können Sie die Rate, mit der der Text seine Größe ändert, nicht steuern.
Sie möchten also vielleicht clamp() mit der CSS-Locks-Technik kombinieren, und mit ein wenig benutzerdefinierten Eigenschaften können Sie die Notwendigkeit von Media Queries sogar ganz einfach weglassen
Seien Sie bitte vorsichtig mit maximalen Textgrößen, insbesondere auf Websites/Seiten, die sich an die allgemeine Öffentlichkeit oder Mitarbeiter richten. Wenn Sie verhindern, dass der Text um 200 % skaliert, ist das ein Verstoß gegen WCAG SC 1.4.4 auf Level AA. Viewport-Einheiten haben ihre eigene Hervorhebung als großes Risiko in WCAG.
Unabhängig davon, welche Technik Sie verwenden, stellen Sie sicher, dass der Text der Seite mindestens um 200 % gezoomt werden kann. Und ja, ich habe über responsiven Text und Zoom geschrieben und vor
min(),max()undclamp()gewarnt.