テキストノードの境界矩形を取得する方法はありますか?テキストノードのgetBoundingClientRect()と同等の機能はありますか?
getBoundingClientRect()メソッドは要素にのみ定義され、親要素は実際のテキストノードよりも大きくなります。
テキストノードの境界矩形を取得する方法はありますか?テキストノードのgetBoundingClientRect()と同等の機能はありますか?
getBoundingClientRect()メソッドは要素にのみ定義され、親要素は実際のテキストノードよりも大きくなります。
<span>
にテキストノードをラップすると、そのスパンのboundingRect
が得られます。あなたはIE8歳以上をサポートする必要がない場合
var span = document.createElement('span');
textNode.parentNode.insertBefore(span, textNode);
span.appendChild(textNode);
var rect = span.getBoundingClientRect();
、あなたはselect the text nodeにRange
を使用して、Range
から直接、境界矩形を取得することができます。
例(このページでは動作するはずです):
var text = document.getElementById('nav-questions').childNodes[0];
var range = document.createRange();
range.selectNode(text);
var rect = range.getBoundingClientRect();
range.detach(); // frees up memory in older browsers
あなたが複数のテキスト・ノードのためにこれをやっている場合にもRange
オブジェクトを再利用することができます。完了するまでrange.detach()
に電話しないようにしてください。 (Note:Range.detach()
は現在the DOM standardのno-opになっていますが、古いブラウザでは呼び出し後も範囲の使用が無効になります)
これがナビゲータで動作するかどうかをテストするには 'document.implementation.hasFeature '、' 2.0 '); ' – Noyo