だから私はelem.style.widthを読んでいて、「3.1415926ex」のようなものを取得しています。
これを「px」に変換したいと思います。
JavaScriptにはこれを行うための関数が組み込まれていますか?文字列の最後の2文字を切り取り、それを数値として読み取り、それに魔法の定数を掛けることをお勧めします。
ありがとう!
だから私はelem.style.widthを読んでいて、「3.1415926ex」のようなものを取得しています。
これを「px」に変換したいと思います。
JavaScriptにはこれを行うための関数が組み込まれていますか?文字列の最後の2文字を切り取り、それを数値として読み取り、それに魔法の定数を掛けることをお勧めします。
ありがとう!
ex
からへの直接的な変換がないため、「魔法の定数」はありませんpx
(たとえば、インチからセンチメートルへの変換とは異なります)。
単位は、現在のフォントの小文字の「x」文字のex
高さです(「フォント」は、書体ファミリ(Times New Romanなど)、サイズ(14pxまたは72ptなど)、およびスタイル(通常、太字)の組み合わせです。 、イタリック))。
...したがって、72ptImpactBoldの「1ex」は8ptHelveticaRegularの「1ex」よりも大きくなります。
これらの詳細を知っていれば、からex
への変換を行うことができます。px
もちろん、常にピクセル単位の「計算されたスタイル」が本当に必要なようです。これを読んでください:計算されたスタイルを取得するにはどうすればよいですか?
この目的のための組み込み関数はありません。変数 を使用して JavaScript でアクセス可能な要素を指定するとelem
、式 を使用して、整数に丸められたピクセル単位の幅を取得できますelem.clientWidth
。ブラウザーによって精度が異なり、丸められていないものとして取得するには、原則としてelem.getBoundingClientRect().width
代わりに使用できますが、実際には、多くのブラウザーで丸められた結果または不正確な結果が得られます。– これは、要素の水平パディングがゼロの場合に適用されます。
たとえば、要素の幅を設定してから上記を適用すると、ピクセル単位1ex
の値を示す整数または実数が得られます。ex
しかし、これは魔法の定数ではありません。フォント ファミリとフォント サイズに依存します。
注: IE 7 などの一部の古いブラウザーでは、フォントの x-height を適切に使用する代わりにex
、単位を単位の半分として誤って実装しています。em