con
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
"..." se mostrará al final de la línea si se desborda. Sin embargo, esto se mostrará solo en una línea. Pero me gustaría que se muestre en varias líneas.
Puede verse así:
+--------------------+
|abcde feg hij dkjd|
|dsji jdia js ajid s|
|jdis ajid dheu d ...|/*Here it's overflowed, so "..." is shown. */
+--------------------+
Respuestas:
También hay varios complementos de jquery que se ocupan de este problema, pero muchos no manejan varias líneas de texto. Siguientes trabajos:
También hay algunas pruebas de rendimiento .
fuente
He pirateado hasta que logré lograr algo parecido a esto. Viene con algunas advertencias:
También debo tener en cuenta que el texto se dividirá en un límite de palabra, no en un límite de caracteres. Esto fue deliberado (ya que lo considero mejor para textos más largos), pero como es diferente de lo que
text-overflow: ellipsis
hace, pensé que debería mencionarlo.Si puede vivir con estas advertencias, el HTML se ve así:
Y este es el CSS correspondiente, utilizando el ejemplo de un cuadro de 150 píxeles de ancho con tres líneas de texto sobre un fondo blanco. Se supone que tiene un restablecimiento de CSS o similar que establece los márgenes y rellenos a cero cuando sea necesario.
El resultado se ve así:
Para aclarar cómo funciona, aquí está la misma imagen, excepto que
.hidedots1
está resaltada en rojo y.hidedots2
en cian. Estos son los rectángulos que ocultan los puntos suspensivos cuando no hay texto invisible:Probado en IE9, IE8 (emulado), Chrome, Firefox, Safari y Opera. No funciona en IE7.
fuente
your text
está envuelto con<p>
las etiquetas (como debe ser), entonces usted puede utilizar.ellipsify p:before
y.ellipsify p:after
luego, por supuesto, usted necesita.ellipsify p:before{content:"\2026";}
el\2026
es el código de la elipsis, también, puede ser necesariocontent:" ";
ya que puede que no funcione para los elementos vacíos+1
utilizando.Aquí hay un artículo reciente de css-tricks que discute esto.
Algunas de las soluciones en el artículo anterior (que no se mencionan aquí) son
1)
-webkit-line-clamp
y 2) Coloque un elemento absolutamente posicionado en la parte inferior derecha con desvanecimientoAmbos métodos suponen el siguiente marcado:
con css
1) -webkit-line-clamp
FIDDLE de abrazadera de línea (... para un máximo de 3 líneas)
2) desaparecer
Desaparecer FIDDLE
Solución # 3 - Una combinación usando @supports
Podemos usar @supports para aplicar la pinza de línea de webkit en los navegadores webkit y aplicar la eliminación gradual en otros navegadores.
@Soporta abrazadera de línea con violín de retorno de fundido
CSS
fuente
El siguiente enlace proporciona una solución HTML / CSS pura para este problema.
Soporte de navegador: como se indica en el artículo:
http://www.mobify.com/dev/multiline-ellipsis-in-pure-css
el css:
el html:
el violín
(cambiar el tamaño de la ventana del navegador para probar)
fuente
Chrome for Mac Version 48.0.2564.116
Después de revisar la especificación W3 para desbordamiento de texto , no creo que esto sea posible usando solo CSS. Ellipsis es una propiedad nueva, por lo que probablemente aún no ha recibido mucho uso o comentarios.
Sin embargo, este tipo parece haber hecho una pregunta similar (o idéntica), y alguien pudo encontrar una buena solución de jQuery. Puede demostrar la solución aquí: http://jsfiddle.net/MPkSF/
Si javascript no es una opción, creo que puede que no tengas suerte ...
fuente
Solo quiero agregar a esta pregunta por completo.
fuente
-o-ellipsis-lastline
pudo haber eliminado cuando Opera cambió a WebKit. Dejando la bala para fines históricos.Gran pregunta ... Desearía que hubiera una respuesta, pero esto es lo más cercano que puedes obtener con CSS en estos días. Sin puntos suspensivos, pero aún bastante utilizable.
fuente
He encontrado esta solución css (scss) que funciona bastante bien. En los navegadores webkit muestra los puntos suspensivos y en otros navegadores solo trunca el texto. Lo cual está bien para mi uso previsto.
Un ejemplo del creador: http://codepen.io/martinwolf/pen/qlFdp
fuente
-webkit-line-clamp
compatibilidad con navegadores caniuse.com/#search=-webkit-line-clampAquí está la solución más cercana que podría obtener usando solo css.
HTML
CSS
Working Fiddle ( cambie el tamaño de la ventana para verificar )
Enlace a mi blog para explicación
Fiddle actualizado
Espero que ahora algún experto en CSS tenga idea de cómo hacerlo perfecto. :)
fuente
div::before
lugar de esospan
? :)Aquí hay muchas respuestas, pero necesitaba una que fuera:
La advertencia es que no proporciona puntos suspensivos para los navegadores que no admiten la
-webkit-line-clamp
regla (actualmente IE, Edge, Firefox) pero sí utiliza un degradado para atenuar su texto.Puede verlo en acción en este CodePen y también puede ver una versión de Javascript aquí (no jQuery).
fuente
Un poco tarde para esta fiesta, pero se me ocurrió, lo que creo, es una solución única. En lugar de tratar de insertar sus propios puntos suspensivos a través de css trickery o js, pensé que intentaría rodar con la restricción de una sola línea. Así que duplico el texto para cada "línea" y solo uso una sangría de texto negativa para asegurarme de que una línea comience donde termina la última. VIOLÍN
CSS:
HTML:
Más detalles en el violín. Hay un problema con el reflujo del navegador para el que uso un rediseño JS y así que échale un vistazo, pero este es el concepto básico. Cualquier idea / sugerencia es muy apreciada.
fuente
gracias @balpha y @Kevin, combino dos métodos juntos.
No se necesita js en este método.
puede usar
background-image
y no se necesita degradado para ocultar puntos.el
innerHTML
de.ellipsis-placeholder
no es necesario, yo uso.ellipsis-placeholder
para mantener el mismo ancho y alto con.ellipsis-more
. Podrías usardisplay: inline-block
en su lugar.jsfiddler
fuente
la solución de JavaScript será mejor
is-ellipsis
clase si la ventana cambia el tamaño o cambia el elementogetRowRects
Element.getClientRects()
funciona como estecada rectos en la misma fila tiene el mismo
top
valor, así que descubra los rectos con untop
valor diferente , como esteflotador
...more
como este
detectar cambio de tamaño de ventana o elemento cambiado
como este
fuente
ver más haz clic aquí
fuente
Una base de método CSS pura en -webkit-line-clamp:
fuente
Encontré un truco de JavaScript, pero tienes que usar la longitud de la cadena. Digamos que quieres 3 líneas de ancho de 250 px, puedes calcular la longitud por línea, es decir
fuente