2010-09-09 9 views
20

Dado un texto que ocupa unas 10 filas, ¿cómo puedo cambiar el tamaño de su contenedor para mostrar solo las primeras 3 filas y ocultar las demás? Al parecer, esto funciona, pero creo que no es confiable:Cómo establecer la altura del elemento para un número fijo de líneas de texto

.container { 
    height: 7.5ex; /* 2.5ex for each visible line */ 
    overflow: hidden; 
} 

¿Puedo confiar en el hecho de que height of one row = 2.5ex o es sólo una coincidencia en los navegadores que estoy usando para probar?

Respuesta

27

Si se van a utilizar este debe garantizar la line-height es siempre 2.5ex

.container { 
    line-height: 2.5ex; 
    height: 7.5ex; /* 2.5ex for each visible line */ 
    overflow: hidden; 
} 

Demo

+2

+1 para * garantizar la altura de la línea. * –

+1

Gracias, esto es lo que estaba buscando :) – Tom

+4

Por si alguien se pregunta qué es la unidad 'ex': [¿Cuál es el valor de la css 'ex 'unidad?] (http://stackoverflow.com/questions/918612/what-is-the-value-of-the-css-ex-unit) – Mikel

4

La unidad ex es la fuente altura de la x (altura de su carácter x). No usaría esto aquí. Deberías usar la unidad em. Esta es la altura real de la fuente. La altura de fuente se define estableciendo la propiedad de altura de línea. Por lo tanto:

.container { 
    height: 3em; /* 1em for each visible line */ 
    overflow: hidden; 
} 

Aquí hay más información sobre las unidades de longitud CSS: http://www.w3.org/TR/CSS21/syndata.html#length-units

+0

En realidad, esto no funciona. Inténtalo con algunos valores para la altura. – Tom

+0

Weird ... funciona para mí, aunque utilizo Blueprint; Eso podría hacer una diferencia. – Johan

+0

Estoy seguro de que lo probé y falló en al menos dos navegadores. No puedo recordar cuáles, pero estoy seguro de que falló, así que después de ir "wtf" llegué al SO. – Tom

1

puede ajustar la altura de la línea de un texto y con él conoce la altura exacta de cada fila y se obtenga la altura deseada de su contenedor , sólo tiene que hacer esto:

.container { 
    line-height:25px; 
    height:75px; 
    overflow:hidden; 
} 

Ahora todo funciona correctamente :)

0

puede utilizar la propiedad webkit-line pinza

.container { 
    overflow: hidden; 
    display: -webkit-box; 
    -webkit-line-clamp: 3; 
    -webkit-box-orient: vertical; 
} 

No funciona en todos los navegadores, pero espero que un día.

Cuestiones relacionadas