Sto provando a inserire una stringa in un'area determinata (td
) senza linea di interruzione. Il problema è: Ha bisogno di ...Troncare la stringa in base alla larghezza del pixel
- Fit durante il ridimensionamento
- Fit in
N
tipi di risoluzione - Aggiungere
...
alla fine, quando necessario (e non fare quando non necessario) - accettare il cambiamento di
font-size
,font-weight
, efont-family
Sulla base delle risposte su Novon's question, ho fatto il seguente codice:
CSS(// Basta aggiungere alcuni stili di rompere la linea)
.truncated { display:inline-block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
jQuery(// Trova tutto td che contiene un elemento .truncated
. Ottenere la larghezza reale (rimuovendo il contenuto e aggiungendolo di nuovo) di td
. L'applicazione, se necessario, minWidth sulla td
)
jQuery('.truncated').closest('td').each(function() {
var text = jQuery(this).text();
var widthOriginal = jQuery(this).width();
var widthEmpty = jQuery(this).text('').width();
jQuery(this).text(text);
if(widthOriginal >= widthEmpty){
var width = (parseInt(widthEmpty) - 10) + 'px';
jQuery(this).css('maxWidth', width);
jQuery(this).text(text + '...');
}
});
il risultato (come previsto dal codice di cui sopra) è:
ma dovrebbe essere:
Stavo pensando, forse provare a trovare il primo line
della stringa e rimuovere il resto ma non ho trovato un modo per farlo (ed è un sacco di "soluzione" per i miei gusti). C'è un modo migliore per farlo?
[Questa domanda può aiutare] (http: // StackOverflow. it/questions/4700226/i-want-to-truncate-a-text-or-line-with-ellipsis-using-javascript) –
Hai provato a ottenere lo spazio disponibile e poi a dividerlo con un fattore basato sulla larghezza del pixel del personaggio medio? –
@MarcusRommel con 'var widthOriginal = jQuery (this) .width();' Ottengo lo spazio disponibile. Come potrei creare questa divisione? –