text-box-trim CSS property
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Die text-box-trim CSS Eigenschaft gibt an, welche der oberen und unteren Kanten des Textinhalts aus dem Block-Container eines Textelements beschnitten werden sollen.
Der vertikale Abstand unterscheidet sich zwischen Schriftarten, was eine konsistente Typografie im Web historisch herausfordernd gemacht hat. Die text-box-trim Eigenschaft — zusammen mit ihrer Gegenstückeigenschaft text-box-edge, die angibt, wie viel Raum beschnitten werden soll — erleichtert die Erreichung einer konsistenten vertikalen Abstandsgestaltung von Text.
Hinweis:
Die Kurzform-Eigenschaft text-box kann verwendet werden, um die text-box-trim und text-box-edge Werte in einer einzigen Deklaration anzugeben.
Syntax
/* Keywords */
text-box-trim: none;
text-box-trim: trim-both;
text-box-trim: trim-start;
text-box-trim: trim-end;
/* Global values */
text-box-trim: inherit;
text-box-trim: initial;
text-box-trim: revert;
text-box-trim: revert-layer;
text-box-trim: unset;
Wert
Der Wert der text-box-trim Eigenschaft kann als eines der folgenden Schlüsselwörter angegeben werden:
none-
Der Standardwert. Kein Raum wird vom Text beschnitten.
trim-both-
Die Start- (oben) und Endkanten (unten) werden beide beschnitten.
trim-start-
Die Startkante (oben) wird beschnitten.
trim-end-
Die Endkante (unten) wird beschnitten.
Beschreibung
Die Höhe von reinem Textinhalt ist relativ zur Höhe der Schrift. In digitalen Schriftdateien enthält die Höhe alle Zeichen, einschließlich Großbuchstaben, Oberlängen, Unterlängen usw. Verschiedene Schriftarten haben unterschiedliche Grundzeilenhöhen, was bedeutet, dass Textzeilen mit der gleichen font-size unterschiedliche Linienhöhen erzeugen, die das Erscheinungsbild des Abstands zwischen den Zeilen beeinflussen.
Die text-box-trim Eigenschaft ermöglicht es Ihnen, die obere und untere Kante des Textblock-Containers zu beschneiden, wodurch es einfacher wird, den Textabstand in der Blockrichtung zu kontrollieren.
Die tatsächliche Menge des beschnittenen Raums wird mit der text-box-edge Eigenschaft festgelegt. Beispielsweise können Sie wählen, die obere Kante in Übereinstimmung mit den Großbuchstaben oder Kleinbuchstaben einer Schriftart zu beschneiden und die untere Kante bündig mit der Basislinie der Schriftart.
Formale Definition
| Anfangswert | none |
|---|---|
| Anwendbar auf | Block containers and inline boxes |
| Vererbt | Nein |
| Berechneter Wert | the specified keyword |
| Animationstyp | diskret |
Formale Syntax
text-box-trim =
none |
trim-start |
trim-end |
trim-both
Beispiele
>Grundlegende Nutzung von text-box-trim
Im folgenden Beispiel setzen wir text-box-edge: cap alphabetic auf zwei Absätze, wodurch die obere Kante der Block-Container der Textelemente bis zur Oberkante der Großbuchstaben und die untere Kante bündig mit der Basislinie des Textes beschnitten wird.
Wir setzen dann text-box-trim Werte von trim-end beim ersten und trim-both beim zweiten Absatz. Das führt dazu, dass beim ersten Absatz nur die untere Kante beschnitten wird, während beim zweiten sowohl die obere als auch die untere Kante beschnitten werden.
p {
text-box-edge: cap alphabetic;
border-top: 5px solid magenta;
border-bottom: 5px solid magenta;
}
.one {
text-box-trim: trim-end;
}
.two {
text-box-trim: trim-both;
}
Ergebnis
Die Ausgabe ist wie folgt. Beachten Sie, dass wir einen oberen und unteren Rand bei jedem Absatz hinzugefügt haben, damit Sie sehen können, wie der Raum in jedem Fall beschnitten wurde.
Interaktiver Vergleich der text-box-trim und text-box-edge Werte
In diesem Beispiel bieten wir eine Benutzeroberfläche, die es Ihnen ermöglicht, die text-box-trim und text-box-edge Werte anzupassen, die auf einen Textabsatz angewendet werden.
HTML
In unserem HTML enthalten wir drei Hauptobjekte:
- Drei
<select>-Elemente, die es Ihnen ermöglichen, festzulegen, welche Kanten des Absatzes beschnitten werden sollen (dertext-box-trimWert) und wie viel Raum von den Blockstart- und -endkanten des Absatzes beschnitten werden soll (dertext-box-edgeWert). - Ein
<p>-Element, das den Text enthält, auf den dietext-box-*Werte angewendet werden. Dieser Absatz hatcontenteditablegesetzt, sodass Sie den Text bearbeiten können. - Ein
<output>-Element, das dietext-box-*Deklarationen anzeigt, die auf den Absatz angewendet werden. Dies wird aktualisiert, wenn eine Auswahl getroffen wird.
Wir importieren auch eine Schriftart vom Google Fonts-Dienst, um sie auf den Text unseres Demos anzuwenden.
Wir haben den genauen HTML-Code zur Kürze versteckt.
CSS
In unserem CSS wenden wir die importierte Schriftart auf das <html>-Element an und gestalten die UI mit Flexbox. Wir haben den Großteil des CSS-Codes zur Kürze versteckt, zeigen aber unten die Regeln, die den Absatz stylen, auf den die text-box-* Effekte angewendet werden und das <output>, das die angewendeten text-box-* Regeln zeigt:
p {
margin: 0;
font-size: 6rem;
font-weight: bold;
border-top: 5px solid magenta;
border-bottom: 5px solid magenta;
}
output {
border: 2px solid gray;
border-radius: 10px;
padding: 10px;
margin: 0;
width: fit-content;
}
Auch hier haben wir eine obere und untere Grenze auf den .display-Absatz gesetzt, damit Sie sehen können, wie sich der beschnittene Raum ändert, wenn verschiedene text-box-* Werte ausgewählt werden.
JavaScript
Im JavaScript beginnen wir damit, Referenzen zu den drei <select>-Elementen und zwei <p>-Elementen zu erfassen:
const boxTrimSelect = document.getElementById("box-trim");
const trimOverSelect = document.getElementById("trim-over");
const trimUnderSelect = document.getElementById("trim-under");
const displayElem = document.querySelector("p");
const codeElem = document.querySelector("output");
Als nächstes definieren wir eine Funktion namens setEdgeTrim(). Diese wendet einen text-box Wert auf den Absatz basierend auf den Werten der <select>-Elemente an und druckt auch die angewendeten Deklarationen auf die Ausgabe (sowohl die Langform als auch die Kurzformäquivalente):
function setEdgeTrim() {
const textBoxTrimValue = boxTrimSelect.value;
const textBoxEdgeValue = `${trimOverSelect.value} ${trimUnderSelect.value}`;
displayElem.style.textBox = `${textBoxTrimValue} ${textBoxEdgeValue}`;
codeElem.innerHTML = `
<span><code>text-box-trim: ${textBoxTrimValue}</code></span>
<br>
<span><code>text-box-edge: ${textBoxEdgeValue}</code></span>
<br><br>
<span>Shorthand equivalent:</span>
<br><br>
<span><code>text-box: ${textBoxTrimValue} ${textBoxEdgeValue}</code></span>
`;
}
Im letzten Teil des JavaScripts führen wir die setEdgeTrim() Funktion einmal aus, um einen Anfangszustand für die UI festzulegen. Wir wenden dann change Ereignis-Listener auf alle <select>-Elemente an (über addEventListener), sodass setEdgeTrim() ausgeführt wird, wann immer sich einer der <select> Werte ändert, um die UI entsprechend zu aktualisieren:
setEdgeTrim();
boxTrimSelect.addEventListener("change", setEdgeTrim);
trimOverSelect.addEventListener("change", setEdgeTrim);
trimUnderSelect.addEventListener("change", setEdgeTrim);
Ergebnis
Das Ergebnis ist wie folgt:
text-box-trim ist zunächst auf trim-both gesetzt, was bedeutet, dass die obere und untere Kante des Absatzes beschnitten werden. text-box-edge ist zunächst auf cap alphabetic gesetzt, was bedeutet, dass der Text bündig mit der Oberkante der Großbuchstaben am Anfang und bündig mit der Basislinie am Ende beschnitten wird.
Versuchen Sie, die <select> Werte zu ändern, um den Effekt, den sie auf den Anzeigetext haben, zu sehen.
Spezifikationen
| Spezifikation |
|---|
| CSS Inline Layout Module Level 3> # text-box-trim> |
Browser-Kompatibilität
Siehe auch
text-box,text-box-edge- CSS Inline-Layout Modul
- CSS text-box-trim auf developer.chrome.com (2025)