Normalerweise hat ein Projekt eine Reihe von vordefinierten Schriftgrößen, normalerweise als Variablen benannt, auf eine Weise, die einen gewissen Anschein von Ordnung und Konsistenz anstrebt. Jedes Projekt von beträchtlicher Größe kann so etwas nutzen. Es gibt immer Überschriften, Absätze, Listen usw. Sie *könnten* Schriftgrößen explizit und direkt überall festlegen (z. B. font-size: 18px). Rohes CSS, sozusagen. Das sehe ich gelegentlich – eine gedankenlose Vermischung nicht nur von Größen, sondern auch von Einheiten wie px, rem und em im reinen Chaos.
Deshalb verwendet das CSS eines Projekts typischerweise Variablen oder Mixins – wir streben nach Struktur, Wartbarkeit und letztendlich Konsistenz. Wir alle wissen, dass Benennung schwierig ist, und man muss nicht weiter als bis zur Benennung von Schriftgrößenvariablen schauen, um zu verstehen, warum. Wie sollten wir eine kleine Schriftgrößenvariable benennen, damit klar ist, dass sie kleiner ist als eine große Schriftgrößenvariable? Und was passiert, wenn wir eine neue Variable dazwischen einfügen müssen – wird diese so benannt, dass ihre Beziehung zu den anderen Größenvariablen klar erklärt wird?
Wir werden in diesem Beitrag weiter über die Benennung von Schriftgrößenvariablen sprechen. Aber eigentlich erstreckt sich das Problem über Schriftgrößen hinaus auf jede Art von Größen- oder Längenwert. Denken Sie an Abstände, Ränder, Breiten, Höhen, Radien von Rahmen usw. Diese Dinge benötigen ebenfalls Struktur und Konsistenz!
Wie definieren Sie Schriftgrößen in Ihrem Projekt? Sieht es in etwa so aus mit benutzerdefinierten Variablen
:root {
/* Font size variables */
--small: 12px;
--medium: 16px;
--large: 24px;
}
Oder vielleicht haben Sie in Sass (was wir in diesem Artikel verwenden werden) Variablen für $small, $medium und $large Schriftgrößen.
In Ordnung. Nach einer Weile sagen wir, der Designer fügt eine neue <h1> Überschrift für einen Hero-Bereich hinzu. Und sie ist *sehr* groß. Größer als alles, was Sie im Projekt haben. Kein Problem, antworten Sie. Sie fügen ein $xlarge zum Projekt hinzu und machen weiter.
Am nächsten Tag erstellt der Designer ein schönes Formularlabel, das wieder eine neue Schriftgröße hat. Diese neue Größe ist zwar größer als klein, aber kleiner als mittel.

Jetzt geht's los.
Wie nennen Sie das? $small-medium? $small-2? $smedium? Wie auch immer Sie es nennen, Sie werden damit nicht zufrieden sein. Weil es dafür kein Wort gibt.
Oder sollten Sie es vielleicht refaktorieren? Ein neues $xsmall erstellen und alle Instanzen von $small in $xsmall ändern? Und dann können Sie $small für das Formularlabel verwenden? Es besteht ein geringes Risiko, dass Sie vergessen, es an einer Stelle zu ändern, und zack: ein Fehler. Was passiert beim nächsten Mal, wenn etwas eingeführt wird, das eine größere Größe als der Wert der $medium Variable hat? Müssen wir dann auch $large und $xlarge refaktorieren?
Ich schlage vor, sich immer an eine Skala zu halten. Eine einfache Lösung wäre eine weitere Abstraktion, vielleicht das Verwerfen von Zahlen und Größen zugunsten von Funktionsnamen, wie $form-label anstelle von $small-2 oder $xsmall.
Aber stellen Sie sich einen Satz von Schriftgrößen wie diesen vor
$small: 12px;
$form-label: 14px;
$medium: 16px;
$large: 24px;
Das ist eine fehlerhafte Skala. Es ist ein Größenkonzept und ein Komponentenkonzept miteinander vermischt. Es wirft Fragen auf. Sollte ein Alert oder ein Button $form-label verwenden dürfen? Igitt.
Vielleicht haben Sie ein griechisches Ding am Laufen und benennen die Variablen $alpha, $beta, $gamma? Dann frage ich Sie: Was ist größer als $alpha? $alpha-large? Oder Moment, ist $alpha die *kleine*?
Ich habe auch Namen wie $button-font-size, $label-font-size, $blockquote-font-size gesehen. Das scheint mir eine Variable pro verwendetes Element zu sein, anstatt einer Skala, und es klingt so, als könnte es viel doppelten Code geben, wenn derselbe Wert an mehreren Stellen mit unterschiedlichen Namen verwendet wird.
Vielleicht arbeiten Sie mit einer Basis-Schriftgröße und nur mit Prozentangaben? Sicher, aber ich würde sagen, Sie brauchen Variablen für die Prozentangaben. So handhabt Geoff die Schriftgrößen, und selbst er gibt zu, dass das Setup seine eigenen Augenbrauen hochzieht. Berechnungen mit subjektiv benannten Variablen mögen für Sie klar sein, aber für jeden anderen, der in das Projekt einsteigt, sehen sie seltsam und kompliziert aus.
h1 {
font-size: clamp(var(--text-size-large), calc(var(--text-size-base) * var(--text-size-scaler)), var(--text-size-huge));
}
Wir brauchen ein besseres System
Das *ständige* Hinzufügen und Entfernen von Dingen ist die Art und Weise, wie wir arbeiten *wollen*. Das ist moderne Entwicklung – MVP, Agile und all die anderen heißen Schlagworte.
Was wir brauchen, ist eine Skalensyntax, die Raum für Änderungen lässt. Das Hinzufügen einer neuen Größe zur Skala sollte einfach sein, ohne dass es zu Bruchänderungen kommt. Ich denke dabei an eine Art Skala, die sowohl **flexibel** als auch **unendlich** ist. Sie muss anspruchsvoller sein als $small, $medium und $large.
Sie sollte auch **beschreibend** und **intuitiv** sein. Idealerweise müssen Sie die Variablennamen nicht in der Einstellungsdatei oder der Konfiguration nachschlagen, oder wo auch immer Sie diese Dinge speichern. Ich habe keine Ahnung, ob $epsilon vor oder nach $sigma kommt. Sie?
Verwendung bestehender Systeme
Bevor wir versuchen, etwas Neues zu erfinden, gibt es eine bestehende Syntax oder ein System, das wir nutzen können? Hier sind einige, die ich angetroffen habe.
Internationales System der Einheiten
Sicherlich sind Ihnen Begriffe wie „Kilobyte“ und „Megabyte“ vertraut. Europäer sind sehr an „Millimeter“ und „Zentimeter“ gewöhnt. Andere Beispiele sind „Giga“, „Tera“ und „Peta“. Diese Präfixe können für Länge, Gewicht, Volumen und mehr verwendet werden. Könnte eine $centi Schriftgröße funktionieren? Sie ist bis zu einem gewissen Grad intuitiv, d.h. wenn Sie mit dem metrischen System vertraut sind. Das ist eine endliche Skala. Und es gibt keinen Raum, neue Größen hinzuzufügen, da sie bereits festgelegt sind.
Traditionelle Punktgrößen-Namen
Lange vor Computern und Desktop-Publishing wurden Bücher und Zeitungen mit Bleisatz gedruckt. Die Setzer hatten unterschiedliche Namen für verschiedene Größen. Die Größen beziehen sich auf eine Punktgröße (pt) und könnten theoretisch für Pixelgrößen (px) verwendet werden.
Die Schriftgrößen in diesem System heißen „Nonpareil“, „Pica“, „Cicero“ und „Great Primer“, um nur einige zu nennen. Die Namen sind je nach Kontinent und Land unterschiedlich. Außerdem kann derselbe Name unterschiedliche Größen haben, also… ziemlich verwirrend.
Dennoch gefällt mir dieses System in gewisser Weise, weil es eine Hommage an ein altes Handwerk aus vergangenen Zeiten wäre. Aber die Namen sind so seltsam und speziell für die Schriftgrößen gedacht, dass es weit hergeholt wirkt, sie für Dinge wie Breakpoints und Abstände zu verwenden.
Alltagsgegenstände auf einer Skala platzieren
Wie wäre es, Dinge aus unserem Alltag zu verwenden? Sagen wir Chilis.

Es gibt viele Arten von Chilis. Der $habanero ist schärfer als der $cayenne, der schärfer ist als der $jalapeno. Das wäre doch lustig, oder?
Aber so sehr ich die Idee, font-size: $tabasco zu schreiben, genieße, sehe ich zwei Probleme. Wenn Sie sich nicht mit Chilis auskennen, wissen Sie nicht, welcher Chili schärfer ist als ein anderer – er ist also nicht universell intuitiv. Außerdem hat die Gemüsepaprika auf der Scoville-Skala eine 0 und nichts ist darunter. Carolina Reaper ist die schärfste Paprika der Welt, also ist die Skala endlich.
Und ja, Paprika sind skalenmäßig nicht größer oder kleiner, sie sind schärfer. Schlechtes Konzept. Vielleicht etwas Gängigeres, wie Ballarten?

Es gibt eine große Bandbreite an verschiedenen Ballarten. Sie haben Handbälle, Fußbälle, Volleybälle usw. Brauchen Sie etwas Größeres als einen Medizinball? Nehmen Sie $beach. Etwas Kleineres als ein Tennisball? Nehmen Sie $pingpong. Das ist sehr intuitiv, da ich mir vorstelle, dass jeder schon einmal mit allen möglichen Bällen gespielt hat oder zumindest damit aus dem Sport vertraut ist.
Aber ist ein Tischtennisball größer als ein Golfball? Wer weiß? Außerdem sind ein Bowlingball und ein Fußball tatsächlich gleich groß. Also… wieder nicht perfekt.
Das Hochskalieren auf Planeten könnte funktionieren, aber dazu müsste man sich mit Astronomie auskennen.
Wie wäre es mit reinen Zahlen? Wir können nicht nur Zahlen verwenden, weil Tools wie stylelint protestieren werden. Aber würde so etwas funktionieren
$font-14: 14px;
$font-16: 16px;
$font-24: 24px;
Nun, es ist unendlich, da immer Platz für neue Ergänzungen ist. Aber es ist auch unglaublich spezifisch, und es gibt einige Nachteile, wenn der tatsächliche Wert Teil des Namens ist. Nehmen wir an, $font-18 wird an vielen Stellen verwendet. Und jetzt sagen sie, alle Stellen mit 18px müssen auf 19px geändert werden (aus verschiedenen Gründen). Jetzt müssen wir die Variable von $font-18 in $font-19 umbenennen und dann den Wert von $font-19 von 18px auf 19px ändern. Und das, bevor wir endlich alle Stellen, die $font-18 verwenden, auf $font-19 aktualisieren. Das ist fast so, als würde man rohes CSS verwenden. Niedrige Punktzahl für Wartbarkeit.
Was ist mit dem Tierreich?

Mutter Natur hat uns eine Fülle von Arten auf dieser Erde geschenkt, was in dieser Situation nützlich ist. Stellen Sie sich etwas wie das hier vor
$mouse: 12px;
$dog: 16px;
$hippo: 24px;
Brauchen Sie etwas Kleineres als eine Maus? Nehmen Sie $bee, $ant oder $flea. Größer als ein Bär? Versuchen Sie $moose oder $hippo. Größer als ein Elefant? Nun, da haben Sie den $whale, oder, wir können prähistorisch gehen und $t-rex verwenden. Es gibt immer ein Tier, das man hier noch unterbringen kann. Sehr vielseitig, sehr intuitiv, auch unendlich (fast). Und lustig obendrein – ich hätte nichts dagegen, font-size: $squirrel zu schreiben. 🤩
Aber auch das erfordert möglicherweise die Referenzierung der Variablen, es sei denn, wir wissen genau, welche Tiere in unserem Zoo von Schriftgrößen enthalten sind. Aber vielleicht ist das keine große Sache, solange es skaliert.
Ich habe viel zu viel Zeit damit verbracht, darüber nachzudenken
Oder habe ich das? Die Codebasis ist, wo Sie Ihre Arbeitsstunden verbringen. Es ist Ihre Arbeitsumgebung, genau wie Stühle und Monitore. Und der Arbeitsplatz sollte ein schöner Ort sein.
Wie handhaben Sie Ihre Schriftgrößen-Skalen? Haben Sie ein System für Schriftarten und ein anderes für Dinge wie Ränder? Kann jemand direkt in Ihren Code einsteigen und verstehen, wie alles organisiert ist? Erzählen Sie es uns in den Kommentaren!
Ja, ich habe letztes Jahr über dasselbe Problem nachgedacht.
Für numerische Werte nehme ich einfach die Zahl in den Namen auf.
Oder um magische Zahlen zu vermeiden, verwende einfach eine typografische Skala, damit die Zahlen in einer Variable eine Bedeutung haben. Auch ein vertikaler Rhythmus hilft auf die gleiche Weise für Abstände.
Für Farben verwende ich Schlüsselwörter wie
primary,secondary,tint,accentusw.Tolle Ausarbeitung und Vergleich. Zeigt nur, wie komplex dieses Problem ist!
Ich habe mich definitiv dabei ertappt,
--smalldann--smallestund--smallerzu verwenden, das ist eine rutschige Angelegenheit!In einer idealen Welt könnten wir expansive Benennungssysteme verwenden *und* uns alle beim Coden daran erinnern, aber ich denke, wir werden uns sowieso oft die Definitionen ansehen, sei es für Farben, Schriftarten usw.
Vielleicht gibt es hier zu viel antisemantisches Denken? „Groß“ ist anders als H1, H1 könnte kleiner als H2 sein oder kontextspezifisch sein.
Als Typograf und nicht als Coder wird alles zu einem Prozentsatz der Körperkopiegröße, die der einzige feste Wert ist.
H1-H6 ist immer von groß nach klein, und wenn Sie zum Beispiel Varianten von H1 für besondere Anlässe benötigen, wird es H1-large oder H1-landing oder was auch immer, nicht wirklich viele davon.
Genau wie Bildunterschriften oder juristische Texte sind sie seltene Ausnahmen und der Name macht genug Sinn, um zu erraten, dass sie klein und nicht groß sein werden. Die Benennung nach Anwendungsfall ist für mich also sinnvoll genug.
Sie könnten sich an der Musiknotation für Halb-Töne orientieren und $smallSharp, $mediumFlat (vielleicht sogar $bMedium) verwenden, oder (meine Präferenz) $demiMedium, um ein Element zwischen $small und $medium zu platzieren.
$subMedium (aber nicht $superSmall – das ist verwirrend), $semiSmall, $lesserMedium, $greaterSmall, $underMedium und $greaterSmall fallen mir auch ein, auch wenn sie nicht so nützlich sind.
Dies würde gut zur modularen Skala passen. Höchstwahrscheinlich gäbe es viel von der Musik zu lernen und sie als gesamte Struktur/Regeln in CSS anzuwenden.
Ich denke generell, eine Website sollte sowieso nur eine endliche (handvoll) Menge an Schriftgrößen verwenden, so dass die Liste der Namen nicht sehr lang sein muss. Eine Idee wäre, die
font-weight-Skala für Typografie zu verwenden, wie in$size-100ist die kleinste,$size-900ist die größte, und Sie haben alles dazwischen zur Verfügung. Brauchen Sie eine Größe zwischen100und200, versuchen Sie150.Ich habe gerade kommentiert, um genau diesen Fall zu schildern!
Andy Bells Cube CSS hat mich dazu gebracht und ist großartig darin, eine sofort erkennbare Skala relativ zu einem „Basiswert“ von 400 zu geben.
Ich persönlich verwende gerne eine strikte typografische Skala (wie die von Utopia generierten) auf Vielfachen von 100, und wenn ich Ad-hoc-Größen benötige, platziere ich sie dazwischen in einem angemessenen Bereich.
Ich mag es, ich werde es ausprobieren.
Gleicher Fall für Farben, wo Ihre Paletten von „green-100“ bis „green-900“ reichen, und im seltenen Fall, dass Sie einen Farbton benötigen, der nicht vorhanden ist (oder ihm sehr nahekommt …), können Sie immer auf „green-150“ zurückgreifen.
Hallo! UX/UI-Designer hier. Designer können und sollten dieses Problem lösen. Stark kommunizierende Teams neigen dazu, dieses Problem allen Teammitgliedern bekannt zu machen, und diese Änderungen sollten auf dem wachsenden Designsystem basieren. Aber Designer sind keine so ungehorsamen, unregierbaren Kreaturen. Sie müssen standardisiert oder zumindest konsistent sein.
Nun, wenn Sie ein einsamer Full-Stack-Entwickler sind, der sporadisch mit Designern arbeitet, sollten Sie sie besser informieren, sonst werden Sie verrückt.
Das ist normalerweise die Art und Weise, wie ich es am Ende mache. Ich dränge die Designer dazu, ein Typografie-Referenzblatt zu erstellen, und verwende tendenziell die Namen, die sie sich ausdenken. Titel, Überschrift, Unterüberschrift, Text, Lead, Bildunterschrift usw.
Dann wiederum, die Hälfte der Zeit erfinden sie wirklich faule Namen wie „groß fett“, und ich improvisiere wieder.
Nicht die intuitivste, aber ich neige dazu, „smaller“ < „small“ < „smallish“ zu verwenden, mit ähnlichem am „großen“ Ende, um meiner Skala ein paar zusätzliche Punkte zu geben. Für größere Projekte kann ich ein „tiny“ und „huge“ Set haben, auch wenn ich es nie brauche.
Gehen wir hier den falschen Weg? Sollte die Größe die Bedeutung widerspiegeln?
Nehmen wir an, Sie beginnen mit normalem Text; Überschrift; Unterüberschrift; Fußnote; Zitat usw. Sie können immer big-headline und small-headline und tiny-footnote hinzufügen und jeder weiß, was sie sind.
Ich mag diese Methode tatsächlich.
Nicht wirklich. Denn es ist leicht, dass die Größe einer „Überschrift“ auf der Startseite, auf der Seite mit den rechtlichen Bestimmungen oder auf der Produktseite unterschiedlich ist. Funktioniert für mich nicht.
Ich verwende typografische Skalenvariablen, die numerisch relativ sind, aber keine Pixelgrößen darstellen. Meine Basistextgröße ist
--scale0. Eine Größe kleiner als die Basisgröße ist--scale-1. Eine Größe größer als die Basisgröße ist--scale1. Hier ist, wie eine fünfstufige Skala aussehen könnte, von kleinster zu größter.Ich erkläre mehr im Detail in diesem 24 Ways Artikel.
Ein skalierbares Namensgebungssystem für Größen, wie hier vorgeschlagen, ist sicherlich ein nützliches Unterfangen. Designer sollten jedoch einem höheren Standard unterliegen; entscheidungsfreudiger (z. B. weniger Größenunterteilungen) und/oder überlegter (z. B. rationale Skalare). Der Haupteffekt ist eine verbesserte visuelle Hierarchie/UX und der Sekundäreffekt ist eine replizierbare Logik für Entwickler.
Ich habe eine Weile darüber nachgedacht und ein System entwickelt. Es ist nicht perfekt, aber es löst einige der hier genannten Probleme. Das Problem, das ich anfangs zu lösen versuchte, war, dass ich nicht mochte, dass klein und groß Spektren sind, aber mittel nur dazwischen liegt. Außerdem impliziert extra/x keine Richtung auf dem Spektrum, z. B. macht xmedium keinen Sinn. Also versuchte ich, Minus und Plus zu verwenden, dargestellt durch m und p, und anstatt mehrere m's und p's anzuwenden, benutze ich einfach Zahlen. Was ungefähr so aussehen würde (ich verwende „regular“ wie in der Schriftbenennung üblich, aber „medium“ wäre auch in Ordnung)
small-m2
small-m
klein
regular-m
regular
regular-p
groß
large-p
large-p2
…was die Entsprechung wäre zu
xxxsmall
xxsmall
xsmall
klein
mittel
groß
xlarge
xxlarge
xxxlarge
Ein Vorteil ist, dass Sie immer noch das grundlegende klein, normal (oder mittel) und groß haben und diese erweitern können. Sie könnten sogar etwas dazwischen hinzufügen, wenn es brennt, mit etwas wie large-p1-2. Ich denke auch, dass Suffixe sauberer aussehen als Präfixe.
Ich fordere von meinen Designern, dass sie zunächst ein Styleguide erstellen und sich daran halten, bis zum Redesign. :) Ich bitte sie normalerweise, Header h1-h6, Absätze, Links, Labels zu definieren. Danach richte ich ein System mit $font-size-xxs bis $font-size-xxl ein und setze normalerweise den Absatz als $font-size-normal und überspringe jede andere Größe.
Ich steckte in diesem Chaos, als ich mein Leben als UI-Entwickler begann, fand aber bald eine gewaltige Lösung, die alles für mich erledigt.
Ich beginne mit einer Basis $fontSize, gehe dann nach oben wie $fontSizeLarge und dann $fontSizeLarger und dann $fontSizeLargest, und Sie können im Grunde das Gleiche für die kleineren machen. Wenn Sie mehr brauchen, fügen Sie Kilos und Zentis hinzu und Sie haben ein flexibles Durcheinander von Variablen.
Ich verwende den Komponentenkontext für die meisten Dinge und Utility-Namen für alles andere.
--hero-heading--fs-24
Dies gibt mir sowohl die Lesbarkeit als auch die Wartbarkeit, die ich möchte.
Ich würde zu einer Reihe von Variablen greifen: von xs bis xl, dann rohe Werte für spezifische Bedürfnisse. Weil es schon zu kompliziert ist wie hier ^^
Zumindest mache ich das so für Ränder und Abstände.
Und tatsächlich neige ich dazu, die calc-Funktion auf Basisvariablen für spezifische Bedürfnisse anzuwenden…
Und ich ordne bei jedem neuen Projekt alles neu an… also…
Ich habe aufgehört, Variablen für Schriftgrößen zu verwenden, abgesehen vom Haupttext über breite Breakpoints hinweg. Zum Beispiel
Abgesehen davon verwende ich direkte Werte in CSS-Klassen/Komponenten, da Variablen für Schriftgrößen keine zusätzliche Konsistenz oder Wartbarkeit bieten.
Nicht speziell für Schriftgrößen, aber es könnte für alles gelten, wo es Potenzial für Zwischenwerte gibt: eine 100-Punkte-Skala. Oder welche Skala auch immer für das, was Sie tun, sinnvoll ist.
Ob Sie Variablen oder Klassennamen definieren, weisen Sie das kleinste/geringste Ding
--font-1zu und das größte/meiste Ding--font-100. Dann verhalten sich Ihre Werte sozusagen wie Prozente, was die Beziehungen zwischen Dingen angeht, nicht die tatsächlichen Werte. Wenn Sie etwas Größeres als 100 benötigen, ist es in Ordnung, es als „200%“-Größe zu bezeichnen. Und um Unterläufe zu vermeiden, wählen Sie den Nullwert so klein, dass Sie ihn nie verwenden würden.Auf diese Weise erhalten Sie so viel Raum, wie Sie zwischen vorhandenen definierten Werten benötigen, und Sie können auch abschätzen, wie groß etwas im Verhältnis zu anderen Dingen sein wird, ohne die tatsächlichen Werte zu einem bestimmten Zeitpunkt kennen zu müssen. Sie können auch die zugrunde liegenden Werte ändern, ohne sich Gedanken über die Umbenennung machen zu müssen. Auch Linearität ist nicht notwendig, solange
--thing-25kleiner ist als--thing-30.Hier ist eine Idee – definieren Sie zuerst alle Ihre Typografieskalen und wählen Sie dann die erforderlichen Tokens für Ihre Laufzeit aus.
Zur Laufzeit benötige ich nur
Ich bin mir nicht sicher, wie viel Sinn das macht, aber wir lassen die vordefinierten Konstanten unberührt, obwohl die Skala zur Laufzeit nicht chronologisch ist.
Ich benutze Tailwind, also ist die Syntax, die ich verwende
–text-sm
–text-md
–text-lg
…
Wenn eine neue Schriftgröße später im Entwicklungsprozess auftaucht, werde ich ein bisschen weinen. Dann werde ich einfach meine Variablen patchen.
–text-sm-bis
–text-sm-ter
Normalerweise braucht ein gutes Design nicht mehr als 3/4 Schriftgrößen. Wenn der Designer verrückt wird, muss er vielleicht in ein Gulag geschickt werden.
Ich verwende die Standard-Skalierung xs, sm, md, lg. Wenn ich etwas dazwischen einfügen muss, mische ich einfach die Buchstaben wie sm, smd, md. Brauche noch etwas zwischen smd, smdd md, ja, ich hoffe, Sie sehen die Logik hier.
Ich verwende die Gliederungspunkte Kategorie/Typ/Element (CTI) und Ebenen für die Benennung.
Ich verwende solche Klassen überhaupt nicht. Mein Markup hat verschachtelte article-Elemente sowie Header und Footer.
Wenn ich eine Anfrage erhalte, verschachtelte Footer auf eine bestimmte Größe einzustellen, verwende ich möglicherweise einen Selektor wie
article article > footer { font-size: 0.8 rem; }
Und wenn mehr Elemente die gleiche Größe benötigen, liste ich diese mit demselben Block auf. Infolgedessen kann ich all diese Stellen auf einmal ändern, wenn die Schriftgröße auf 0,9rem statt auf 0,8rem gesetzt werden muss.
Und ich kann auch mehrere Selektorgruppen erstellen, die derzeit zufällig die gleiche Schriftgröße verwenden, aber sich in Zukunft in verschiedene Richtungen entwickeln könnten (z. B. „kleiner Text“/Fußnote im Vergleich zu Artikel-Footern). Beide mögen jetzt 0,9rem haben, aber das sind unterschiedliche Kontexte, also würde ich sie in verschiedene Selektorgruppen einordnen. Es ist wahrscheinlicher, dass Fußnoten in Zukunft kleiner als der Haupttext sind, während der Stil des Footers eher einem Trend folgt.
Außerdem ist die Barrierefreiheit automatisch besser, da der Inhalt nicht nur eine Sammlung von Divs ist.
Ich verwende die Suffixe „inc“ und „dec“
small_inc – größer als klein
medium_dec – kleiner als mittel
Ich habe den Bootstrap-Ansatz für Farben von 100 bis 900 befolgt.
Ich denke, das würde auch für Schriftgrößen funktionieren. `font-size-500` könnte die normale Größe mit viel Spielraum nach oben und unten sein. Brauchen Sie eine neue Zahl: `font-size-352` zur Rettung.
Ein Vorteil davon ist, dass die Leute wahrscheinlich nicht denken, dass `font-size-200` 200 Punkte sind.
Ich denke, es ist abstrakt genug, dass es sogar für Designer funktionieren könnte.
Ich habe auch ein wenig darüber nachgedacht.
Was ist mit der Verwendung von **beschreibenden** Variablen
Neben **funktionalen** Variablen
Das Hinzufügen neuer beschreibender oder funktionaler Variablen und deren Neuzuweisung wäre unkompliziert.
Ich glaube nicht, dass das nützlich ist, denn anstatt "–fontSize-12" zu schreiben, können Sie einfach "12px" eingeben, oder?
Warum nicht die gleichen Zahlen wie für die Farbthemen verwenden.
400 für normale Schriftgröße
500..900 für Schritte zu größeren Größen, idealerweise in Schritten von 100 und bei Bedarf auch in Schritten von 50 oder sogar 10.
300..100 für kleinere Schriftgrößen
Ich würde so etwas machen
Ich hatte ein ähnliches Dilemma mit Farben, und zuerst definierte ich grundlegende Markenfarbvariablen, die später Kontext-basierten Variablen zugewiesen werden.
Zum Beispiel:
Wir verwenden Namen von Städten, sortiert nach Bevölkerungszahl, für alle Schriftgrößen. Sie sind leicht erweiterbar, wenn Sie ein Land wie die USA nehmen – wenn Sie eine neue Schriftgröße zwischen 12px und 15px benötigen, wählen Sie einfach eine Stadt mit einer Bevölkerungszahl dazwischen. Und sie sind nicht mit der Benutzeroberfläche verbunden, daher flexibel in der Wiederverwendung für verschiedene Komponenten.
Das "T-Shirt"-System.
Ich bin mir nicht sicher, welche Architektur/Technik das ist, aber in meinem aktuellen Job halten wir uns an den folgenden Stil
$color-blue
$color-white
$font-size-body
$font-size-body-small
$font-size-body-smaller
$spacer-small
$spacer-medium
$spacer-large
Ich finde es sehr pragmatisch und leicht zu befolgen.
Ich habe die Namenskonventionen von Tailwind übernommen und verwende xxs, xs, s, m, l, xl, xxl und so weiter.
Nun, ich halte es normalerweise einfach und verwende "rem" oder "em". Daher definiere ich eine gemeinsame Schriftgröße (im Allgemeinen 18px) und jedes andere Element wird dadurch definiert (zum Beispiel 2,0rem).
Der Vorteil ist, dass ich die Hauptschriftgröße leicht ändern kann und jedes andere Element entsprechend angepasst wird.
Daher verwende ich keine Variablen für Schriftgrößen.
Wir machen es normalerweise als Skala, mit einer Basiseinheit. Ähnlich wie bei Schriftgewichten.
Wenn beispielsweise unsere Basiseinheit für
body-Text16pxbeträgt, wäre die Schriftgröße$size-fnt--100. Dann erstellen wir die Skala von dort aus nach Bedarf, versuchen aber, das Hinzufügen neuer zu vermeiden, es sei denn, es ist 100% notwendig. Also$size-fnt-body--100ist16px. Wir könnten dies als$size-fnt-bodyfestlegen, um eine Standardrückgabe zu erstellen.$size-fnt-body--150ist16px * 1,5oder24px$size-fnt-body--75ist16px * 0,75oder12px$size-fnt-body--200ist16px * 2oder32pxUnd wir würden das gleiche Muster für andere neue Schriftarten
Typenbefolgen. Wie die Basiseinheit fürheader22pxist$size-fnt-header--100ist22px. Wir könnten dies als$size-fnt-headerfestlegen, um eine Standardrückgabe zu erstellen.$size-fnt-header--150ist22px * 1,5oder33px$size-fnt-header--75ist22px * 0,75oder16,5px$size-fnt-header--200ist22px * 2oder44pxOder vielleicht möchten wir eine
caption-Größe mit einer Basis von10pxeinführen...$size-fnt-caption--100ist10px. Wir könnten dies als$size-fnt-captionfestlegen, um eine Standardrückgabe zu erstellen.$size-fnt-caption--150ist10px * 1,5oder15px$size-fnt-caption--75ist10px * 0,75oder7,5px$size-fnt-caption--200ist10px * 2oder20pxKombinieren Sie dies mit CSS-Variablen für mehr Kontrolle bei der Responsivität oder zur Abgrenzung Ihrer Variablen…
Beginnen Sie damit,
--size-fnt-body: 16pxzu dem Bereich hinzuzufügen, in dem Sie sich gerade befinden.Beginnen Sie damit,
--size-fnt-body: 18pxzu einer neuen Media Query hinzuzufügen (sagen wir>1280px).Beginnen Sie damit,
--size-fnt-body: 14pxzu einer modifizierenden Klasse hinzuzufügen, um die Skala zu aktualisieren (nennen wir diese.--some-modified-class)$size-fnt-body--100istvar(--size-fnt-body). Wir könnten dies als$size-fnt-bodyfestlegen, um eine Standardrückgabe zu erstellen.@>1280pxRückgabe:18px.--some-modified-classRückgabe:14pxAndere AuflösungenRückgabe:16px$size-fnt-body--150istvar(--size-fnt-body) * 1,5@>1280pxRückgabe:27px.--some-modified-classRückgabe:21pxAndere AuflösungenRückgabe:16px$size-fnt-body--75istvar(--size-fnt-body) * 0,75@>1280pxRückgabe:13,5px.--some-modified-classRückgabe:10,5pxAndere AuflösungenRückgabe:16px$size-fnt-body--200istvar(--size-fnt-body) * 2@>1280pxRückgabe:32px.--some-modified-classRückgabe:28pxAndere AuflösungenRückgabe:16pxFügen Sie der Skala etwas hinzu oder entfernen Sie es, wenn es absolut notwendig ist…
$size-fnt-body--100ist16px. Wir könnten dies als$size-fnt-bodyfestlegen, um eine Standardrückgabe zu erstellen.➡️➡️➡️
$size-fnt-body--125ist16px * 1,25oder20px$size-fnt-body--150ist16px * 1,5oder24px$size-fnt-body--75ist16px * 0,75oder12px$size-fnt-body--200ist16px * 2oder32pxWir verwenden diese gleiche Methodik für Farben, Abstände, Höhenunterschiede, Schriftgrößen und auch für Absatzbreiten. Das ist ziemlich genial, wenn es mit Intellisense kombiniert wird und man weiß, wie man die Variablen "abfragt", was eine kleine Lernkurve für die Nomenklatur bedeutet. Sobald sie gefestigt ist, ist sie ziemlich skalierbar.
$size-{{ namespace }}-{{ type }}--{{ scale }}: Größenvariablen$size-fnt-{{ type }}--{{ scale }}oder$size-fnt-header--75$size-spacing-{{ type }}--{{ scale }}oder$size-spacing-ui--100$size-p-{{ type }}--{{ scale }}oder$size-p-width--75$clr-{{ namespace | type }}--{{ category }}--{{ type | scale }}--{{ modifier }}: Farbvariablen (semantisch oder nicht)Quellfarben
$clr-banana--{{ scale }}--{{ modifier }}oder$clr-banana--100oder$clr-banana--100--hoverSemantische Farben
$clr-ui-surface--{{ category }}--{{ scale }}--{{ modifier }}oder$clr-ui-surface--bg--100oder$clr-ui-surface--bg--100--hoverDas gefällt mir wirklich! Der Variablenname gibt das Skalenverhältnis an, und Sie können problemlos beliebig viele weitere hinzufügen, ohne die Funktionalität zu beeinträchtigen.
Ich beginne mit einer Grundlage von Variablen, die den benötigten Überschriftenformaten zugeordnet werden.
fontSize100 => h1
fontSize200 => h2
fontSize300 => h3
usw.
und fülle dann mit anderen benötigten Größen, die das Design erfordert, in die richtige Zelle / Skala.
fontSize50 > h1
h1 > fontSize150 > h2
h3 > fontSize320 > h4
h3 > fontSize340 > h4
h3 > fontSize360 > h4
Zusätzlich andere Hilfsvariablen, die manchmal lediglich einer der vorherigen numerischen fontSize-Variablen zugewiesen werden. Nichts falsch an etwas Redundanz, wenn es ein wenig geistige Energie spart.
fontSizeText
fontSizePullQuote
fontSizeCaption
Das mache ich, ich finde die Zahlenskala sinnvoll und sie passt zu anderen Inhaltstypen.
/* display */
–display-1: 80px;
–display-2: 72px;
–display-3: 64px;
–display-4: 56px;
–display-5: 48px;
–display-6: 40px;
Ich habe früher Namen wie
title,subheadlineundbodyfür Schriftvariablen verwendet. Das Problem, das ich festgestellt habe, ist, dass Sie bei der Arbeit an verschiedenen Designs möglicherweise größere oder kleinere Schriftgrößen verwenden möchten, und dann brechen Ihre Semantik zusammen. Ihre Lösung endet also mit unzähligen Variablen, einige mit identischen Werten.Semantische Benennung macht mehr Sinn, wenn Sie eine Kombination aus verschiedenen Eigenschaften wie Schriftgröße, Schriftfamilie, Zeilenhöhe, Zeichenabstand und so weiter haben.
Für Schriftgrößen bin ich zu einer linearen Skala übergegangen, die genügend Informationen über die Größe im Verhältnis zu anderen Größen liefert.
Und ich verwende Klassen, um die semantische Verwendung von Typografie zu beschreiben.