博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
getClientRects方法返回的TextRectangle对象
阅读量:5866 次
发布时间:2019-06-19

本文共 1149 字,大约阅读时间需要 3 分钟。

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)
}
查看demo:

getClientRects和getBoundingClientRect差异

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

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

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

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

getBoundingClientRect 返回 一个TextRectangle对象。

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

转载地址:http://cunnx.baihongyu.com/

你可能感兴趣的文章
详解Microsoft.AspNetCore.CookiePolicy
查看>>
SCDPM2012 R2实战一:基于SQL 2008 R2集群的SCDPM2012 R2的安装
查看>>
SQL SERVER中字段类型与C#数据类型的对应关系
查看>>
Linux lsof命令详解
查看>>
SVG path
查看>>
js判断checkbox是否选中
查看>>
多系统盘挂载
查看>>
MySQL函数怎么加锁_MYSQL 函数调用导致自动生成共享锁问题
查看>>
MR1和MR2的工作原理
查看>>
Eclipse中修改代码格式
查看>>
GRUB Legacy
查看>>
关于 error: LINK1123: failure during conversion to COFF: file invalid or corrupt 错误的解决方案...
查看>>
hexo博客解决不蒜子统计无法显示问题
查看>>
python实现链表
查看>>
java查找string1和string2是不是含有相同的字母种类和数量(string1是否是string2的重新组合)...
查看>>
Android TabActivity使用方法
查看>>
Eclipse的 window-->preferences里面没有Android选项
查看>>
《麦田里的守望者》--[美]杰罗姆·大卫·塞林格
查看>>
遇到的那些坑
查看>>
央行下属的上海资信网络金融征信系统(NFCS)签约机构数量突破800家
查看>>