JS offsetParent屬性:獲取最近的上級定位元素

2020-07-16 10:05:09
在 JavaScript 中,offsetParent 屬性表示最近的上級定位元素。要獲取相對父級元素的位置,可以先判斷 offsetParent 屬性是否指向父元素,如果是,則直接使用 offsetLeft 和 offsetTop 屬性獲取元素相對於父元素的距離;否則分別獲得當前元素和父元素距離視窗的坐標,然後求差即可。
//獲取指定元素距離父元素左上角的偏移坐標
//引數:e表示獲取位置的元素
//返回值:返回物件直接量,其中屬性x表示x軸偏移距離,屬性y表示y軸偏移距離
function getP (e) {
    if (e.parentNode == e.offsetParent) {  //判斷offsetParent屬性是否指向父級元素
        var x = e.offsetLeft;  //如果是,則直接讀取offsetLeft屬性值
        var y = e.offsetTop;  //讀取offsetTop屬性值
    } else {  //否則呼叫getW()擴充套件函數獲取父元素的偏移位置,並返回它們的差值
        var o = getPoint (e);
        var p = getPoint (e.parentNode);
        var x = o.x - p.x;
        var y = o.y - p.y;
    }
    return {  //返回當前元素距離父元素的坐標
        "x" : x,
        "y" : y
    },
}
下面呼叫該擴充套件函數獲取指定元素相對父元素的偏移坐標。
var box = document.getElementById("box");
var o = getP (box);  //呼叫擴充套件函數獲取元素對應父元素的偏移坐標
console.log(o.x);  //讀取x軸坐標偏移值
console.log(o.y);  //讀取y軸偏坐標移值