Как вы вычисляете позицию страницы элемент dom, когда тело можно позиционировать относительно друг друга?

У меня странная ошибка, которая начала проявляться, когда я сделал тело относительным позиционированным элементом с полем 39 пикселей (я освобождаю место для панели инструментов вверху страницы).

В любом случае - если вы посмотрите, как большинство сайтов советуют вам вычислить позицию элемента страницы, вы увидите такой код:

function getPos(elt) {
    var pt = [0, 0];

    while (elt.offsetParent !== null) {
        pt[0] += elt.offsetLeft;
        pt[1] += elt.offsetTop;
        elt = elt.offsetParent;
    }
    return pt;
}

Это работает нормально, даже если ваш тег имеет поле. НО, если ваше тело также является position: relative, тогда это возвращает значение со слишком маленьким - оно не включает поля элемента body.

Как мне 1) определить, расположено ли тело относительно, и 2 ) узнать, какие поля есть, чтобы я мог добавить их обратно?

Обратите внимание, что мне нужны координаты страницы, чтобы я мог сравнить их с MouseEvent PageX, PageY.

6
задан mckoss 8 April 2011 в 23:18
поделиться