zoukankan      html  css  js  c++  java
  • 根据dom对象或其id获取对象位置的代码

    function getPostionByDom(element)
        {
            var el;
            var ua = navigator.userAgent.toLowerCase();
            var isOpera = (ua.indexOf('opera') != -1);
            var isIE = (ua.indexOf('msie') != -1 && !isOpera); // not opera spoof
            if (typeof element == 'object'){
                el = element;
            }
            else{
                el = document.getElementById(element);
            }
            /*if (typeof el.parentNode == 'undefined' || el.style.display == 'none')
            {
                return false;
            }*/

            var parent = null;
            var pos = [];
            var box;
            if(el.getBoundingClientRect) //IE&FF
            {
                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]};
        }

        window.onload = function() {
            debugger;
            var o = getPostionByDom('SubNav');
        }
  • 相关阅读:
    ubuntu安装谷歌浏览器
    Andoid之硬件访问服务1(让Andoid应用程序访问c库)
    JNI intArray
    JNI Hello World
    Ubuntu 14.04 Sublime Text3 Java编译运行(最简单的方法)
    Python中sys.argv的用法
    python连接mysql数据库
    python中join()函数讲解
    python中split()函数讲解
    深度学习入门教程
  • 原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/2283962.html
Copyright © 2011-2022 走看看