原生JS获取元素在文档中的位置
来源:互联网 发布:vue实现双向数据绑定 编辑:程序博客网 时间:2024/04/29 11:35
原生JS获取元素在文档中的位置
原生JS提供了很多关于元素信息的属性
具体就不总结了
元素在页面上的位置有绝对位置和相对位置
绝对位置
网页元素的绝对位置,指该元素的左上角相对于整张网页左上角的坐标。这个绝对位置要通过计算才能得到。
首先,每个元素都有offsetTop和offsetLeft属性,表示该元素的左上角与父容器(offsetParent对象)左上角的距离。所以,只需要将这两个值进行累加,就可以得到该元素的绝对坐标。
但这里要注意一个问题:要计算offsetParent的边框宽度。当左右边框宽度相同时,可以通过(offsetWidth-clientWidth)/2得到水平方向上一边框宽度。
// 获取元素在页面上的绝对位置 function getElementPageLeft(element){ var actualLeft=element.offsetLeft; var parent=element.offsetParent; while(parent!=null){ actualLeft+=parent.offsetLeft+(parent.offsetWidth-parent.clientWidth)/2; parent=parent.offsetParent; } return actualLeft; } function getElementPageTop(element){ var actualTop=element.offsetTop; var parent=element.offsetParent; while(parent!=null){ actualTop+=parent.offsetTop+(parent.offsetHeight-parent.clientHeight)/2; parent=parent.offsetParent; } return actualTop; }
相对位置
网页元素的相对位置,指该元素左上角相对于浏览器窗口左上角的坐标。
有了绝对位置以后,获得相对位置就很容易了,只要将绝对坐标减去页面的滚动条滚动的距离就可以了。
//获取元素在页面上的相对于窗口的位置 function getElementViewLeft(element){ var actualLeft=element.offsetLeft; var parent=element.offsetParent; //获取页面滚动距离 var scrollLeft=document.body.scrollLeft||document.documentElement.scrollLeft while(parent!=null){ actualLeft+=parent.offsetLeft+(parent.offsetWidth-parent.clientWidth)/2; parent=parent.offsetParent; } return actualLeft-scrollLeft; function getElementViewTop(element){ var actualTop=element.offsetTop; var parent=element.offsetParent; var scrollTop=document.body.scrollTop||document.documentElement.scrollTop while(parent!=null){ actualTop+=parent.offsetTop+(parent.offsetHeight-parent.clientHeight)/2; parent=parent.offsetParent; } return actualTop-scrollTop; }
获取元素的相对位置,JS还提供了一种更简单的方法:Element.getBoundingClientRect()
Element.getBoundingClientRect()返回一个对象,对象包含了元素距离窗口的位置属性:left、right、top、bottom
注意:要考虑浏览器是否支持此方法!
参考链接:阮一峰的博客
阅读全文
0 0
- 原生JS获取元素在文档中的位置
- JS获取某个元素在数组中的位置
- jquery获取元素在文档中的位置信息以及滚动条位置
- jquery 获取元素在浏览器中的位置
- 获取元素在body中的绝对位置
- 获取元素在数组中的位置
- Js获取元素位置
- js 获取元素位置
- 原生js获取元素样式
- 原生js获取元素样式
- 原生js获取元素大小
- 原生js获取元素样式
- JavaScript获取元素在浏览器画布中的绝对位置
- 获取Html元素在页面中的绝对位置及问题
- JavaScript获取元素在浏览器画布中的绝对位置
- JavaScript获取元素在浏览器画布中的绝对位置
- JavaScript获取元素在浏览器画布中的绝对位置
- JavaScript获取元素在浏览器画布中的绝对位置
- 图片跟随鼠标
- 中文分词比较困难的句子
- gstreamer,vlc,ffmpeg比较
- 求最大公约数——欧几里得算法
- 2017-11-9离线赛总结 (NOIP七连测第七场)
- 原生JS获取元素在文档中的位置
- 补提交卡
- vlc和gstreamer的跨平台移植
- uboot的bootcmd和bootargs参数含义
- python里使用正则表达式的后向搜索肯定模式
- Java 日志规范
- Makefile的使用
- 这可能是第二好的自定义 View 教程之属性动画
- Android Studio打包cocos creator项目出现java.lang.UnsatisfiedLinkError:SDKWrapper.nativeLoadAllPlugins:()