javascript - JS获取对象坐标

标签 javascript jquery position

所以基于this question我问,获取跨浏览器对象位置的最可靠方法是什么?谢谢

最佳答案

一般来说,假设你有一个名为 elem 的元素,实际上很容易获得元素左上角的 X 和 Y 坐标,假设你想在 中获取这些元素文档坐标。在所有浏览器中,这由 elem.offsetLeftelem.offsetTop 属性返回。

唯一需要注意的技巧是,如果 elem 绝对定位在另一个元素中,比如 div 的左/上边距为 20px,这些properties 将返回 0,因为它只考虑当前元素而不是整个元素链。幸运的是,我们可以使用“链遍历”函数来捕获与给定元素关联的元素的所有边距,将它们相加以获得正确的文档坐标。

正如 Sime Vidas 提到的,还有 JQuery 的 position()offset() 属性,在这种情况下,您需要 offset()属性。

您也可以使用 getBoundingClientRect() 方法,但是这会返回元素相对于其 offsetParent 的坐标,因此并不完全可靠。请看以下示例:

// getPosition function
function getPosition(elem){

    var dims = {offsetLeft:0, offsetTop:0};

    do {
        dims.offsetLeft += elem.offsetLeft;
        dims.offsetTop += elem.offsetTop;
    }

    while (elem = elem.offsetParent);

    return dims;
}

cont1.style.position = "absolute";
cont1.style.marginLeft = "10px";

cont2.style.position = "absolute";
cont2.style.marginLeft = "10px";

box.style.position = "absolute";
box.style.marginLeft = "10px";


console.log(getPosition(box).offsetLeft); // returns "30"
console.log(getPosition(box).offsetTop); // returns "0"

// or in JQuery
console.log($(box).offset().left) // also returns "30"
console.log($(box).offset().top) // also returns "0"

此外,我建议您阅读 this .

关于javascript - JS获取对象坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9040768/

相关文章:

javascript - 如何将幻灯片应用于向上或向下移动的元素

javascript - 如何计算兄弟元素的点击次数并在所有兄弟元素都被点击后更改 CSS?

jquery - 仅在完成加载后显示所有图像

javascript - 扩展框 - 整理

java - 无法为 Swing 元素设置固定位置

jquery - 带有 Squarespace 的图库幻灯片顶部的文本

javascript - 使用 Moment.js 实现 24 小时倒数计时器

javascript - 获取窗口高度?

mysql - 设置顺序/位置 - 通过两个变量重置

javascript - 如何在 JavaScript 中重定向特定日期的网站?