CSS text-box-trim

Pubblicato il 14 gennaio 2025

A partire da Chrome 133, text-box consente a sviluppatori e designer di personalizzare lo spazio sopra e sotto il testo.

Browser Support

  • Chrome: 133.
  • Edge: 133.
  • Firefox: behind a flag.
  • Safari: 18.2.

Source

Forma estesa:

text-box-trim: trim-start | trim-end | trim-both | none;
text-box-edge: cap | ex | text | leading + alphabetic | text;

Forma abbreviata:

text-box: trim-both cap alphabetic;

Questa proprietà consente di controllare lo spazio sopra e sotto il testo, ad esempio <h1>, <button> e <p>. Ogni carattere produce una quantità diversa di questo spazio direzionale del blocco che contribuisce alle dimensioni dell'elemento. Questo contributo di spazio caotico non è facilmente misurabile ed è stato impossibile da controllare fino ad ora.

Il carattere lo sa, ora lo sa anche il CSS.

Provalo su CodePen

Lo spazio sopra e sotto un carattere esiste a causa del modo in cui il web imposta il testo, chiamato "interlinea". Questo argomento è trattato in modo esperto in un post di Matthias Ott intitolato The Thing With Leading In CSS. In sostanza, quando la composizione tipografica veniva eseguita a mano, venivano utilizzati pezzi di piombo metallico per separare le righe di testo. Il web, ispirato all'interlinea, divide il piombo in due pezzi e distribuisce un pezzo sopra e un pezzo sotto il contenuto.

Un titolo viene mostrato con una barra rosa acceso sopra e sotto il testo per dimostrare l'interlinea. Fonte

Questa cronologia è significativa perché text-box ci fornisce i nomi per ogni metà: sopra e sotto. Inoltre, la possibilità di tagliarlo.

Esiste anche una tecnica precedente a text-box. Ricorderai il post entusiasmante di Ethan Wang intitolato Leading-Trim: The Future Of Digital Typesetting, in cui è stato introdotto per la prima volta leading-trim (il nome che text-box aveva in precedenza).

Un titolo con spazio in eccesso sopra e sotto sembra essere tagliato con le forbici e rimosso.

Il punto di partenza per il taglio del testo potrebbe essere da Figma e i relativi controlli di "taglio verticale" per i designer. Questo post di X mostra dove si trova questa opzione di taglio verticale e in che modo è utile per i pulsanti.

Fonte

Indipendentemente da come sei arrivato qui, questo piccolo controllo tipografico può fare una grande differenza.

Funzionalità e sintassi

A mio parere, ecco le due righe più comuni di cui avrai bisogno quando lavori con text-box:

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;
}

Il taglio di entrambi i valori su cap alphabetic sarà l'utilizzo più comune di questa funzionalità. Le seguenti demo lo utilizzano più volte. Tuttavia, l'esempio precedente mostra anche ex alphabetic perché è utile per l'equilibrio ottico in modi unici.

Playground di Explorer

Esplora la sintassi nel nostro playground, e visualizza i risultati utilizzando i menu a discesa. Puoi modificare i caratteri, i valori di taglio sopra e sotto e seguire le immagini e le etichette con codice colore.

L'anteprima della sintassi con la sintassi text-box: trim-both cap alphabetic evidenziata e mostrata. Sono disponibili altri 3 menu a discesa per scegliere i valori di taglio.

Cose da provare:

  1. Ispezionare visivamente il funzionamento di text-box-trim nelle varianti di testo a riga singola e a più righe.
  2. Passare il mouse sopra una variante per visualizzare i valori di taglio utilizzati per ottenere l'effetto.
  3. Modificare il carattere.
  4. Tagliare solo un lato di una casella di testo.
  5. Esaminare la sintassi durante la riproduzione.
Provalo su CodePen

Cosa posso creare e quali problemi risolve?

Da questa funzionalità di taglio emergono alcune soluzioni di centratura e allineamento molto più semplici. Puoi persino avvicinarti all'interlinea corretta, dove è possibile utilizzare qualcosa come gap tra i contenuti.

Un confronto tra due gruppi di contenuti.
Il primo gruppo ha un'interlinea, il secondo ha un'interlinea tagliata. Il risultato è che il secondo gruppo è più compatto. Provalo su CodePen

Centratura più semplice

Per i componenti più piccoli, più in linea e intrinseci al contenuto, padding: 10px è uno stile ragionevole da specificare per un elemento per una spaziatura uniforme su tutti i lati. Tuttavia, il risultato può confondere le persone, in quanto spesso presenta uno spazio aggiuntivo nella parte superiore e inferiore.

Per ovviare a questo problema, gli sviluppatori spesso inseriscono esplicitamente meno padding nella parte superiore e inferiore (blocco) per compensare gli effetti dell'interlinea.

button {
  padding-block: 5px;
  padding-inline: 10px;
}

A questo punto, non ci resta che provare le combinazioni di valori finché gli elementi non sono centrati otticamente. Questo potrebbe avere un aspetto ottimale su uno schermo e un sistema operativo, ma non su un altro.

text-box ci consente di tagliare lo spazio dell'interlinea dal testo, rendendo utili i valori di padding uguali come 10px:

button {
  text-box: trim-both cap alphabetic;
  padding: 10px;
}
Vengono mostrati due esempi.
Il primo mostra un elemento con padding: 10px e interlinea. Il secondo mostra lo stesso elemento con text-box: trim-both cap alphabetic. Il risultato è che il secondo pulsante è centrato otticamente. Provalo su CodePen

Ecco alcuni elementi <button> che mostrano come il taglio dello spazio con text-box renda padding: 10px uguale su tutti i lati in un elemento interattivo pratico. Tieni presente che il carattere alternativo può produrre uno spazio di interlinea molto diverso.

Tre gruppi di pulsanti. Il primo utilizza un normale carattere sans serif, il secondo un carattere elegante o divertente e il terzo lo stesso effetto con un carattere di scrittura a mano.
Ogni carattere ha uno spazio di interlinea diverso, ma i valori di taglio sono gli stessi e possono normalizzare lo spazio. Provalo su CodePen

Ecco gli elementi <span>, spesso utilizzati per mostrare categorie o badge. Un altro momento in cui il padding con lati uguali dovrebbe essere la soluzione migliore, ma fino a text-box abbiamo dovuto aggirare il problema.

I tag vengono mostrati affiancati. Il primo gruppo ha una spaziatura di metà riga, il secondo una spaziatura ridotta.
Il secondo gruppo di tag è più compatto e centrato otticamente, grazie all'interlinea tagliata.

Allineamento più semplice

Lo spazio di interlinea aggiuntivo e incontrollabile sopra (over) e sotto (under) una casella di testo rende difficile anche l'allineamento. Gli esempi seguenti mostrano quando l'interlinea può rendere difficile l'allineamento e come il taglio dei lati del blocco di una casella di testo può creare allineamenti migliori.

Qui un'immagine viene posizionata accanto al testo. L'immagine aumenta fino all'altezza necessaria per il testo. Senza text-box, l'immagine è sempre un po' più alta. Con text-box, l'immagine può allinearsi perfettamente al contenuto del testo.

Provalo su CodePen

Tieni presente che lo spazio vuoto si trova sopra la prima riga di testo formattata e sotto l'ultima riga di testo formattata negli scenari con ritorno a capo.

Nell'esempio seguente, tieni presente che la funzionalità si adatta logicamente a una modifica di writing-mode. Prova a modificare il testo e osserva come il layout rimane allineato.

Provalo su CodePen

Continua a studiare

Vuoi saperne di più? L'elenco di link seguente offre varie quantità di informazioni aggiuntive e casi d'uso.