2011-09-14 20 views
48

Una delle colonne della tabella può contenere un testo lungo senza spazi vuoti. Come posso limitare la sua larghezza a, ad esempio, 150 px? Non voglio che sia sempre 150px (se è vuoto dovrebbe essere stretto), ma se c'è un testo lungo voglio che sia limitato con 150px e il testo da avvolgere.Come posso limitare la larghezza della colonna della tabella?

Ecco un esempio di prova: http://jsfiddle.net/Kh378/ (limitiamo la 3a colonna).

Grazie in anticipo.

Aggiornamento:
L'impostazione di questo stili:

word-wrap: break-word; 
max-width: 150px; 

non funziona in IE8 (testati su computer diversi) e suppongo che non funziona in qualsiasi versione di IE.

+0

Poiché questa domanda ha quasi tre anni e al momento non ha una taglia, mi chiedevo se ha ancora bisogno di una risposta? –

+1

@Frank Conijn, Sì, lo fa! :) – nightcoder

+0

Che 2 anni dopo risponda anche se – Developer

risposta

48

Updated

Sulla della tabella td e th tag ho aggiunto:

word-wrap: break-word; 
max-width: 150px; 

non è pienamente compatibile in tutti i browser, ma un inizio.

+1

Sfortunatamente, non funziona in IE8 (e suppongo che non funzioni in nessuna versione di IE .. .). – nightcoder

2

Si dovrebbe essere in grado di stile la vostra colonna con:

max-width: 150px; 
word-wrap: break-word; 

noti che word-wrap è supportato in IE 5.5+, Firefox 3.5+, e browser WebKit (Chrome e Safari).

+0

Vedere questo in modo più dettagliato, in particolare la larghezza massima e (attualmente) i problemi lì, nella soluzione simile/equivalente questa pagina http://stackoverflow.com/a/24620364/2255628 –

3

La domanda è stata risolta in another StackOverflow thread. In breve, dovresti semplicemente usare la larghezza invece della larghezza massima.

+0

Non funziona per me. Potresti per favore preparare un jsfiddle? – nightcoder

5

È necessario utilizzare invece la larghezza.

<table> 
    <thead> 
     <tr> 
      <th>Name</th> 
      <th>Age</th>     
      <th style="width: 150px;"></th> 
     </tr> 
    </thead> 
    <tbody> 
    </tbody> 
</table> 

Ma solo nella sezione <thead>.

0

c'è un'opzione per simulare max-width:

simulateMaxWidth: function() { 
    this.$el.find('th').css('width', ''); // clear all the width values for every header cell 
    this.$el.find('th').each(function(ind, th) { 
     var el = $(th); 
     var maxWidth = el.attr('max-width'); 
     if (maxWidth && el.width() > maxWidth) { 
      el.css('width', maxWidth + 'px'); 
     } 
    }); 
} 

questa funzione può essere chiamato $ (window) .on ('ridimensionare', ...) più volte

this.$el 

rappresenta elemento padre, nel mio caso ho marionetta

per quelli esimo elementi che dovrebbe avere max-width, ci dovrebbe essere un attributo max-width come:

<th max-width="120"> 
0

1) Specificare la larghezza per ogni colonna in <th> in base alle proprie esigenze.

2) Aggiungere un ritorno a capo per ogni <td> in <tr> dello <table>.

word-wrap: break-word; 
0

Dopo alcuni esperimenti in Chrome sono arrivato alla seguente:

  • se la tabella ha un <th> che dovrebbe disporre di un "larghezza" o un "max-width" set
  • la <td> deve avere impostato "max-larghezza" e "word-wrap: break-word;"

Se si utilizza una "larghezza" nel valore <th>, verrà utilizzato il suo valore. Se si utilizza una "larghezza massima" nel valore <th>, viene utilizzato il valore "larghezza massima" di <td>.

Quindi questa funzionalità è piuttosto complessa. E non ho nemmeno studiato tavoli senza intestazioni o senza stringhe lunghe che hanno bisogno di una "parola d'ordine".

0

è molto facile

è possibile aggiungere attributi come questi

max-width

max-height

Possono essere impostati in HTML come attributo o in CSS come stile

Problemi correlati