有没有一种方法可以获取文本节点的边界矩形?
getBoundingClientRect()方法仅定义在元素上,且父元素比实际文本节点要大。
有没有一种方法可以获取文本节点的边界矩形?
getBoundingClientRect()方法仅定义在元素上,且父元素比实际文本节点要大。
Range
来选择文本节点,然后直接从Range
中获取边界矩形。示例(应该在此页面中正常工作):
var text = document.querySelector('#question-header .question-hyperlink').childNodes[0];
var range = document.createRange();
range.selectNode(text);
var rect = range.getBoundingClientRect();
range.detach(); // frees up memory in older browsers
如果您要在多个文本节点上执行此操作,还可以重复使用Range
对象;只需确保在完成操作之前不要调用range.detach()
即可。 (注意:尽管某些旧版浏览器仍会禁用范围的使用,但是Range.detach()
现在在DOM标准中已成为无操作。)
将文本节点包装在<span>
中,获取该的boundingRect
。
var span = document.createElement('span');
textNode.parentNode.insertBefore(span, textNode);
span.appendChild(textNode);
var rect = span.getBoundingClientRect();
document.implementation.hasFeature('Range', '2.0');
- NoyotextNode
的高度,而不是文本的高度,两者可能有很大的不同。我知道楼主特别要求的是这个,但只是为了不让新手感到困惑而已 :-) - undefined