getClientRects方法返回的TextRectangle对象

W3C提供了一个文本的TextRectangle 对象,这个对象是对文本区域的一个解释。这里的文本区域只针对inline 元素,比如:a, span, em这类标签元素,例如这样的一个页面表现:

 

id为temp中有个span元素,那么我们可以通过getClientRects方法取得这样3个TextRectangle对象(红框):
TextRectangle的组成为键值对,主要有包括:
{
top : (number)
bottom : (number)
left : (number)
right : (number)
width : (number)
height : (number)
}

getClientRects和getBoundingClientRect差异
getClientRects返回的其实是个数组,数组中有很多个类似getBoundingClientRect返回的对象。getBoundingClientRect返回的永远是最外框框的那个矩形区域相关的坐标偏移对象;而getClientRects是多行文字区域的坐标偏移集合,在非IE浏览器下,只对inline的标签有反应。

一般getBoundingClientRect方法用的多一点。我们可以很容易获取某个元素的偏移值。甚至高宽都能很轻松的计算出来。所以,下载你想用js获取元素的高宽尺寸,就可以试试getBoundingClientRect方法了。

对getClientRects和getBoundingClientRect可以得到一个更好的说明.

getClientRects 返回一个TextRectangle集合,就是TextRectangleList对象。
getBoundingClientRect 返回 一个TextRectangle对象。

那么这个TextRectangle对象有什么用呢,用来开判断文本是否换行!或者说用来获取矩形区域相关的坐标偏移对象!
前端时间一直在做一个项目,有个功能类似新浪微博的用户信息卡:
当鼠标移到“@搜道网成都”时出现用户信息卡,当然这里的“@搜道网成都”是换行的,不换行的情况下,我们可以通过元素的偏移位置获取用户信息卡的位置,但是如果当行inline 素换行的时候他的盒子模型不在取决于他本身,而是取决于他的父级块元素:如图:
红框是换行的“@搜道网成都”的盒子模型,蓝框不换行的是“@搜道网南京美女时钟”的盒子模型:
类似类似新浪微博的用户信息卡的功能我们可以通过TextRectangle来实现,
TextRectangle数组的长度可知道文字是否换行,甚至是换了几行,
TextRectangle的几个属性和鼠标位置比较可以知道鼠标在哪一行上
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值