2012-08-16 13 views
8

Mi objetivo es crear un elemento con desbordamiento oculto y puntos suspensivos, excepto que quiero ocultar los caracteres del lado IZQUIERDO y los puntos suspensivos también para estar a la izquierda. Esto funciona para la mayoría de los navegadores:Varios problemas de compatibilidad del navegador con elipsis de desbordamiento de texto en el lado izquierdo usando RTL

CSS:

#mydiv { 
    overflow:hidden; 
    white-space:nowrap; 
    text-overflow:ellipsis; 
    direction:rtl; 
} 

HTML:

<div id="mydiv">foobar foobar foobar</div> 

Lo cual, cuando #mydiv es más estrecha que su contenido, debe salir como algo parecido a:

... obar foobar

Sin embargo, por lo que puedo decir (y advertencia justa a cualquier otra persona que intente esto, ya que he visto la solución direction:rtl en varios otros lugares), el único navegador importante que hace esto correctamente parece ser Firefox. Safari y Google Chrome tanto colocar los puntos suspensivos a la izquierda del texto, pero luego truncar a la derecha de todos modos, así:

... foobar foob

IE9 y Opera consiguen francamente confusa . IE trunca a la derecha Y hace que el texto se superponga a las elipsis. Opera, con mucho, el más creativo, hará que el desbordamiento sea visible en palabras individuales durante un tiempo (a medida que el elemento se estrecha), y luego comenzará a truncar la palabra más a la izquierda, pero desde la derecha. Tampoco puede representar la elipsis y, en un experimento que hice, incluso movió un carácter ™ completamente hacia la izquierda. De Verdad. Así que "foobar foobar foobar ™" se convierte en esto:

™ foob foobar

Como una nota adicional, una (muy molesto) posible opción para los navegadores WebKit podría ser el establecimiento de -webkit-rtl-ordering:visual, que trunca a la izquierda sino que también hace que literalmente los caracteres en orden inverso:

... boofraboof

Por lo tanto, mediante el navegador o algún tipo de característica oculta, se podría establecer teóricamente esa propiedad e invertir el texto del elemento dinámicamente.

¿Existe una solución simple para varios navegadores, o incluso una basada en JS compleja?

+0

He abierto un error en este tema http://crbug.com/155836. Tenga en cuenta que este problema solo parece ocurrir cuando se usa una lng langue. Chrome tiene los lenguajes rtl correctos. – Mbrevda

Respuesta

Cuestiones relacionadas