js 获取元素相对于页面(可视窗口)的位置,不考虑页面滚动后

有时候,我们处理节点旋转的时候,旋转的角度计算是通过当前点击的位置和被旋转的节点中心点计算出来的。点击的位置是相对于可视窗口的,那么被旋转节点的中心点肯定是相对于可视窗口的(不然当出现滚动条的时候),不然计算的结果就会出现很多问题。

代码:

// 获取元素相对于页面文档的位置----------------------------------------------
function getElementPos(el) {
    if(el.parentNode === null || el.style.display == 'none') {  return false;}     
    var parent = null;
    var pos = [];
    var box;
    if(el.getBoundingClientRect){     //IE
        box = el.getBoundingClientRect();
        var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
        var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
        return {x:box.left + scrollLeft, y:box.top + scrollTop};
     
    }else{ 
        pos = [el.offsetLeft, el.offsetTop]; 
        parent = el.offsetParent;    
        if (parent != el) {
            while (parent) { 
                pos[0] += parent.offsetLeft;
                pos[1] += parent.offsetTop;
                parent = parent.offsetParent;
            } 
        }  
    }  
    return {x:pos[0], y:pos[1]};
}   

猜你喜欢

转载自blog.csdn.net/qq_42740797/article/details/123121608