2012-09-23 10 views

Respuesta

14

Agregue unicode-bidi: embed; a su CSS. Debe hacer el truco - updated Fiddle

puede encontrar el uso here

+1

de agradecimiento, yo creía que sabía todo en css .... :-) – devmonster

+0

de qué. Hay algunos atributos que no puede usar tan a menudo :) –

+0

El código jsfiddle establece 'direction' en' rtl'. Supongo que querías escribir 'ltr'. –

7

La razón por la direction: ltr no pone el signo menos a la izquierda de un número es que los personajes que rodean son caracteres de derecha a izquierda, por lo que “ los caracteres neutros "como dígitos y menos (o guión) toman esa direccionalidad. El direction property afecta a la dirección de diseño de cuadros y problemas relacionados, no a la dirección de escritura del texto.

considerar lo siguiente:

<p>א <label id="ProfitShk" class="labelVal">-9 ₪</label> ת 
<p>a <label id="ProfitShk" class="labelVal">-9 ₪</label> b 

En el primer caso, aparece el guión a la derecha del dígito 9, siguiendo la dirección de escritura del texto circundante. En el segundo caso, el orden es opuesto, porque los caracteres que lo rodean son letras latinas, que tienen una direccionalidad inherente de izquierda a derecha.

Esto es un problema complicado, y algunas páginas en hebreo parecen usar el truco de poner el guión después del número en la fuente HTML, de modo que cuando se aplica la escritura de derecha a izquierda, el guión aparece a la izquierda del número .

enfoques más adecuados son:

  1. unicode-bidi: bidi-override uso de CSS, junto con direction. Significa que la direccionalidad inherente se ignora dentro del contenido y se aplica el orden especificado por direction.
  2. Use unicode-bidi: embed en CSS, junto con direction. Esto crea una "isla de direccionalidad" dentro de la cual el texto circundante no afecta la direccionalidad. Cuando el contenido del elemento solo contiene caracteres "neutrales", la propiedad direction establece la dirección del texto.
  3. Use <bdo> elemento en HTML, con el atributo dir. Esta es la contraparte HTML del método 2, y mejor en el sentido de que no se trata de sugerencias estilísticas de presentación (que es para lo que CSS es y lo hace mejor) sino de hacer las cosas bien, lidiando con algunos problemas básicos de direccionalidad.
  4. Utilice la marca de izquierda a derecha y de derecha a izquierda antes y después de la cadena. Se pueden representar en HTML como &lrm; y &rlm;, respectivamente. Esto hace que el último carácter antes de la cadena sea una marca de izquierda a derecha, haciendo que se muestre de izquierda a derecha, si contiene solo caracteres "neutrales".

Esta fue una presentación simplificada de un problema complejo. De todos modos, usar <bdo> es probablemente el mejor enfoque.En todos los enfoques, el ajuste de la direccionalidad debe limitarse a la cadena más pequeña posible, como en el ejemplo -9:

<p>א <label id="ProfitShk" class="labelVal"><bdo dir="ltr">-9</bdo> ₪</label> ת 

El carácter utilizado como signo de menos realmente debería ser la menos Unicode “-” U + 2212 MINUS SIGN, representable en HTML como &minus;, pero esto no afecta el problema de direccionalidad.

+0

+1 para una respuesta exhaustiva –

2

Además de la respuesta de Henrik, me gustaría añadir un carácter de control LRM antes del signo menos, así:

<label id="ProfitShk" class="labelVal">&lrm;-9 ₪</label>​​​​​​​​​​​​​​​​​​​​​​ 

De esta manera el signo menos se coloca antes de la 9 (que es probablemente lo que quiere)

Este microsoft doc explica el carácter de control LRM junto con otros caracteres de control.

Cuestiones relacionadas