元素相对浏览器顶部位置

44 阅读1分钟
export const formatOffset = (el) => {
    let offsetTop = 0;

    do {
        if (!isNaN(el.offsetTop)) {
            offsetTop += el.offsetTop;
        }
    } while ((el = el.offsetParent));

    return { top: offsetTop };
}
export const formatOffsetRelative = (el) => {
    if (el.getBoundingClientRect) {
        return el.getBoundingClientRect();
    }
    else {
        var x = 0, y = 0;
        do {
            x += el.offsetLeft - el.scrollLeft;
            y += el.offsetTop - el.scrollTop;
        }
        while (el = el.offsetParent);

        return {  top: y, left: x }
    }
}

引自 : get-element-relative-offset offset