1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > js获取元素相对窗口位置的实现代码【javascript】

js获取元素相对窗口位置的实现代码【javascript】

时间:2018-07-03 23:12:55

相关推荐

js获取元素相对窗口位置的实现代码【javascript】

web前端|js教程

元素,相对窗口,位置

web前端-js教程

JS获取元素的offsetTop,offsetLeft等属性

小视频asp源码,vscode代码分行整理,ubuntu拼音哪个,在电脑上装tomcat,sqlite3数据传输,学人工智能要不要学爬虫,php vip视频,SEO网站流量优化建议,宠物店网站模板,织梦免费模板lzw

obj.clientWidth //获取元素的宽度

微信挖宝源码,vscode自动代码补全,ubuntu .tar,tomcat如何部署项目,sqlite 时间段查询,昆明网页设计制作公司,phpmyadmin无法创建数据库,服务器合租是什么,ecshop图片延时加载免费插件.rar,django适合什么前端框架,爬虫药种类,php下拉列表,周口seo优化,简述springboot,span标签改变字体颜色,zdcredit网站 后台 管理登陆系统,网页图片放大代码,dz3.2论坛手机模板,帝国后台栏目,discuz 帖子页面文件,宁志中小学校网站管理系统,dj音乐网站程序lzw

obj.clientHeight //元素的高度

obj.offsetLeft //元素相对于父元素的left

obj.offsetTop //元素相对于父元素的top

obj.offsetWidth //元素的宽度

obj.offsetHeight //元素的高度

仿励志一生源码,卸载vscode文件夹在哪,ubuntu内网地址,tomcat故障排查命令,java文件爬虫,php 每月1号,天门外包seo推广哪里好lzw

区别:

clientWidth = width + padding

clientHeight = height + padding

offsetWidth = width + padding + border

offsetHeight = width + padding + border

offset比client多了border的宽度

//获取元素的纵坐标(相对于窗口)function getTop(e){ var offset=e.offsetTop; if(e.offsetParent!=null) offset+=getTop(e.offsetParent); return offset;}//获取元素的横坐标(相对于窗口)function getLeft(e){ var offset=e.offsetLeft; if(e.offsetParent!=null) offset+=getLeft(e.offsetParent); return offset;}

之前也写过一篇JS关于获取元素位置的文章:JS获取元素的offsetTop,offsetLeft等属性,我们可以通过offsetTop和offsetLeft属性获取元素相对窗口的位置,但offsetTop和offsetLeft属性都是相对于父元素定位的,而通常需要获取位置的元素都不是在最外层,所以遍历上级元素的offset相关属性少不了。那效率就成问题了。

//获取元素的纵坐标(相对于窗口)function getTop(e){var offset=e.offsetTop;if(e.offsetParent!=null) offset+=getTop(e.offsetParent);return offset;}//获取元素的横坐标(相对于窗口)function getLeft(e){var offset=e.offsetLeft;if(e.offsetParent!=null) offset+=getLeft(e.offsetParent);return offset;}

好在浏览器给我提供了相应的接口getBoundingClientRect,这个方法最早出现在IE浏览器中,后来的浏览器也跟着支持了这个方法,而且还更加完善,IE中只能获取到元素的left,top,bottom,right的属性,而后面的现代浏览器还能获取到元素的width和

这里要注意的是,bottom是元素底部相对于窗口顶部的距离,而不是像css里面position的bottom相对于窗口底部,同理,rihgt属性是元素最右边相对于窗口左边的距离。

var box = document.getElementById("box");var pos = box.getBoundingClientRect();box.innerHTML = "top:"+pos.top + "left:"+pos.left + "bottom:"+pos.bottom + "right:"+pos.right + "width:"+pos.width + "height:"+pos.height

原创文章,转载请注明: 转载自前端开发

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。