• 根据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');
        }
  • 相关阅读:
    春秋战国时期灭了三个国家的陈国女人
    学历史有什么用?
    真正的奴才韩非
    深度学习的历史
    深度学习三十年
    图算法
    几种常见的查找算法
    数据结构之基于堆的优先队列
    几种常见的排序算法
    数据结构(背包、队列和栈)
  • 原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/2283962.html
Copyright © 2020-2023  润新知