2012-12-11 7 views
27

Perché le proprietà di wrap non funzionano correttamente nell'esempio seguente?CSS word-wrap non funziona come previsto

http://jsfiddle.net/k5VET/739/

Cosa posso fare per garantire che parte della parola 'consectetur' si inserisce nella prima riga in sé? Voglio il numero massimo di caratteri per adattarsi a ciascuna riga.

Il CSS è:

#fos { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 
    font-size:14px; 
    font-weight: normal; 
    line-height: 18px; 
    width: 238px; 
    height:38px; 
    cursor: pointer; 
    word-wrap:break-word; 
    border:2px solid; } 
+0

questo ha aiutato: http://stackoverflow.com/questions/10743763/word-wrap-break-word-does-not-work-in-this-example –

risposta

46

Usa word-break: break-all;

#fos { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 
    font-size:14px; 
    font-weight: normal; 
    line-height: 18px; 
    width: 238px; 
    height:38px; 
    cursor: pointer; 
word-break: break-all; 
    border:2px solid; } 

LIVE DEMO

+0

BTW: in base a questo: http: // caniuse .com/# feat = word-break 'wo rd-break' non funziona in Opera:/ – czachor

+0

sì, non funziona per l'opera – Sowmya

+4

Spezzare una parola in un punto arbitrario, senza nemmeno aggiungere un trattino alla fine di una riga, non è corretto dalle regole del maiale latino, per non parlare del latino o dell'inglese. –

2

E non va a capo correttamente, perché i browser non si applicano sillabazione automatica (che sarebbe il modo per provocare corretto wrapping) per impostazione predefinita. È necessario utilizzare la sillabazione CSS o la sillabazione basata su JavaScipt. L'impostazione word-wrap:break-word, nonché word-break: break-all, per definizione interrompe le parole (suddividendole per dividere i punti arbitary), invece del corretto avvolgimento.

0

Poiché il css word-wrap non funziona in tutti i browser, utilizzare JavaScript invece! Dovrebbe dare lo stesso risultato.

La funzione seguente richiede JQuery e verrà eseguito ogni volta che si ridimensiona la finestra.

La funzione controlla se l'elemento ha più larghezza del suo genitore e, in caso affermativo, interrompe tutto invece che solo le parole. Non vogliamo che i bambini crescano più dei genitori, giusto?

Ho solo bisogno di esso per le tabelle, quindi se lo vuoi in qualche altro elemento, basta cambiare "table" in "#yourId" o ". YourClass". Assicurati che ci sia un parent-div o cambi "div" in "body" o qualcosa del genere?

Se si andrà ad altro, si trasforma in parola pausa e poi verificare se deve cambiare di nuovo, ecco perché c'è tanto di codice ..: '/

$(window).on('resize',function() { 
    $('table').each(function(){ 
     if($(this).width() > $(this).parent('div').width()){ 
      $(this).css('word-break', 'break-all'); 
     } 
     else{ 
      $(this).css('word-break', 'break-word'); 
      if($(this).width() > $(this).parent('div').width()){ 
       $(this).css('word-break', 'break-all'); 
      } 
     } 
    }); 
}).trigger('resize'); 

Spero che lavora per tu!

85

Se word-wrap: break-all non funziona, provare anche aggiungere questo:

white-space:normal; 

lavoro per me con la classe .btn in Bootstrap 3

+6

Non ho idea del motivo per cui funziona, ma questo mi ha risparmiato un sacco di tempo, grazie! – diplosaurus

+0

Salvato il mio giorno ... –

+1

Salvato il mio giorno !! Saluti! – Daft

1

Questo è utile per il confezionamento di testo in una sola riga: