overflow del testo: i puntini di sospensione non funzionano


264

Questo è quello che ho provato (vedi qui ):

body {
    overflow: hidden;
}

span {
    border: solid 2px blue;
    white-space: nowrap;
    text-overflow: ellipsis;
}

In sostanza, voglio che la luce si riduca con i puntini di sospensione quando la finestra viene ridotta. Cos'ho fatto di sbagliato?


6
i requisiti per il funzionamento dei puntini di sospensione: stackoverflow.com/a/33061059/3597276
Michael Benjamin

Il problema che avevo quando pensavo che non funzionasse era che non avevo impostato la larghezza abbastanza a lungo (10px). Quindi stavo tagliando le ellissi, eh!
Rod,

Risposte:


459

Devi avere CSS overflow, width(o max-width) display, e white-space.

http://jsfiddle.net/HerrSerker/kaJ3L/1/

span {
    border: solid 2px blue;
    white-space: nowrap;
    text-overflow: ellipsis;
    width: 100px;
    display: block;
    overflow: hidden
}

Addendum Se si desidera una panoramica delle tecniche per eseguire il clamping della linea (Ellissi di overflow multilinea), consultare questa pagina Trucchi CSS: https://css-tricks.com/line-clampin/

Addendum2 (maggio 2019)
Come afferma questo link , Firefox 68 supporterà -webkit-line-clamp(!)


12
La proprietà dello spazio bianco era ciò che mi mancava. Grazie.
nebulousGirl

65
Fa schifo che hai bisogno della white-space: nowrap;proprietà. Ora puoi far terminare solo una riga di testo con ... anziché un blocco di testo.
Sven van Zoelen,

3
Oggi, tutti i principali browser supportano i puntini di sospensione: caniuse.com/#feat=text-overflow
kazy

1
@basZero Multiline Ellipsis non è supportato solo con CSS. Devi prendere altre misure
yunzen

1
È necessario specificare una larghezza in modo che il contenitore sia rilegato, è necessario impostare l'overflow: nascosto in modo che il browser nasconda il testo di over-over, quindi impostare l'overflow del testo: puntini di sospensione per indicare al browser come gestire in modo particolare il nascondimento dell'overflow del testo.
Michael Angstadt,

46

Assicurati di avere un elemento a blocchi, una dimensione massima e imposta l'overflow su nascosto. (Testato in IE9 e FF 7)

http://jsfiddle.net/uh9zD/

div {
    border: solid 2px blue;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    width: 50px;
}

5
Sembra quello spazio bianco: la proprietà nowrap può anche essere generalmente necessaria, per qualsiasi cosa con spazi.
Kzqai,

Esatto duplicato del commento sopra.
nebulousGirl

@nebulousGirl: in realtà il commento di Kzqai era precedente a quello postato nei commenti di HerrSerker.
lepe,

C'è stranezza in IE - IE non racchiude una seconda parola (testato in IE 11) ... Vai a capire. Funziona con qualsiasi altro browser come previsto (incluso il buon vecchio Opera 12).
Nux,

1
@Nux Anche questo non funziona come previsto nel browser MS Edge
yunzen

21

Per le linee multiple in Chrome utilizzare:

display: inline-block;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2; // max nb lines to show
-webkit-box-orient: vertical;

Ispirato da YouTube ;-)


Questa è una soluzione molto interessante. Utilizza le -webkit-*proprietà, ma è supportato in tutti i principali browser. Maggiori informazioni possono essere trovate qui: css-tricks.com/almanac/properties/l/line-clamp
dkniffin

5

Stavo avendo un problema con i puntini di sospensione sotto cromo. Attivare lo spazio bianco: nowrap sembrava risolverlo.

max-width: 95px;
max-height: 20px;
overflow: hidden;
display: inline-block;
text-overflow: ellipsis;
border: solid 1px black;
font-size: 12pt;
text-align: right;
white-space: nowrap;

4
word-wrap: break-word;

questo e solo questo ha fatto il lavoro per me per a

<pre> </pre> 

etichetta

tutto il resto non è riuscito a fare i puntini di sospensione ....


3

Solo un avvertimento per chiunque possa imbattersi in questo ... Il mio h2 stava ereditando

text-rendering: optimizelegibility; 
//Changed to text-rendering: none; for fix

che non consentiva i puntini di sospensione. Apparentemente questo è molto finickey eh?


2

Aggiungi questo codice qui sotto per dove ti piace

esempio

p{
   display: block; /* Fallback for non-webkit */
   display: -webkit-box;
   max-width: 400px;
   margin: 0 auto;
   -webkit-line-clamp: 2;
   -webkit-box-orient: vertical;
   overflow: hidden;
   text-overflow: ellipsis;
 }

2

Per più righe

In Chrome, è possibile applicare questo CSS se è necessario applicare i puntini di sospensione su più linee.

Puoi anche aggiungere larghezza nel tuo CSS per specificare l'elemento di una certa larghezza:

.multi-line-ellipsis {
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
}
<p class="multi-line-ellipsis">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>


1

Puoi provare a usare i puntini di sospensione aggiungendo quanto segue nei CSS:

.truncate {
  width: 250px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

Ma sembra che questo codice si applichi solo al trim di una riga. Altri modi per tagliare il testo e mostrare i puntini di sospensione sono disponibili in questo sito Web: http://blog.sanuker.com/?p=631


0

Aggiungi le seguenti righe nel CSS per far funzionare i puntini di sospensione

 p {
     display: block; // change it as per your requirement
     overflow: hidden;
     text-overflow: ellipsis;
     white-space: nowrap;
   }

0

Per quelli di noi che non vogliono usare la larghezza fissa , funziona anche usando display: inline-grid. Quindi insieme alle proprietà richieste devi solo aggiungeredisplay

span {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    display: inline-grid;
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.