vue 获取元素在浏览器的位置_前端开发JS获取页面元素的位置

1.网页的大小和浏览器窗口的大小

一张网页的全部面积,就是它的大小。通常情况下,网页的大小由内容和

document元素的clientHeight和clientWidth属性,就代表了网页的大小。

function getViewport(){

if (document.compatMode == “BackCompat”){

return {

width: document.body.clientWidth,

height: document.body.clientHeight

}

} else {

return {

width: document.documentElement.clientWidth,

height: document.documentElement.clientHeight

}

}

}

上面的getViewport函数就可以返回浏览器窗口的高和宽。使用的时候,有三个地方需要注意:

1)这个函数必须在页面加载完成后才能运行,否则document对象还没生成,浏览器会报错。

2)大多数情况下,都是document.documentElement.clientWidth返回正确值。但是,在IE6的quirks模式中,document.body.clientWidth返回正确的值,因此函数中加入了对文档模式的判断。

3)clientWidth和clientHeight都是只读属性,不能对它们赋值。

3.获取网页大小的另一种方法

网页上的每个元素还有scrollHeight和scrollWidth属性,指包含滚动条在内的该元素的视觉面积。

那么,document对象的scrollHeight和scrollWidth属性就是网页的大小,意思就是滚动条滚过的所有长度和宽度。

仿照getViewport()函数,可以写出getPagearea()函数。

function getPagearea(){

if (document.compatMode == “BackCompat”){

return {

width: document.body.scrollWidth,

height: document.body.scrollHeight

}

} else {

return {

width: document.documentElement.scrollWidth,

height: document.documentElement.scrollHeight

}

}

}

这个函数有一个问题。如果网页内容能够在浏览器窗口中全部显示,不出现滚动条,那么网页的clientWidth和scrollWidth应该相等。但是实际上,不同浏览器有不同的处理,这两个值未必相等。所以,我们需要取它们之中较大的那个值,因此要对getPagearea()函数进行改写。

function getPagearea(){

if (document.compatMode == “BackCompat”){

return {

width: Math.max(document.body.scrollWidth,

document.body.clientWidth),

height: Math.max(document.body.scrollHeight,

document.body.clientHeight)

}

} else {

return {

width: Math.max(document.documentElement.scrollWidth,

document.documentElement.clientWidth),

height: Math.max(document.documentElement.scrollHeight,

document.documentElement.clientHeight)

}

}

}

4.获取网页元素的绝对位置

网页元素的绝对位置,指该元素的左上角相对于整张网页左上角的坐标。这个绝对位置要通过计算才能得到。

首先,每个元素都有offsetTop和offsetLeft属性,表示该元素的左上角与父容器(offsetParent对象)左上角的距离。所以,只需要将这两个值进行累加,就可以得到该元素的绝对坐标。

5.获取网页元素的相对位置

网页元素的相对位置,指该元素左上角相对于浏览器窗口左上角的坐标。

有了绝对位置以后,获得相对位置就很容易了,只要将绝对坐标减去页面的滚动条滚动的距离就可以了。滚动条滚动的垂直距离,是document对象的scrollTop属性;滚动条滚动的水平距离是document对象的scrollLeft属性。

scrollTop和scrollLeft属性是可以赋值的,并且会立即自动滚动网页到相应位置,因此可以利用它们改变网页元素的相对位置。另外,element.scrollIntoView()方法也有类似作用,可以使网页元素出现在浏览器窗口的左上角。

6.获取元素位置的快速方法

除了上面的函数以外,还有一种快速方法,可以立刻获得网页元素的位置。

那就是使用getBoundingClientRect()方法。它返回一个对象,其中包含了left、right、top、bottom四个属性,分别对应了该元素的左上角和右下角相对于浏览器窗口(viewport)左上角的距离。

所以,网页元素的相对位置就是

var X= this.getBoundingClientRect().left;

var Y =this.getBoundingClientRect().top;

再加上滚动距离,就可以得到绝对位置

var X= this.getBoundingClientRect().left+document.documentElement.scrollLeft;

var Y =this.getBoundingClientRect().top+document.documentElement.scrollTop;

目前,IE、Firefox 3.0+、Opera 9.5+都支持该方法,而Firefox 2.x、Safari、Chrome、Konqueror不支持。

java前端开发和后端开发都有哪些|前端开发跟java比那个更好|

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/244161.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 发送邮件不显示附件_python3发送邮件(无附件)

python3发送邮件代码:import smtplibfrom email.mime.text import MIMETextfrom email.utils import formatdate#设置服务器所需信息#163邮箱服务器地址mail_host smtp.163.com#163用户名mail_user h*****163.com#密码mail_pass h****password#邮件发送方邮箱地址…

小说是读者的艺术

小说的处境到了今天这个份上,该让我们的编辑和作家有点悔悟了,那就是光靠玩技巧和语言以及所有的花活唬不了读者,更救不了小说本身。我们知道一种艺术形式的存在很大程度上依赖于它的接受者的存在,所谓皮之不在,毛将存…

stright 在mysql_MySQL优化的奇技淫巧之STRAIGHT_JOIN

最近没怎么搞SQL优化,碰巧数据库被慢查询搞挂了,于是拿来练练手。问题通过「SHOW FULL PROCESSLIST」语句很容易就能查到问题SQL,如下:SELECT post.*FROM postINNER JOIN post_tag ON post.id post_tag.post_idWHERE post.status…

小说不“好看”,读者就给你“好看”

小说的病变和无可救药的衰竭是因为小说不好看 □主 持 人:兴 安 青年作家:丁 天 邱华栋 陆 涛 古清生 小说是什么?是“街谈巷议”———这是我们的老祖宗概括的,就是说它生于民间,是给更多的人看的&#x…

狗肉朋友

想想几年的圣诞聚会,朋友、哥们、同事、陌生人,每一年人走马灯似的变换,有的早在记忆中消失,如过眼烟云.而一直能保留下来的就那么几个朋友。 随着年龄的增长,自己在交往中纳新的能力和兴致越来越低,朋友的圈子越来越小,过去的那种结交天下豪杰的扩张心理没有了,守住故交,守住最…

mysql json坑_使用mysql innodb 使用5.7的json类型遇到的坑和解决办法

----------------------------------------------#查询JSON的某个字段select data -> ‘$.Host‘ from temp#创建虚拟列ALTER TABLE temp ADD host varchar(128) GENERATED ALWAYS AS (json_extract(data,‘$.Host‘)) VIRTUAL;#给虚拟列创建索引ALTER TABLE temp ADD INDEX…

恐怖小说之王——斯蒂芬·金 (转贴)

《宠物公墓》改编自斯蒂芬金的同名小说,在所有斯蒂芬金的恐怖小说里,恐怕就属这一部是最吓人的了。但斯蒂芬金的原著由于篇幅过长,难免有拖沓之感,当被改编成电影时,斯蒂芬金非常有效地压缩了与恐怖无关的枝节&#xf…

买了几张好碟

最喜欢的是《塔尔可夫斯基的全集》。以前有他零散的,几乎全了,可是看到整套的,包装又漂亮,声音又进化了5.1声道,确实没有理由不收啊。 《天下无贼》(正版),《狂蟒之灾2》…

mysql unix_timestamp 格式化_FROM_UNIXTIME 格式化MYSQL时间戳函数_MySQL

unix时间戳bitsCN.com函数:FROM_UNIXTIME作用:将MYSQL中以INT(11)存储的时间以”YYYY-MM-DD”格式来显示。语法:FROM_UNIXTIME(unix_timestamp,format)返回表示 Unix 时间标记的一个字符串,根据format字符串格式化。format可以包含…

酒喝高了,歌听多了

我常常忘记自己是蒙古人。昨天去了达尔汗蒙古风情餐吧,参加了蒙古的同乡会。AA制。好久没有参加这样的活动了,见到了些老面孔,大多是新面孔。有的胖了,有的老了,有的单身了,有的成双了,有的叫不…

抚摸斯蒂芬·金 (图)

<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />最近翻到一本美国恐怖小说大师斯蒂芬金的自传《抚摸恐怖——我的创作生涯》&#xff0c;珠海出版社2002年5月出版。书中披露了斯蒂芬金很多不为人知的写作经历以及对恐怖小说的看…

mysql设置定位慢查询_mysql优化——定位慢查询

1.定位慢查询1、show status 命令命令使用方式&#xff1a;show [session|global] status like slow_queries如果你不写 [session|global] 默认是session 会话&#xff0c;指取出当前窗口的执行&#xff0c;如果你想看所有(从mysql 启动到现在&#xff0c;则应该 global)执行s…

当我们年轻的时候 (转贴)

当我们年轻的时候 徐坤/文 这是一张十年前的照片。1996 年底&#xff0c;《小说月报》第7届百花奖发奖会在天津蓟县举行。获奖作者与编辑一应到达。左起&#xff1a;徐坤&#xff0c;刘醒龙&#xff0c;毕飞宇&#xff0c;李师东&#xff0c;李敬泽&#xff0c;兴安。 时值隆…

python 对象的异或运算符_python的运算符

算数运算符算数运算符主要用作于计算机的算数运算种类符号作用加法、字符串的拼接-减法*乘法、字符串的重复/除法//地板除(除法)%取余(除法)**幂运算# 数字类型的加法运算print(1 1) # 2print(False 1) # 1print(0j 1) # (10j)# 字…

希望我不会“伤心至死”

刚收到鬼古女的最新小说《伤心至死——万劫》。这好象是他的第三部长篇&#xff0c;上海人民出版社出版2005年10月出版。也是他《伤心至死》悬疑系列的第一部。我和鬼古女只在网上有过交流&#xff0c;据说这是一对旅居美国的神秘夫妇的笔名。我喜欢他的小说&#xff0c;曾写过…

同盟与对抗:谈《少女杜拉的故事》中的治疗关系(转)

《少女杜拉的故事》是弗洛伊德众多精神分析实例报告中最具代表性的一例。它记叙了弗洛伊德对杜拉神经症的治疗过程&#xff0c;从中我们可以了解到弗洛伊德精神分析学说的理论及运用。杜拉是一个18岁的女孩&#xff0c;她由于反复咳嗽、声嘶、呼吸困难而来就诊&#xff0c;弗洛…

圣诞是我们这样过的,美女如云 (图)

圣诞是这样子过的&#xff0c;美女如云&#xff0c;只可惜靓崽忒少&#xff0c;唉&#xff0c;美女少了没劲&#xff0c;美女多了呢也麻烦&#xff0c;况且还有藏族美女给敬酒唱歌。地点是在中华民族园边上的茶马驿站&#xff0c;吃的是“马帮菜”&#xff0c;知道什么是“马帮…

java对象复制_Java对象的复制三种方式

Java对象的复制三种方式概述在实际编程过程中&#xff0c;我们常常要遇到这种情况&#xff1a;有一个对象A&#xff0c;在某一时刻A中已经包含了一些有效值&#xff0c;此时可能 会需要一个和A完全相同新对象B&#xff0c;并且此后对B任何改动都不会影响到A中的值&#xff0c;也…

新年快乐

同时两个朋友发来的&#xff0c;打开了还挺有意思。在新年到来的最后一天&#xff0c;收到这个小小的礼物还是很高兴&#xff0c;说明人家还记得你&#xff0c;常说君子之交淡如水&#xff0c;水其实我们不缺&#xff0c;我们往往缺的就是一句小小的问候&#xff0c;并且在一个…

看徐坤的话剧《性情男女》

昨晚应邀去看了徐坤的话剧《性情男女》&#xff0c;说实在话好的超乎了我的想象。这几年话剧多被国外经典剧目或者历史剧或者老剧目统治&#xff0c;现实题材的话剧少之又少&#xff0c;而我想看的更几乎为零。所以这个剧确实应该让我拍手。我们这些饱经沧桑的人、老油条或者麻…