テキスト ノードの幾何学的位置 (つまり、親要素、ページなどからの上/左オフセット) を取得することは可能ですか?
6 に答える
直接ではありません。TextNode には、ビューポート上の位置を測定するための元の IE オフセット* (および同様の) 拡張機能がありません。
IE でのみ、TextRange オブジェクトを作成し、苦労してそれを TextNode の境界に合わせようとし、TextRange の boundingLeft/boundingTop を測定して、親要素の位置に追加することができます (通常の方法で取得)。 . ただし、これは不安定な可能性のある単一ブラウザー ソリューションの一連の作業です。
回避できる可能性のある別のアプローチは、テキストをスパン要素でラップし(ドキュメント内、またはスクリプトによって動的および/または一時的に)、スパンを使用して位置を測定することです。位置に影響を与える可能性のあるスタイル。ただし、ラップされたスパンでは期待される右/下の値が得られない場合があることに注意してください。何をしたいかによっては、最初と最後の文字をラップしたり、その他の配置をしたりすることになるかもしれません。
要約すると、うーん、何も良いことはありません。
これを行うための組み込みのクロスブラウザーの方法はありません。私はディメンション プラグインで jQuery を使用します: http://brandonaaron.net/docs/dimensions/
これはクロスブラウザであり、高さ、幅、x & y オフセットなどを提供します。
この記事をご覧ください。offsetParentプロパティを使用して再帰的にオフセットを計算します。
このようなブラウザごとに異なるものについては、独自のメソッドをローリングするよりも jquery を常にお勧めします。jquery CSS 関数には、必要なメソッドがあるようです!