转自:http://www.pjhome.net/article/Javascript/928.htm
TextRectangle
对于文本对象,W3C提供了一个 TextRectangle 对象,这个对象是对文本区域的一个解释。
看下图(截图来源ppk):
一行连续的文本
我们可以获取到里面的5行文字,红色框就是TextRectangle这个抽象的对象.
TextRectangle对象包含了, top left bottom left四个属性,这四个属性都是对应可视区域viewport的
理解TextRectangle后,对getClientRects和getBoundingClientRect可以得到一个更好的说明.
getClientRects 返回一个TextRectangle集合,就是TextRectangleList对象。
getBoundingClientRect 返回 一个TextRectangle对象。
getBoundingClientRect取得到的位置只是该对象相对于窗体中可视区域的位置,并不包含在页面滚动中位置。
浏览器差异:
除了safari,firefox2.0外所有浏览器都支持getClientRects和getBoundingClientRect,
firefox 3.1给TextRectangle增加了 width 和 height。
ie 和非ie浏览器在使用getClientRects还是有些差别的,ie获取TextRectangleList的范围很大。而非ie获取的范围比较小, 只有display:inline的对象才能获取到TextRectangleList,例如em i span 等标签。
使用场景:
现 在用得最多的是getBoundingClientRect,这个直接返回一个TextRectangle,其实大家经常使用它来获取到一个 element的viewport坐标.其实就算dom里面没有文本也能返回一个 TextRectangle. 这样就不需要向上遍历来计算对象的相对坐标了。
分享到:
相关推荐
主要介绍getBoundingClientRect的基本属性,以及具体的使用场景和一些需要注意的问题。 getBoundingClientRect Element.getBoundingClientRect() 含义: 方法返回元素的大小及其相对于视口的位置。 值: 返回值...
项目中遇到图片实际显示尺寸的判定问题,图片可能被缩放过,所以实际显示的宽高无法通过常见的各种width,height拿到(都是得到图像的自然宽度或者...getClientRects 和 getBoundingClientRect 的区别 getClientRects 返回
而`getBoundingClientRect`方法则能更稳定地获取元素在视口中的精确位置和大小,如示例代码所示,可以输出一个包含`top`、`right`、`bottom`、`left`、`width`和`height`的对象,从而了解元素在屏幕上的具体位置。...
`getBoundingClientRect`返回的坐标是相对于视口的,所以为了得到相对于文档的坐标,需要减去`docElement.clientTop`和`docElement.clientLeft`,这两个属性分别代表了视口顶部和左侧与文档的偏移。 总结来说,这两...
- `getClientRects()`和`getBoundingClientRect()`:获取Range的几何信息,用于定位和渲染。 在实际开发中,理解和熟练运用这些方法可以帮助开发者更好地操纵文档中的文本选择,实现各种复杂的富文本编辑功能。同时...
1. **获取初始位置**:通过 `getClientRects()` 方法获取表格元素的位置坐标。 2. **根据预设值或默认值创建图像元素**: - 如果存在预设值(如 `__Gantt` 的值),则根据这些值创建图像元素,并设置它们的起始位置...
为了确保在不同浏览器和设备上的兼容性,我们可能需要使用 jQuery 的 `$.fn.scroll` 替换原生的 `window.onscroll` 事件,并考虑使用 `$.fn.offset()` 的替代方法,如 `$.fn.position()` 或 `$.fn.getClientRects()`...
在编程环境中,用户经常需要使用Tab键进行代码的缩进,以便于代码的格式化和可读性。然而,HTML的textarea元素默认并不支持按下Tab键时自动缩进的功能,而是将焦点切换到下一个表单元素。为了解决这个问题,我们可以...