使用javascript,如何获取元素的位置

发布于 2024-11-10 03:39:25 字数 58 浏览 0 评论 0原文

就像标题所说,如何获取元素相对于其在网页中的位置的 x、y 位置以及它们的定位方案(如绝对、相对等)。

like the title says, how to get the element's x, y positions with respect to their location in the web page and their positioning schemes like absolute, relative etc.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一个人的旅程 2024-11-17 03:39:25

在现代浏览器中, getBoundingClientRect 和 getClientRects 将为您提供描述元素的矩形对象。请参阅 https://developer.mozilla.org/en/DOM/element.getBoundingClientRecthttps://developer.mozilla.org/en/DOM/element.getClientRects

如果您必须使用 IE8,那么您必须在不同的浏览器中执行不同的操作才能获得正确的答案(例如对象检测 getBoundingClientRect 并依靠其他方法(如果不存在))。

jQuery offset() 计算和 Quirksmode findPos 将在任何进行子像素定位的浏览器(例如 Firefox 或 IE9)中给出错误的答案,因为它们会将答案舍入为整数像素。根据您在做什么,这可能会也可能不会。

In a modern browser, getBoundingClientRect and getClientRects will give you rect objects describing your element. See https://developer.mozilla.org/en/DOM/element.getBoundingClientRect and https://developer.mozilla.org/en/DOM/element.getClientRects

If you have to work with IE8, then you'll have to do different things in different browsers to get correct answers (e.g. object-detect getBoundingClientRect and fall back on some other method if it's not present).

The jQuery offset() calculation and the Quirksmode findPos will give incorrect answers in any browser that does subpixel positioning (e.g. Firefox or IE9), because they will round the answer to an integer number of pixels. Depending on what you're doing, that may or may not be ok.

宛菡 2024-11-17 03:39:25

使用 jQuery:

var $elt = $('select an element however'),
    cssPosition = $elt.css('position'),
    offset = $elt.offset(),
    top = offset.top,
    left = offset.left;

如果没有 jQuery,请使用 Quirksmode 的 findPos 函数

var elt = document.getElementBy...,
    pos = findPos(elt),
    top = pos[1],
    left = pos[0];

在没有库的情况下获取计算的 CSS position 值是 又一罐蠕虫。它归结为:

With jQuery:

var $elt = $('select an element however'),
    cssPosition = $elt.css('position'),
    offset = $elt.offset(),
    top = offset.top,
    left = offset.left;

Without jQuery, use Quirksmode's findPos function:

var elt = document.getElementBy...,
    pos = findPos(elt),
    top = pos[1],
    left = pos[0];

Getting the computed CSS position value without a library is another can of worms. It boils down to:

淡写薰衣草的香 2024-11-17 03:39:25

看看这个

JS:

function findPos(obj) {
    var curleft = curtop = 0;
    if (obj.offsetParent) {
        curleft = obj.offsetLeft
        curtop = obj.offsetTop
        while (obj = obj.offsetParent) {
            curleft += obj.offsetLeft
            curtop += obj.offsetTop
        }
    }
    return [curleft,curtop];
}

HTML:

<div id="ser"> TEST</div>

回电:

alert(findPos(document.getElementById('ser')));

我希望它对你有帮助

Check out this

JS:

function findPos(obj) {
    var curleft = curtop = 0;
    if (obj.offsetParent) {
        curleft = obj.offsetLeft
        curtop = obj.offsetTop
        while (obj = obj.offsetParent) {
            curleft += obj.offsetLeft
            curtop += obj.offsetTop
        }
    }
    return [curleft,curtop];
}

HTML:

<div id="ser"> TEST</div>

RETURN CALL:

alert(findPos(document.getElementById('ser')));

I hope its help to you

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文