12

rtlHTMLページに負の数を表示しようとしています。

ラベルが私の反応しないようですdirection: ltr

反対のシナリオを表示するためにjsFiddleを作成しました(右から左に表示しようとしています)。

4

3 に答える 3

14

unicode-bidi: embed;CSSに追加します。トリックを行う必要があります-更新されたフィドル

ここで使用法を見つけることができます

于 2012-09-23T13:42:48.190 に答える
7

direction: ltr数字の左側にマイナス記号を付けない理由は、周囲の文字が右から左の文字であり、数字やマイナス(またはハイフン)などの「ニュートラル」文字がその方向性をとるようにするためです。このdirectionプロパティは、テキストの書き込み方向ではなく、ボックスのレイアウト方向と関連する問題に影響します。

次のことを考慮してください。

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

最初のケースでは、ハイフンは数字9の右側に表示され、周囲のテキストの書き込み方向に従います。2番目のケースでは、周囲の文字がラテン文字であり、固有の左から右への方向性があるため、順序が逆になります。

これはトリッキーな問題であり、ヘブライ語の一部のページでは、HTMLソースの数字の後にハイフンを付けるというトリックを使用しているようです。そのため、右から左への書き込みを適用すると、数字の左側にハイフンが表示されます。

より適切なアプローチは次のとおりです。

  1. unicode-bidi: bidi-overrideCSSで。と一緒に使用しdirectionます。これは、コンテンツ内で固有の方向性が無視され、で指定された順序directionが適用されることを意味します。
  2. unicode-bidi: embedCSSで。と一緒に使用しdirectionます。これにより、周囲のテキストが方向性に影響を与えない「方向性の島」が作成されます。要素のコンテンツに「ニュートラル」文字のみが含まれている場合、directionプロパティはテキストの方向を設定します。
  3. 属性を使用<bdo>して、HTMLの要素を使用しdirます。これは方法2のHTML版であり、これは文体的な表現の提案(CSSの目的であり、最も効果的です)ではなく、方向性のいくつかの基本的な問題に対処することに関するものであるという意味で優れています。
  4. 文字列の前後に左から右および右から左のマークを使用します。これらは、HTMLでそれぞれ&lrm;およびとして表すことができます&rlm;。これにより、文字列の前の最後の文字が左から右のマークになり、「ニュートラル」文字のみが含まれている場合は、左から右に表示されます。

これは、複雑な問題の簡略化されたプレゼンテーションでした。とにかく、使用すること<bdo>がおそらく最良のアプローチです。すべてのアプローチで、方向性の設定は、例の-9など、可能な限り最小の文字列に制限する必要があります。

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

マイナス記号として使用される文字は、実際にはUnicodeマイナス「-」U + 2212マイナス記号である必要があり、HTMLではとして表現できます&minus;が、これは方向性の問題には影響しません。

于 2012-09-23T20:12:33.860 に答える
2

ヘンリックの答えに加えて、マイナス記号の前にLRM制御文字を次のように追加します。

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

このようにして、マイナス記号が9の前に配置されます(これはおそらくあなたが望むものです)

このMicrosoftドキュメントでは、LRM制御文字と他の制御文字について説明しています。

于 2012-09-23T23:17:25.330 に答える