获取纯javascript中HTML元素的真实位置
Get real position of an HTML element in pure javascript
如何在纯JavaScript中获得屏幕中的真实坐标(顶部和左侧)?
我发现的方法在父元素上使用递归来计算坐标,但它们似乎并没有覆盖所有的网页,比如这里、这里和这里
由于我在网上浏览了很长时间,找到了一个不使用任何javascript库的解决方案,而且我找到的所有答案都建议使用jQuery方法.offset()
,所以我决定复制这个方法,并制作一个小的纯javascript offset()
函数来做同样的事情:
function isWindow( obj ) {
return obj != null && obj === obj.window;
}
function getWindow( elem ) {
return isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
}
function offset( elem ) {
var docElem, win,
box = { top: 0, left: 0 },
doc = elem && elem.ownerDocument;
docElem = doc.documentElement;
if ( typeof elem.getBoundingClientRect !== typeof undefined ) {
box = elem.getBoundingClientRect();
}
win = getWindow( doc );
return {
top: box.top + win.pageYOffset - docElem.clientTop,
left: box.left + win.pageXOffset - docElem.clientLeft
};
};
你可以在这个页面上尝试它(我们将在页面底部的一个元素,答案区域,因为它是其他方法失败的地方),在控制台上运行:
offset(document.getElementById('wmd-input')).top == $('#wmd-input').offset().top
如果你是真的,这意味着它有效;-)
相关文章:
- jquery试图按名称获取按钮位置
- 我可以获得相对于被点击元素的确切点击位置吗
- 谷歌地图固定位置覆盖
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 循环比赛位置算法
- es6 相当于下划线查找位置
- jQuery循环在特定位置暂停
- 引导程序:在导航栏中,显示悬停在单个位置的基于Li Link的不同内容
- 自定义函数中的光标位置
- 安卓平台上的QWebView HTML5地理位置
- DIV并排,位置不正确
- 使用jQuery更改元素的顶部位置
- 在谷歌地图上绘制位置数据库
- 如何使用jquery将base64图像路径转换为真实路径
- 在OpenNI中将Zigfu关节位置从真实世界转换为类似投影的位置
- ASP Page + JavaScript:如何隐藏元素并获取其真实位置
- RUM(真实用户监控)用户感知的负载时间和位置
- 捕捉.svg拖动“真实”位置
- 获取纯javascript中HTML元素的真实位置
- 画布中真实的鼠标位置