现在有如下结构
<html>
<body>
<div id="a">
<div id="b"></div>
</div>
</body>
</html>
a的高度比b小,且a可以滚动。超出a的部分不显示。
a与html之间有若干节点,且样式不固定
当我在b元素内点击时,我要如何获取这个点击的位置,相对于b左上角的坐标
现在有如下结构
<html>
<body>
<div id="a">
<div id="b"></div>
</div>
</body>
</html>
a的高度比b小,且a可以滚动。超出a的部分不显示。
a与html之间有若干节点,且样式不固定
当我在b元素内点击时,我要如何获取这个点击的位置,相对于b左上角的坐标
function getElementPosition(e) {
var box = e.getBoundingClientRect();
var offsets = getScrollOffsets();
return {
x: box.left + offsets.x,
y: box.top + offsets.y
}
}
function getScrollOffsets(w) {
w = w || window;
//除了ie8及更早版本,其他浏览器都可以使用
if (w.pageXOffset != null) {
return {
x: w.pageXOffset,
y: w.pageYOffset
}
}
//对于标准模式向的IE(或任何浏览器)
var d = w.document;
if (document.compatMode == 'CSS1Compat') {
return {
x: d.documentElement.scrollLeft,
y: d.documentElement.scrollTop
};
}
//对怪异模式下的浏览器
return {
x: d.body.scrollLeft,
y: d.body.scrollTop
};
}
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
5 回答2k 阅读
3 回答2.3k 阅读✓ 已解决