Testo a capo del CSS: saldo

In CSS è disponibile una tecnica tipografica classica di creazione manuale di interruzioni di riga per blocchi di testo bilanciati.

Andrea Rossi
Adam Argyle

Il valore balance di text-wrap fa parte del livello testo CSS 4. Dai un'occhiata agli esempi di questo post per scoprire come questa riga di CSS può migliorare notevolmente i layout dei tuoi testi.

Supporto dei browser

  • 114
  • 114
  • 121

Fonte

Prova una demo

Senza text-wrap: balance; designer, editor di contenuti ed editori hanno pochi strumenti per modificare il modo in cui vengono bilanciati i confini. Le migliori opzioni disponibili sono l'utilizzo di <wbr> o &shy; per guidare i layout di testo in decisioni più intelligenti su dove spezzare righe e parole.

In qualità di sviluppatore, non conosci le dimensioni finali, la dimensione del carattere o persino la lingua di un titolo o di un paragrafo. Tutte le variabili necessarie per un trattamento efficace ed estetico del testo a capo si trovano nel browser. Questo è il motivo per cui vediamo a capo, come nell'immagine seguente:

Il titolo è evidenziato con DevTools, si estende per l&#39;intera larghezza dello spazio in linea e ha due parole sospese nella seconda riga.
Prova una demo
.unbalanced {
  max-inline-size: 50ch;
}

Con text-wrap: balance di CSS Text 4, puoi richiedere al browser di determinare la soluzione di a capo automatico più bilanciata per il testo. Il browser conosce tutti i fattori, come la dimensione del carattere, la lingua e l'area allocata. I risultati della funzione di testo a capo con bilanciamento del browser oggi sono i seguenti:

Il titolo è evidenziato come il precedente DevTools, ma questa volta non copre l&#39;intera larghezza. Ha iniziato una nuova riga prima della fine e come tale è un blocco di testo equilibrato.
Prova una demo
.balanced {
  max-inline-size: 50ch;
  text-wrap: balance;
}

È utile vederli affiancati, immobili e senza sovrapposizioni di informazioni di debug.

I due esempi precedenti vengono mostrati insieme, uno è contrassegnato come sbilanciato e l&#39;altro come equilibrato.

Il tuo occhio dovrebbe essere molto più soddisfatto del blocco di testo bilanciato. Attira meglio l'attenzione e, nel complesso, è più facile da leggere.

Trovare il giusto equilibrio

I titoli sono il primo elemento visualizzato dai lettori; devono essere visivamente accattivanti e facili da leggere. In questo modo, attira l'attenzione degli utenti e dà un senso di qualità e sicurezza. Una tipografia efficace dà sicurezza ai lettori, incoraggiandoli a continuare a leggere.

Tradizionalmente, questa attività veniva svolta a mano o in modo ottico, perché il designer che bilancia il testo vuole piacere agli occhi e non alla matematica. Questo argomento viene spesso definito con il confronto tra metrica e allineamento ottico. Per le grandi pubblicazioni come il New York Times, il bilanciamento dei titoli è un dettaglio molto importante dell'esperienza utente.

Prova una demo

Bilanciare il testo nella tipografia risale ai primi giorni della stampa, quando le stampanti posizionavano a mano le lettere. I risultati si sono evoluti con l'evoluzione degli strumenti e delle tecniche. Oggi i designer hanno colore, peso, dimensioni e altro ancora per bilanciare il testo nei loro progetti.

Sul Web, tuttavia, è disponibile meno controllo perché il documento cambia dimensioni e colori in base agli utenti. text-wrap: balance porta l'arte di bilanciare il testo sul web in modo automatizzato, basandosi sul lavoro e sulle tradizioni dei designer del settore della stampa.

Titoli bilanciati

Questo sarà e dovrebbe essere il caso d'uso principale di text-wrap: balance. Disegna l'occhio con dimensioni e rendilo simmetrico e leggibile. Imposta tutti i titoli in modo che il testo a capo sia bilanciato con il seguente CSS:

h1,h2,h3,h4,h5,h6 {
  text-wrap: balance;
}

La semplice applicazione di questo stile potrebbe non fornire i risultati attesi, in quanto il testo deve andare a capo e pertanto applicare una lunghezza massima della riga da qualche parte. Vedrai un elemento max-inline-size sugli esempi in questo post; questo stile è simile a max-width ma può essere impostato una volta per qualsiasi lingua.

Limitazioni

L'attività di bilanciamento del testo non è senza costi. Il browser deve eseguire il loop delle iterazioni per trovare la soluzione di wrapping bilanciata. Questo costo delle prestazioni è ridotto da una regola, funziona solo per sei righe con wrapping e al di sotto.

Prova una demo

Considerazioni sul rendimento

Non è consigliabile applicare il bilanciamento del testo a capo all'intero progetto. Si tratta di una richiesta inutile, a causa del limite di sei righe, e potrebbe influire sulla velocità di rendering della pagina.

Cosa non fare
* {
  text-wrap: balance;
}
PRENDI IN CONSIDERAZIONE
h1, h2, h3, h4, h5, h6, blockquote {
  text-wrap: balance;
}

Un grande vantaggio è che non è necessario attendere e dedicare tempo al bilanciamento del testo a capo durante il caricamento dei caratteri, come è possibile fare oggi con JavaScript. Il browser se ne occupa.

Interazioni con la proprietà white-space

Il testo di bilanciamento compete con la proprietà white-space perché una non richiede il wrapping, mentre l'altra richiede il wrapping bilanciato. Per risolvere questo problema, annulla la configurazione della proprietà dello spazio vuoto, quindi il wrapping bilanciato può essere applicato di nuovo.

.balanced {
  white-space: unset;
  text-wrap: balance;
}

Il bilanciamento non modifica le dimensioni incorporate dell'elemento

Alcune soluzioni JavaScript offrono un vantaggio per il wrapping di testo bilanciato, in quanto modificano il valore max-width dell'elemento contenitore stesso. Ciò ha un ulteriore vantaggio, ovvero essere "restringiti" al blocco bilanciato. text-wrap: balance non ha questo effetto e può essere visto in questo esempio:

Il titolo è evidenziato come il precedente DevTools, ma questa volta non copre l&#39;intera larghezza. Ha iniziato una nuova riga prima della fine e come tale è un blocco di testo equilibrato.

Hai notato che alla fine della larghezza mostrata da DevTools c'è molto spazio in più? Questo perché si tratta solo di un avvolgimento e non di uno stile che cambia dimensione. Per questo motivo, ci sono alcuni scenari in cui text-wrap: balance non è molto efficace, almeno secondo me. ad esempio le intestazioni all'interno di una scheda (o di qualsiasi contenitore con bordi o ombre).

Il testo a capo bilanciato crea ironicamente squilibrio con l'elemento contenuto.

Una breve spiegazione della tecnica utilizzata dal browser

Il browser esegue in modo efficace una ricerca binaria per la larghezza minima, che non causa righe aggiuntive, terminando a un pixel CSS (non il pixel di visualizzazione). Per ridurre ulteriormente al minimo i passaggi nella ricerca binaria, il browser inizia con l'80% della larghezza di riga media.