Próbuję wyświetlić liczbę ujemną na stronie HTML rtl.Kierunek ltr na stronie HTML rtl
Etykieta nie wydaje się, aby odpowiedzieć na moje direction: ltr
Napisałem jsFiddle wyświetlać odwrotny scenariusz (stara się wyświetlać od prawej do lewej).
Próbuję wyświetlić liczbę ujemną na stronie HTML rtl.Kierunek ltr na stronie HTML rtl
Etykieta nie wydaje się, aby odpowiedzieć na moje direction: ltr
Napisałem jsFiddle wyświetlać odwrotny scenariusz (stara się wyświetlać od prawej do lewej).
Dodaj unicode-bidi: embed;
do swojego CSS. Powinno załatwić sprawę - updated Fiddle
można znaleźć Wykorzystanie here
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ą:
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
.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.<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.‎
i ‏
. 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 −
, ale to nie ma wpływu na kwestię kierunkowości.
+1 dla obszernej odpowiedzi –
Oprócz odpowiedzi Henrika, chciałbym dodać znak kontrolny LRM przed znakiem minus tak:
<label id="ProfitShk" class="labelVal">‎-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.
dziękuję, myślałem, że wszystko wiem w css .... :-) – devmonster
Nie ma za co. Jest kilka atrybutów, których często nie używasz :) –
Kod jsfiddle ustawia 'direction' na' rtl'. Przypuszczam, że chciałeś napisać 'ltr'. –