2

HTML で 2 つの数値をフォーマットする必要があります。左から右のテキストに埋め込まれている場合もあれば、右から左のテキストに埋め込まれている場合もあります。

左から右へのモードでは、数値を 12 34として表示し、右から左へのモードでは34 12 を表示します。

私はこのHTMLコードを試します:

<p style="direction: rtl;">12&#x200b;<sup>34</sup></p>
<p style="direction: ltr;">12&#x200b;<sup>34</sup></p>

(&#x200b;は幅ゼロのスペースです。)

Internet Explorer 9 では、まさに私が望んでいたものが得られます。しかし、Firefox 19 と Chrome 24 では、どちらの場合も 12 34を取得します (ただし、ブラウザーはテキストを右に正しく配置します)。

どのブラウザが正常に動作しますか? すべてのブラウザーで Internet Explorer の動作を実現するにはどうすればよいですか?

4

3 に答える 3

2

U + 200B ZEROWIDTHSPACEにはBidiClassBN(Boundary Neutral)があるため、IEはここでは間違っているようです。これは、Unicode bidiアルゴリズムでは、アルゴリズムで無視されることを意味します。そして、一般的な数字の文字列が左から右にレンダリングされます。

代わりにU+200A HAIR SPACEを使用すると、これが修正されます(BidiクラスはWS、Whitespaceです)が、少し余分なスペースを作成する効果があり、IE6などの一部の非常に古いブラウザーではボックスとして表示される場合があります。それを使用して、あなたは書くでしょう

<p style="direction: rtl;">12&#x200a;<sup>34</sup></p>    
<p style="direction: ltr;">12&#x200a;<sup>34</sup></p>
于 2013-02-22T11:24:56.267 に答える
0

もう 1 つの解決策は、実際に両方のバージョンを表示し、CSS スタイルを使用して正しいバージョンを表示することです。

<sup class="rightLeft">34</sup>12<sup class="leftRight">34</sup>

...次に、さまざまなスタイルシートで CSS を次のように設定します。

スタイル シート 1 - 左から右への形式:

.rightLeft {display: none;}

スタイル シート 2 - 右から左への形式:

.leftRight {display: none;}
于 2013-02-22T09:58:05.613 に答える
0

<span>考えられる解決策は、各桁をタグでラップすることです。それはかなり安全です。

おそらく、javascript/jQuery 関数をプログラムして<p>、特定のクラスのタグを反復処理し、タグ内の各数字をラップして、 > 数字<span>に適切なスタイルを与えることができます。<sup

于 2013-02-22T09:53:26.627 に答える