back to top

Andare a capo con CSS: la proprietà word-wrap

Grazie a CSS3, è possibile forzare il ritorno a capo di una stringa anche in assenza di spaziature tra i caratteri. In altre parole, la nuova versione del linguaggio CSS consente di andare a capo anche quando ci sono parole (o, meglio dire, stringhe) troppo lunghe che, normalmente, causerebbero un’impossibilità per il testo di rispettare la dimensione del proprio box contenitore. Questa funzionalità è particolarmente utile quando si gestiscono testi non spezzabili come URL o stringhe di codice.

Nella precedente lezione abbiamo visto come gestire il tracimamento del testo mediante la proprietà text-overflow. I più attenti di voi avranno notato che, negli esempi, abbiamo utilizzato anche la proprietà white-space (CSS1) per definire il modo in cui gestire il testo in presenza di “spazi bianchi”. Con CSS3 il linguaggio ha fatto un passo in avanti consentendo allo sviluppatore di definire il comportamento del testo anche in “assenza di spazi”. Cerchiamo di spiegare meglio.

Pubblicità

Parole troppo lunghe?

Cosa succede quando un box contiene delle stringhe molto lunghe e prive di spazi – come avviene, ad esempio, con le URL – che non possono essere “mandate a capo”? Se il box ha una larghezza fissa orizzontale, le parole troppo lunghe escono dal bordo a destra del box, causando un impatto negativo sul layout della pagina:

un testo che esce dai contorni di un box

Questo avviene, ovviamente, se non è stata impostata la proprietà overflow: hidden. Se è definita questa proprietà, infatti, tutto il testo che esce dai contorni del box viene tagliato, creando però un effetto poco elegante:

un testo interrotto interrotto da overflow:hidden

Nessuna delle due soluzioni, tuttavia, è veramente soddisfacente. Ci sono molti casi in cui è meglio forzare il ritorno a capo delle parole troppo lunghe. Questo può avvenire grazie alla nuova proprietà word-wrap, ora chiamata overflow-wrap nei moderni standard CSS, che, utilizzata col valore break-word, fa sì che le parole eccessivamente lunghe vengano comunque spezzate su più righe per ragioni di spazio. Ecco un esempio pratico di codice:

div.box {
  border: 2px solid;
  padding: 10px;
  width: 200px;
  word-wrap: break-word; /* Utilizzare overflow-wrap nei moderni CSS */
}

Il risultato, sebbene non perfetto, è sicuramente più ordinato rispetto ai precedenti metodi. Inoltre, fa sì che il contenuto rimanga all’interno dei confini del layout previsto, migliorando l’usabilità e l’aspetto estetico della pagina.

un testo con parole lunghe spezzate su più righe

Purtroppo non è possibile inserire un segno che indichi il ritorno a capo, come il classico trattino (-), quando si utilizza word-wrap (o overflow-wrap). Tuttavia, è possibile stilizzare il testo in modo tale da mantenere una buona leggibilità e usabilità.

Il valore di default di word-wrap è “normal”, e corrisponde alla situazione in cui il testo viene mandato a capo solo in presenza di spazi. Consigliamo di utilizzare overflow-wrap: break-word quando si ritiene necessario gestire parole senza spazi in layout responsivi.

Pubblicità
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).