Nehmen Sie den Abstand über und unter dem Textinhalt zurück, um optisches Gleichgewicht zu schaffen.
Veröffentlicht: 14. Januar 2025
Ab Chrome 133 können Entwickler und Designer mit text-box
den Abstand über und unter Text anpassen.
Browser Support
Langschrift:
text-box-trim: trim-start | trim-end | trim-both | none;
text-box-edge: cap | ex | text | leading;
line-fit-edge: alphabetic | text;
Kurzschreibweise:
text-box: trim-both cap alphabetic;
Mit dieser Property können Sie den Abstand über und unter Text steuern, z. B. <h1>
, <button>
und <p>
. Jede Schriftart erzeugt eine unterschiedliche Menge dieses Block-Richtungsraums, was zur Größe des Elements beiträgt. Dieser chaotische Raumbeitrag lässt sich nicht leicht messen und war bisher nicht zu kontrollieren.
Die Schrift weiß es, jetzt weiß es auch CSS!
Der Abstand über und unter einer Schriftart ist auf die Textausrichtung im Web zurückzuführen und wird als „Halb-Leitung“ bezeichnet. Dies wird in einem Beitrag von Matthias Ott mit dem Titel The Thing With Leading In CSS (Das Problem mit Leading in CSS) ausführlich behandelt. Bei der manuellen Typografie wurden Metallstücke aus Blei verwendet, um Textzeilen voneinander zu trennen. Im Web wird dieser Abstand, inspiriert vom Satzabstand, in zwei Hälften geteilt und ein Teil über und ein Teil unter den Inhalt verteilt.
Dieser Verlauf ist aussagekräftig, da text-box
Namen für jede Hälfte liefert: „über“ und „unter“. Außerdem können Sie sie zuschneiden.
Es gibt auch Vorläufer von text-box
. Vielleicht erinnern Sie sich an den spannenden Beitrag von Ethan Wang mit dem Titel Leading-Trim: The Future Of Digital Typesetting, in dem leading-trim
(der vorherige Name von text-box
) zum ersten Mal vorgestellt wurde.
Ein Einstiegspunkt in das Text-Trimming kann Figma und seine Steuerelemente für die vertikale Bildbeschneidung für Designer sein. In diesem X-Beitrag wird gezeigt, wo sich diese Option für vertikale Ränder befindet und wie sie für Schaltflächen hilfreich ist.
Unabhängig davon, wie Sie hierher gelangt sind, kann diese kleine typografische Einstellung einen großen Unterschied machen.
Funktion und Syntax
Hier sind meiner Meinung nach die beiden häufigsten Kurzbefehle, die Sie bei der Arbeit mit text-box
benötigen:
h1 {
/* trim both sides to the capital letters */
text-box: trim-both cap alphabetic;
/* trim both sides to the lowercase letter x */
text-box: trim-both ex alphabetic;
}
Am häufigsten wird diese Funktion verwendet, um beide Videos auf cap alphabetic
zu kürzen. In den folgenden Demos wird dies häufig verwendet. Im vorherigen Beispiel ist jedoch auch ex alphabetic
zu sehen, da es auf seine eigene Weise für das optische Gleichgewicht nützlich ist.
Explorer-Playground
In der folgenden Demo können Sie sich mit der Syntax vertraut machen und die Ergebnisse in Drop-down-Menüs ansehen. Sie können Schriftarten ändern, Werte für den oberen und unteren Grenzwert festlegen und die farbcodierten Visualisierungen und Labels verfolgen.
Versuche Folgendes:
- Visuelle Prüfung, wie
text-box-trim
bei einzeiligen und mehrzeiligen Textvarianten funktioniert - Wenn Sie den Mauszeiger auf eine Variante bewegen, werden die Trimmwerte angezeigt, mit denen dieser Effekt erzielt wurde.
- Schriftart ändern
- Sie können nur eine Seite eines Textfelds zuschneiden.
- Sehen Sie sich die Syntax während des Spiels an.
Was kann ich damit erstellen oder welche Probleme löst es?
Diese Funktion ermöglicht einige viel einfachere Lösungen für die Zentrierung und Ausrichtung. Sie können sogar näher an die richtige Laufweite herankommen, indem Sie zwischen den Inhalten etwas wie gap
verwenden.
Einfachere Zentrierung
Für kleinere, mehr inline und zum Inhalt gehörende Komponenten ist padding: 10px
ein angemessener Stil, um für ein Element einen gleichmäßigen Abstand auf allen Seiten anzugeben. Das Ergebnis kann jedoch verwirrend sein, da oben und unten oft zusätzlicher Platz vorhanden ist.
Um dies zu vermeiden, geben Entwickler häufig explizit weniger Abstand oben und unten (Block) an, um die Auswirkungen der halben Laufweite auszugleichen.
button {
padding-block: 5px;
padding-inline: 10px;
}
Jetzt müssen wir verschiedene Kombinationen ausprobieren, bis die Elemente optisch zentriert sind. Das kann auf einem Bildschirm und Betriebssystem gut aussehen, auf einem anderen aber nicht.
Mit text-box
können wir den halben Leerraum vor dem Text kürzen. Daher sind gleichmäßige Werte für den Abstand wie 10px
nützlich:
button {
text-box: trim-both cap alphabetic;
padding: 10px;
}
Hier sind einige <button>
-Elemente, die zeigen, wie durch das Zuschneiden des Abstands mit text-box
das padding: 10px
in einem praktischen interaktiven Element an allen Seiten gleichmäßig aussieht. Beachten Sie, wie unterschiedlich der Abstand zwischen den Zeilen mit der alternativen Schriftart ist.
Hier sind <span>
-Elemente, die häufig zum Darstellen von Kategorien oder Logos verwendet werden. Hier wäre wieder ein Fall, in dem gleichseitige Ränder die beste Lösung wären, aber bis text-box
mussten wir uns mit einer anderen Lösung behelfen.
Einfachere Ausrichtung
Auch der zusätzliche, nicht steuerbare Abstand von 0, 5 Zeilenhöhe über (over
) und unter (under
) einem Textfeld erschwert die Ausrichtung. Die folgenden Beispiele zeigen, wann eine halbe Schriftzeilenabstand die Ausrichtung erschweren kann und wie durch das Zuschneiden der Blockseiten eines Textfelds eine bessere Ausrichtung erzielt werden kann.
Hier wird ein Bild neben Text platziert. Das Bild wird so hoch wie nötig, aber ohne text-box
ist es immer etwas höher. Mit text-box
kann das Bild perfekt an den Textinhalt ausgerichtet werden.
Beachten Sie, dass sich das Weißraumelement in Szenarien mit Zeilenumbruch über der ersten und unter der letzten formatierten Textzeile befindet.
Im folgenden Beispiel ist zu sehen, wie sich die Funktion logisch an eine Änderung von writing-mode
anpasst. Ändern Sie den Text und achten Sie darauf, dass das Layout weiterhin ausgerichtet bleibt.
Test fortsetzen
Möchtest du mehr erfahren? Die folgende Liste von Links bietet verschiedene zusätzliche Informationen und Anwendungsfälle.
- https://codepen.io/collection/zxQBaL – Codepen-Sammlung aller oben genannten Demos
- https://github.com/jantimon/text-box-trim-examples – Tolle Recherche und Demos von Jan Nicklas
- https://css-tricks.com/two-css-properties-for-trimming-text-box-whitespace/
- https://drafts.csswg.org/css-inline-3/#text-edges
- Nicht zu verwechseln mit
size-adjust
oderascent-override
. https://web.dev/articles/css-size-adjust - https://www.smashingmagazine.com/2012/12/css-baseline-the-good-the-bad-and-the-ugly/
- https://css-tricks.com/two-css-properties-for-trimming-text-box-whitespace/
- auf viele HTML-Elemente angewendet https://codepen.io/nileshprajapati/pen/RweKdmw
- Blogpost zu Safari: https://webkit.org/blog/16301/webkit-features-in-safari-18-2/
- https://piccalil.li/blog/why-im-excited-about-text-box-trim-as-a-designer/