Straripamento: punti nascosti alla fine


206

Diciamo che ho una stringa " Mi piacciono i mozziconi e non posso mentire " e la taglio con overflow:hidden, quindi visualizza qualcosa del genere:

Mi piacciono i mozziconi e non posso

tagliare il testo. È possibile visualizzare questo in questo modo:

Mi piacciono i mozziconi e non posso ...

usando CSS?


46
Questa domanda è uno stratagemma per promuovere la canzone?
Cyril Gupta,

12
@CyrilGupta Ci scusiamo per la risposta tardiva. Ho dovuto correre in bagno. Per rispondere alla tua domanda ... Sì
Joe Phillips,

Risposte:


282

È possibile utilizzare l' overflow del testo: puntini di sospensione; che secondo caniuse è supportato da tutti i principali browser.

Ecco una demo su jsbin.

.cut-text { 
  text-overflow: ellipsis;
  overflow: hidden; 
  width: 160px; 
  height: 1.2em; 
  white-space: nowrap;
}
<div class="cut-text">
I like big buts and I can not lie.
</div>


Sembrava funzionare in Firefox 15.0.1
Jace

Sì, sembra funzionare nelle versioni più recenti. Ovviamente questa risposta ha qualche anno a questo punto.
Joe Phillips,

Firefox ha iniziato a supportarlo a partire dalla versione 7, che è stata rilasciata nella seconda metà del 2011.
Richard Ev,

1
Posso usare il mio buon senso per dire che questa risposta è "giusta" in base ai voti e ai commenti. Tuttavia, non riesco a vedere in realtà come questa risposta sia "giusta". Ho usato entrambi overflow: hidden;e text-overflow: ellipsis;in un <p>elemento (cioè un elemento a blocchi) e ...alla fine non ho trovato (ovviamente mi sto assicurando che trabocca davvero). Ho anche provato questo senza la overflow: hidden;parte, e anche con un <span>elemento all'interno <p>dell'elemento in cui l' <p>elemento aveva overflow: hidden;e <span>aveva text-overflow: ellipsis;Non importa come ci provo, questo è un fallimento ..
VoidKing

2
Bene, penso di conoscere il problema. Sto cercando di limitare l'overflow in base a max-heightcui non posso aver white-space:impostato sunowrap
VoidKing il

89

Controlla il seguente frammento per il tuo problema

div{
  width : 100px;
  overflow:hidden;
  display:inline-block;
  text-overflow: ellipsis;
  white-space: nowrap;
}
<div>
    The Alsos Mission was an Allied unit formed to investigate Axis scientific developments, especially nuclear, chemical and biological weapons, as part of the Manhattan Project during World War II. Colonel Boris Pash, a former Manhattan P
</div>


4
up per l'aggiunta di "white-space: nowrap;" che potrebbe essere necessario in alcuni casi
Leo

2
come far scomparire il testo per visualizzare 2 righe?
Martian2049,

1
@ Matian2040 è possibile regolare dando stili nascosti fissi di altezza e trabocco, controllare questo violino jsfiddle.net/5135L4bx
Arjun

1
Oh, capisco. Provai. tuttavia sembra che due righe significhino che non ci sarà un ... alla fine?
Martian2049

1
display: inline-block;era il componente mancante per me. Grazie.
Seth,

18

Prova questo se vuoi limitare le linee fino a 3 e dopo tre linee appariranno i punti. Se vogliamo aumentare le linee basta cambiare il valore -webkit-line-clamp e dare la larghezza per la dimensione div.

div {
   display: -webkit-box;
   -webkit-line-clamp: 3;
   -webkit-box-orient: vertical;
   overflow: hidden;
   text-overflow: ellipsis;
}

mi scuso, non sono sicuro di come ho rimosso le tue parole in quel modo!
Alec,

funziona alla grande su Chrome, ma nota che questo non funzionerà su Firefox
Ken Bigler il

Come faccio a farlo su un altro browser, ad esempio Firefox? Edit: stackoverflow.com/questions/33058004/...
user3187724

17

Spero che ti sia utile:

.text-with-dots {
    display: block;
    max-width: 98%;
    white-space: nowrap;
    overflow: hidden !important;
    text-overflow: ellipsis;
}
<div class='text-with-dots'>Some texts here Some texts here Some texts here Some texts here Some texts here Some texts here </div>



8

In bootstrap 4 , puoi aggiungere una .text-truncateclasse per troncare il testo con i puntini di sospensione.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>

<!-- Inline level -->
<span class="d-inline-block text-truncate" style="max-width: 190px;">
  I like big butts and I cannot lie
</span>


6
<style>
    .dots
    {
        display: inline-block;
        width: 325px;
        white-space: nowrap;
        overflow: hidden !important;
        text-overflow: ellipsis;
    }

    .dot
    {
        display: inline-block;
        width: 185px;
        white-space: nowrap;
        overflow: hidden !important;
        text-overflow: ellipsis;
    }
</style>

3

La maggior parte delle soluzioni usa la larghezza statica qui. Ma a volte può essere sbagliato per alcuni motivi.

Esempio: avevo una tabella con molte colonne. La maggior parte sono stretti (larghezza statica). Ma la colonna principale dovrebbe essere il più ampia possibile (dipende dalle dimensioni dello schermo).

HTML:

<table style="width: 100%">
  <tr>
    <td style="width: 60px;">narrow</td>
    <td>
      <span class="cutwrap" data-cutwrap="dynamic column can have really long text which can be wrapped on two rows, but we just need not wrapped texts using as much space as possible">
        dynamic column can have really long text which can be wrapped on two rows
        but we just need not wrapped texts using as much space as possible
      </span>
    </td>
  </tr>
</table>

CSS:

.cutwrap {
  position: relative;
  overflow: hidden;
  display: block;
  width: 100%;
  height: 18px;
  white-space: normal;
  color: transparent !important;
}
.cutwrap::selection {
  color: transparent !important;
}
.cutwrap:before {
  content: attr(data-cutwrap);
  position: absolute;
  left: 0;
  right: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: #333;
}
/* different styles for links */
a.cutwrap:before {
  text-decoration: underline;
  color: #05c;
}

3
<!DOCTYPE html>
<html>
<head>
<style>
.cardDetaileclips{
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 3; /* after 3 line show ... */
    -webkit-box-orient: vertical;
}
</style>
</head>
<body>
<div style="width:100px;">
  <div class="cardDetaileclips">
    My Name is Manoj and pleasure to help you.
  </div>
</div> 
</body>
</html>

-1

nasconde il testo al caricamento e mostra al passaggio del mouse

<span class="hide-text"> How to hide text by dots and show text on hover</span>

.hide-text {
    width: 70px;
    display: inline-block;
    white-space: nowrap;
    overflow: hidden !important;
    text-overflow: ellipsis;
  }

  span:hover {
     white-space: unset;
     text-overflow: unset;
  }
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.