2012-03-29 39 views
11

Tengo un div con un contenido interno que necesito para tener una elipsis cuando se desborda. He hecho esto muchas veces sobre otros elementos, pero por alguna razón esto no se está comportando como se esperaba.CSS Elipsis de desbordamiento de texto no muestra

Además, dejé white-space:nowrap; a propósito porque el contenido no pasa a la siguiente línea dentro del lapso, como resultado, solo veo 2-3 palabras antes de que comience la elipsis. Me gustaría que el texto abarque toda la altura del contenedor padre y luego tener los puntos suspensivos de inicio para el contenido que existe más allá de esos límites.

Aquí es una demostración de trabajo: http://jsfiddle.net/sadmicrowave/DhkSA/

CSS:

.flow-element{ 
    position:absolute; 
    font-size:12px; 
    text-align:center; 
    width:75px; 
    height:75px; 
    line-height:70px; 
    border:1px solid #ccc; 
} 

.flow-element .inner{ 
    position:absolute; 
    width:80%; 
    height:80%; 
    border:1px solid blue; 
    top:0px; 
    bottom:0px; 
    left:0px; 
    right:0px; 
    margin:auto; 
    text-align:center; 
} 

.flow-element .long{ 
    float:left; 
    height:50px; 
    width:100%; 
    line-height:12px; 
    border:1px solid red; 
    text-overflow:ellipsis; 
    overflow:hidden; 
} 

HTML:

<a class='flow-element' style='top:100px; left:50px;'> 
    <div class='inner'> 
    <span class='long'>Box 1 and some other content that should wrap and do some other stuff</span> 
    </div> 
</a> 

Puede alguien por favor ayuda. Necesito mostrar tanto texto como sea posible dentro del lapso indicado en rojo mientras que tiene una elipsis cuando el contenido de texto desborda el contenedor ...

Gracias de antemano

Respuesta

28

no se puede aplicar a text-overflow: ellipsis Elementos en línea (Span), que se puede utilizar con elementos de bloque solamente (div)

y también utilizar white-space:nowrap; cuando se utiliza text-overflow: ellipsis;

comprobar esto, he convertido su lapso interno a dIV, sólo para la prueba de concepto

http://jsfiddle.net/3CgcH/5/

no sé por qué se ha utilizado palmo, pero según su lógica se puede hacer chang es como he sugerido

Actualización:

alguien va a pensar que en la pregunta si pongo white-space: nowrap; al elemento SPAN entonces el text-overflow: ellipsis: está trabajando así que puede ser que me equivoque, pero no es el caso, ya que pregunta ha utilizado float: left en la etiqueta span, lo que significa que la etiqueta span se convertirá en un bloque de cuadro y funcionará como un elemento de nivel de bloque normal, lo cual también es incorrecto porque si necesita el comportamiento del elemento block use un elemento de nivel de bloque

Referencia:

http://www.w3.org/TR/CSS2/visuren.html#propdef-float

http://dev.w3.org/csswg/css3-ui/#text-overflow

+0

eso es absolutamente incorrecto. funciona muy bien con elementos en línea. –

+0

¿por qué este borrador de w3c dice que se aplica solo al bloque? http://dev.w3.org/csswg/css3-ui/#text-overflow –

+0

también verifique esta respuesta http://stackoverflow.com/a/9924984/1237812 –

0

Añadir white-space:nowrap; a su div .inner.

+0

añadiendo su sugerencia, de hecho agrega la elipsis al texto, sin embargo, el texto no se ajusta al ancho del elemento interno. Necesito mostrar todo el texto que pueda, no solo dos o tres palabras ... – sadmicrowave

+0

Sí, lo noté y estaba trabajando en una solución que abarcaría más de una línea ... – huzzah

+0

@sadmicrowave : No entiende cómo funciona el desbordamiento de texto. ¿Quieres ver más? Entonces debes agrandar el ancho. –

0

añadir lo siguiente:

white-space:nowrap; 

a .flow-elemento .long

a continuación las obras de desbordamiento-ellispsis.

+0

por favor vea mi comentario a la publicación de Heather Walters de la misma solución. – sadmicrowave

0

Creo que el problema se debe a tener text-align: center;

Cuestiones relacionadas