2012-09-23 18 views

Odpowiedz

14

Dodaj unicode-bidi: embed; do swojego CSS. Powinno załatwić sprawę - updated Fiddle

można znaleźć Wykorzystanie here

+1

dziękuję, myślałem, że wszystko wiem w css .... :-) – devmonster

+0

Nie ma za co. Jest kilka atrybutów, których często nie używasz :) –

+0

Kod jsfiddle ustawia 'direction' na' rtl'. Przypuszczam, że chciałeś napisać 'ltr'. –

7

Powodem direction: ltr nie umieścić znak minus na lewo od numeru jest to, że otaczające znaki to znaki od prawej do lewej, dzięki czemu „ neutralne "znaki takie jak cyfry i minus (lub łącznik) przyjmują tę kierunkowość. Numer direction property wpływa na układ pól pól i powiązanych zagadnień, a nie kierunek pisania tekstu.

Rozważmy następujący:

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

W pierwszym przypadku, na prawo od cyfry 9 pojawi się myślnik, zgodnie z kierunkiem pisania otaczającego tekstu. W drugim przypadku kolejność jest odwrotna, ponieważ otaczające znaki są łacińskimi literami, które mają wrodzoną kierunkowość od lewej do prawej.

Jest to podchwytliwy problem, a niektóre strony w języku hebrajskim wydają się wykorzystywać sztuczkę polegającą na wstawianiu łącznika po numerze w źródle HTML, więc po zastosowaniu pisania od prawej do lewej, łącznik pojawia się po lewej stronie liczby .

bardziej właściwe podejścia są:

  1. Zastosowanie unicode-bidi: bidi-override w CSS wraz z direction. Oznacza to, że nieodłączna kierunkowość jest ignorowana w treści i stosowana jest kolejność określona przez direction.
  2. Użyj unicode-bidi: embed w CSS, razem z direction. Tworzy to "wyspę kierunkowości", w której otaczający tekst nie wpływa na kierunkowość. Gdy zawartość elementu zawiera tylko "neutralne" znaki, wówczas właściwość direction ustawia kierunek tekstu.
  3. Użyj elementu <bdo> w kodzie HTML z atrybutem dir. To jest odpowiednik HTML metody 2, i lepiej w tym sensie, że nie chodzi tu o stylistyczne sugestie prezentacyjne (do czego służy CSS i robi to najlepiej), ale o poprawianie sytuacji, zajmowanie się podstawowymi problemami w kierunkowości.
  4. Użyj znaku od lewej do prawej i od prawej do lewej przed i za ciągiem. Mogą być reprezentowane w HTML odpowiednio jako &lrm; i &rlm;. To sprawia, że ​​ostatni znak przed ciągiem od lewej do prawej, powoduje, że jest wyświetlany od lewej do prawej, jeśli zawiera tylko "neutralne" znaki.

To była uproszczona prezentacja złożonego problemu. W każdym razie, prawdopodobnie najlepszą metodą jest użycie <bdo>.We wszystkich podejściach, ustawienie kierunkowości powinno być ograniczone do możliwie najmniejszej ciąg, takich jak na przykład -9:

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

znak używany jako znak minus powinny być naprawdę minus „-” Unicode U + 2212 ZNAK MINUS, reprezentowalny w HTML jako &minus;, ale to nie ma wpływu na kwestię kierunkowości.

+0

+1 dla obszernej odpowiedzi –

2

Oprócz odpowiedzi Henrika, chciałbym dodać znak kontrolny LRM przed znakiem minus tak:

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

ten sposób znak minus zostaje umieszczony przed 9 (co jest chyba to, co chcesz)

Ten microsoft doc objaśnia znak kontrolny LRM wraz z innymi znakami kontrolnymi.

Powiązane problemy