Desbordamiento: puntos ocultos al final

206

Digamos que tengo una cadena " Me gustan los traseros grandes y no puedo mentir " y la corto overflow:hidden, así que muestra algo como esto:

Me gustan los traseros grandes y no puedo

cortando el texto. ¿Es posible mostrar esto así:

Me gustan los traseros grandes y no puedo ...

usando CSS?

mannicken
fuente
46
¿Es esta pregunta una artimaña para promocionar la canción?
Cyril Gupta
12
@CyrilGupta Lo siento por la respuesta tardía. Tuve que correr al baño. Para responder a su pregunta ... Sí
Joe Phillips

Respuestas:

282

Puedes usar text-overflow: puntos suspensivos; que según caniuse es compatible con todos los principales navegadores.

Aquí hay una demostración de 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>

Joe Phillips
fuente
Esto parecía funcionar en Firefox 15.0.1: w3schools.com/cssref/tryit.asp?filename=trycss3_text-overflow
Jace
Sí, parece funcionar en versiones más nuevas. Obviamente, esta respuesta tiene algunos años en este momento.
Joe Phillips
Firefox comenzó a admitir esto a partir de la versión 7, que se lanzó en la segunda mitad de 2011.
Richard Ev
1
Puedo usar mi sentido común para decir que esta respuesta es "correcta" según los votos y comentarios. Sin embargo, no veo en realidad cómo esta respuesta es "correcta". Usé ambos overflow: hidden;y text-overflow: ellipsis;en un <p>elemento (es decir, un elemento de bloque) y no encontré ...al final (por supuesto, me estoy asegurando de que realmente se desborde). También probé esto sin la overflow: hidden;parte, y también con un <span>elemento dentro del <p>elemento donde el <p>elemento tenía overflow: hidden;y <span>tenía text-overflow: ellipsis;No importa cómo lo intente, esto es un fracaso ...
VoidKing
2
Bueno, creo que sé el problema. Estoy tratando de restringir el desbordamiento en función de max-heightlo que no puedo haber white-space:configuradonowrap
VoidKing
89

Verifique el siguiente fragmento para su 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>

Arjun
fuente
44
arriba para agregar "white-space: nowrap;" que podría ser necesario en algunos casos
leo
2
¿Cómo hacer que el texto para mostrar 2 líneas luego desaparezca?
Martian2049
1
@ Matian2040 puede ajustar dando altura oculta y desbordar estilos ocultos, consulte este violín jsfiddle.net/5135L4bx
Arjun
1
Oh ya veo. Lo intenté. Sin embargo, parece que dos líneas significa que no habrá un ... al final?
Martian2049
1
display: inline-block;fue el componente que faltaba para mí. Gracias.
Seth
18

Intente esto si desea restringir las líneas hasta 3 y después de tres líneas aparecerán los puntos. Si queremos aumentar las líneas, simplemente cambie el valor de -webkit-line-clamp y proporcione el ancho para el tamaño div.

div {
   display: -webkit-box;
   -webkit-line-clamp: 3;
   -webkit-box-orient: vertical;
   overflow: hidden;
   text-overflow: ellipsis;
}
Nagendra Matala
fuente
disculpas, no estoy seguro de cómo eliminé tus palabras así!
Alec
funciona muy bien en Chrome, pero tenga en cuenta que esto no funcionará en Firefox
Ken Bigler
¿Cómo hago esto en otro navegador, por ejemplo, Firefox? Editar: stackoverflow.com/questions/33058004/…
user3187724
17

Espero que sea útil para usted:

.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>

Vu Phan
fuente
15

Sí, a través de la text-overflowpropiedad en CSS 3. Advertencia: todavía no se admite universalmente en los navegadores.

ceejayoz
fuente
3
La compatibilidad con el navegador es bastante buena ahora, a partir de febrero de 2012. Vea caniuse.com/#search=text-overflow
Simon East
1
Ah, tú eres la razón por la que esta pregunta apareció tres años después.
Sr. Lister el
8

En Bootstrap 4 , puede agregar una .text-truncateclase para truncar el texto con puntos suspensivos.

<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>

Penny Liu
fuente
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>
Cuteboy_Max
fuente
3

La mayoría de las soluciones usan ancho estático aquí. Pero a veces puede estar mal por algunas razones.

Ejemplo: tenía una tabla con muchas columnas. La mayoría de ellos son estrechos (ancho estático). Pero la columna principal debe ser lo más ancha posible (depende del tamaño de la pantalla).

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;
}
Maju
fuente
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>
manoj patel
fuente
-1

ocultar texto al cargar y mostrar al pasar el 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;
  }
Rohit Parte
fuente