desbordamiento de texto: puntos suspensivos no funcionan


264

Esto es lo que probé (ver aquí ):

body {
    overflow: hidden;
}

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

Esencialmente, quiero que el lapso se reduzca con puntos suspensivos cuando la ventana se hace pequeña. ¿Qué hice mal?


66
los requisitos para que funcionen los puntos suspensivos: stackoverflow.com/a/33061059/3597276
Michael Benjamin

El problema que tuve cuando pensé que no funcionaba fue que no configuré el ancho lo suficiente (10px). Así que estaba cortando los puntos suspensivos, doh!
Rod

Respuestas:


459

Necesita tener CSS overflow, width(o max-width) display, y 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
}

Anexo Si desea obtener una descripción general de las técnicas para sujetar la línea (elipses de desbordamiento multilínea), consulte esta página de CSS-Tricks: https://css-tricks.com/line-clampin/

Anexo 2 (mayo de 2019)
Como se afirma en este enlace , Firefox 68 admitirá -webkit-line-clamp(!)


12
La propiedad del espacio en blanco era lo que me faltaba. Gracias.
nebulousGirl

65
Apesta que necesites la white-space: nowrap;propiedad. Ahora solo puede hacer que una línea de texto termine con ... en lugar de un texto de bloque.
Sven van Zoelen

3
Hoy, todos los principales navegadores admiten puntos suspensivos: caniuse.com/#feat=text-overflow
kazy

1
@basZero Multiline Ellipsis no es compatible solo con CSS. Tienes que tomar otras medidas
yunzen 01 de

1
Debe especificar un ancho para que el contenedor esté enlazado, debe configurar el desbordamiento: oculto para que el navegador oculte el texto de desbordamiento y luego establecer el desbordamiento de texto: puntos suspensivos para indicarle al navegador cómo manejar especialmente la ocultación del desbordamiento de texto.
Michael Angstadt

46

Asegúrese de tener un elemento de bloque, un tamaño máximo y establecer el desbordamiento en oculto. (Probado en IE9 y FF 7)

http://jsfiddle.net/uh9zD/

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

55
Parece ese espacio en blanco: la propiedad nowrap puede ser generalmente necesaria también, para cualquier cosa con espacios.
Kzqai

Duplicado exacto del comentario anterior.
nebulousGirl

@nebulousGirl: en realidad, el comentario de Kzqai fue anterior a los publicados en los comentarios de HerrSerker.
lepe

Hay una peculiaridad en IE: IE no envuelve una segunda palabra (probado en IE 11) ... Vaya. Funciona en cualquier otro navegador como se esperaba (incluido el antiguo Opera 12).
Nux

1
@Nux Esto tampoco funciona como se esperaba en el navegador MS Edge
yunzen

21

Para el uso de varias líneas en Chrome:

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

Inspirado en youtube ;-)


Esta es una solución muy interesante. Utiliza -webkit-*propiedades, pero es compatible con todos los principales navegadores. Puede encontrar más información aquí: css-tricks.com/almanac/properties/l/line-clamp
dkniffin

5

Estaba teniendo un problema con los puntos suspensivos en Chrome. Activando el espacio en blanco: nowrap parecía arreglarlo.

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;

esto y solo esto hizo el trabajo para mí por un

<pre> </pre> 

etiqueta

todo lo demás no pudo hacer los puntos suspensivos ...


3

Solo un aviso para cualquiera que pueda tropezar con esto ... Mi H2 estaba heredando

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

que no permitía puntos suspensivos. Al parecer esto es muy finickey eh?


2

Agregue este código debajo de donde le gusta

ejemplo

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

Para múltiples líneas

En Chrome, puede aplicar este CSS si necesita aplicar puntos suspensivos en varias líneas.

También puede agregar ancho en su CSS para especificar el elemento de cierto ancho:

.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

Puede intentar usar puntos suspensivos agregando lo siguiente en CSS:

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

Pero parece que este código solo se aplica al recorte de una línea. Se pueden encontrar más formas de recortar texto y mostrar puntos suspensivos en este sitio web: http://blog.sanuker.com/?p=631


0

Agregue las siguientes líneas en CSS para que los puntos suspensivos funcionen

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

0

Para aquellos de nosotros que no queremos usar ancho fijo , también funciona usando display: inline-grid. Entonces, junto con las propiedades requeridas, solo agregadisplay

span {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    display: inline-grid;
}
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.