2010-05-25 10 views
7

In HTML, c'è un modo per distribuire uniformemente il testo che è suddiviso su più righe?Text wrapping bilanciato in HTML

Ad esempio, io non voglio:

 
    Here is some really long label that ends up on 
    two lines. 

Preferirei:

 
        Here is some really long label 
         that ends up on two lines. 
+1

[ 'text-wrap: balance'] (https://www.w3.org/TR/css-text-4/# text-wrap) è in lavorazione. – Gajus

risposta

13

Adobe ha proposto di aggiungere una nuova proprietà css text-wrap: balance.

Nel frattempo hanno creato un plug-in jQuery denominato balance-text per ottenere lo stesso risultato.

1

in puro HTML/CSS, non c'è un modo per ottenere questo risultato, perché non c'è modo per misurare la lunghezza della linea.

Un modo per farlo sarebbe con javascript, ma si finirà con un FOBUC mentre il javascript calcola la lunghezza della linea e la suddivide di conseguenza.

Il modo migliore per evitare sarebbe quello di dividere la linea con PHP/ASP/Qualunque cosa tu stia utilizzando.

+1

Bene, "il modo migliore" non è corretto a fronte di caratteri variabili e (probabilmente) larghezza limitata. Ad esempio, FireFox ha l'opzione minima per la dimensione del font, che probabilmente potrebbe rovinare questa configurazione. – doublep

+3

Che cos'è un "FOBUC"? – aditsu

+1

[FOUC] (http://en.wikipedia.org/wiki/Flash_of_unstyled_content): lampo di contenuti unstyled – kirkaracha

0

Penso che si possa ottenere questo se si imposta la larghezza fissa del contenitore-elemento e si gioca con le proprietà padding.

1

Un po 'di una soluzione, ma è possibile utilizzare gli spazi non divisibili per le ultime parole:

<p>Here is some really long label that ends on&nbsp;two&nbsp;lines</p> 
+0

altro approccio simile sarebbe quello di ''
le linee manualmente, come in '

Ecco alcuni molto lungo etichetta
che termina su due linee

' –