2010-05-25 8 views
7

En HTML, existe-t-il un moyen de répartir uniformément le texte qui est rompu sur plusieurs lignes?Enveloppe de texte équilibrée au format HTML

Par exemple, je ne veux pas:

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

Je préfère:

 
        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) est en cours. – Gajus

Répondre

13

Adobe a proposé d'ajouter une nouvelle propriété CSS text-wrap: balance.

En attendant, ils ont créé un plugin jQuery nommé balance-text pour obtenir le même résultat.

1

HTML/CSS pur il n'y a pas un moyen d'y arriver, parce qu'il n'y a façon de mesurer la longueur de la ligne.

Une façon de le faire serait avec javascript, mais vous obtiendrez un FOBUC tandis que le javascript calcule la longueur de la ligne et la divise en conséquence.

La meilleure façon d'éviter cela serait de diviser la ligne avec PHP/ASP/Quoi que vous utilisiez.

+1

Eh bien, "la meilleure façon" est malsaine face aux polices variables et (probablement) la largeur limitée. Par exemple, FireFox dispose d'une option de taille de police minimale, qui viserait probablement une telle configuration. – doublep

+3

Qu'est-ce qu'un "FOBUC"? – aditsu

+1

[FOUC] (http://en.wikipedia.org/wiki/Flash_of_unstyled_content): flash du contenu non-sténodé – kirkaracha

0

Je pense que vous pouvez y parvenir si vous définissez la largeur fixe du conteneur d'éléments et jouez avec les propriétés padding.

1

Un peu d'une solution de contournement, mais vous pouvez utiliser des espaces insécables pour les derniers mots:

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

Une autre approche similaire serait de '
' les lignes manuellement, comme dans '

Voici une étiquette vraiment longue
se termine sur deux lignes

' –