• js 元素对象位置


      1:获取指定元素的位置left和top

      

    代码
            //用 Javascript 获取指定页面元素的位置
        function getElementPos(elementId) {
            
    var ua = navigator.userAgent.toLowerCase();
            
    var isOpera = (ua.indexOf("opera"!= -1);
            
    var isIE = (ua.indexOf("msie"!= -1 && !isOpera); // not opera spoof
            var el = document.getElementById(elementId);
            
    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 if(document.getBoxObjectFor){// gecko
                box = document.getBoxObjectFor(el);
                
    var borderLeft = (el.style.borderLeftWidth)?parseInt(el.style.borderLeftWidth):0;
                
    var borderTop = (el.style.borderTopWidth)?parseInt(el.style.borderTopWidth):0;
                pos 
    = [box.x - borderLeft, box.y - borderTop];
            } 
    else{// safari & opera
                pos = [el.offsetLeft, el.offsetTop];
                parent 
    = el.offsetParent;
                
    if (parent != el) {
                    
    while (parent) {
                        pos[
    0+= parent.offsetLeft;
                        pos[
    1+= parent.offsetTop;
                        parent 
    = parent.offsetParent;
                    }
                }
                
    if (ua.indexOf("opera"!= -1
                    
    || ( ua.indexOf("safari"!= -1 && el.style.position == "absolute" )){
                    pos[
    0-= document.body.offsetLeft;
                    pos[
    1-= document.body.offsetTop;
                }
            }
            
    if (el.parentNode) { 
                parent 
    = el.parentNode; 
            } 
    else { 
                parent 
    = null
            }
            
    while (parent && parent.tagName != "BODY" && parent.tagName != "HTML") { // account for any scrolled ancestors 
                pos[0-= parent.scrollLeft;
                pos[
    1-= parent.scrollTop;
                
    if (parent.parentNode) { 
                    parent 
    = parent.parentNode; 
                } 
    else { 
                    parent 
    = null
                }
            }
            
    return {x:pos[0], y:pos[1]};
        }  

      调用方法:var pos = getElementPos(obj.id);

            alert(pos.x + "   " + pos.y);

  • 相关阅读:
    windows server 2008 R2 安装 sql server 2000 遇到的种种问题
    圆心的VPS记录信息
    无法访问.您可能没有权限使用网络资源.局域网无法访问共享,局域网无法访问打印机的一些方法
    win7 32位 fastcgi模式 运行php
    SpringBoot+JPA实例
    马斯洛的锤子论
    一道算法题
    MySQL源码解读之数据结构LF_HASH
    JS学习专辑外传(1)
    WPF 用DynamicResource动态样式切换
  • 原文地址:https://www.cnblogs.com/pricks/p/1677278.html
Copyright © 2020-2023  润新知