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?


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>


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>


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

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>



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>


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

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

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;
  }
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.