Testo a capo del CSS: saldo

CSS è una tecnica tipografica classica di creazione a mano delle interruzioni di riga per blocchi di testo bilanciati.

Adam Argyle
Adam Argyle

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

Supporto dei browser

  • 114
  • 114
  • 121
  • 17,50

Origine

Prova una demo

Senza text-wrap: balance, i designer, gli editor di contenuti e gli editori hanno pochi strumenti per modificare il modo di bilanciare le linee. Le migliori opzioni disponibili sono l'utilizzo di <wbr> o &shy; per aiutare i layout di testo a prendere decisioni più intelligenti su dove spezzare righe e parole.

In qualità di sviluppatore, non conosci le dimensioni finali, le dimensioni dei caratteri o persino la lingua di un titolo o paragrafo. Tutte le variabili necessarie per un trattamento efficace ed estetico del testo a capo si trovano nel browser. Ecco perché vediamo il wrapping dei titoli come nell'immagine seguente:

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

Con text-wrap: balance di CSS Text 4, puoi richiedere al browser di trovare la soluzione migliore per il ritorno a capo automatico bilanciato per il testo. Il browser conosce tutti i fattori, come le dimensioni del carattere, la lingua e l'area allocata. I risultati del testo a capo bilanciato del browser oggi hanno il seguente aspetto:

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

È utile vederli uno accanto all'altro, comunque e senza sovrapposizioni di informazioni di debug.

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

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 l'equilibrio

I titoli sono la prima cosa che vedono i lettori; devono essere visivamente accattivanti e facili da leggere. Ciò attira l'attenzione degli utenti e fornisce un senso di qualità e sicurezza. Una buona grafica tipografia dà fiducia ai lettori, incoraggiandoli a continuare a leggere.

Tradizionalmente questa attività veniva svolta a mano, o visivamente, perché il designer che bilancia il testo vuole attirare l'attenzione, non i calcoli. Questo argomento viene spesso definito come allineamento metrica e allineamento ottico. Per pubblicazioni di grandi dimensioni come il New York Times, il bilanciamento dei titoli è un dettaglio molto importante relativo all'esperienza utente.

Prova una demo

Il bilanciamento del testo tipografico risale agli albori della stampa, quando le stampanti mettevano le lettere. Con l'evoluzione degli strumenti e delle tecniche, sono aumentati anche i risultati. Oggi, i designer sono in grado di colore, peso, dimensione e molto altro per bilanciare il testo nei design.

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

Trova il giusto equilibrio tra i titoli

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

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

La sola applicazione di questo stile potrebbe non restituire i risultati previsti, perché il testo deve andare a capo e quindi avere una lunghezza massima della riga applicata da qualche parte. Negli esempi di questo post vedrai un max-inline-size impostato. 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 ripetere continuamente iterazioni per trovare la soluzione di wrapping migliore. Questo costo per le prestazioni è mitigato da una regola, funziona solo per sei righe aggregate o inferiori.

Prova una demo

Considerazioni sulle prestazioni

Non è una buona idea applicare il bilanciamento del testo a capo all'intero progetto. È 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;
}
VALUTA INVECE
h1, h2, h3, h4, h5, h6, blockquote {
  text-wrap: balance;
}

Un grande vantaggio di questa funzionalità è che non è necessario attendere e cronometrare il bilanciamento del testo a capo con il caricamento del carattere, come è accaduto oggi con JavaScript. Il browser se ne occupa.

Interazioni con la proprietà white-space

Il testo sul bilanciamento compete con la proprietà white-space perché una richiede l'assenza di wrapping e l'altra richiede un wrapping bilanciato. Per risolvere il problema, annulli la proprietà dello spazio bianco. In questo modo, sarà possibile applicare di nuovo il wrapping bilanciato.

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

Il bilanciamento non modifica le dimensioni in linea dell'elemento

Alcune soluzioni JavaScript presentano un vantaggio per il wrapping di testo bilanciato, in quanto modificano il max-width dell'elemento contenitore stesso. Questo ha un ulteriore vantaggio di essere "shrink wrap" per il blocco bilanciato. text-wrap: balance non ha questo effetto ed è visibile in questo esempio:

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

Vedi come la larghezza mostrata da DevTools presenta molto spazio in più alla fine? Il motivo è che si tratta solo di uno stile di wrapping, non di uno stile che cambia taglia. Per questo motivo, ci sono alcuni scenari in cui text-wrap: balance non è il massimo, almeno secondo me. ad esempio le intestazioni all'interno di una scheda (o 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, fermandosi a un pixel CSS (non a quello di visualizzazione). Per ridurre ulteriormente al minimo i passaggi della ricerca binaria, il browser inizia con l'80% della larghezza media delle linee.