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');
        }
  • 相关阅读:
    作为PHP开发者请务必了解Composer
    如何优雅的使用 phpStorm 开发工具
    Sublime Text 3的安装,卸载,更新,激活
    高效的一天可以这样过
    编译安装PHP开发环境
    Linux操作系统Centos7.2版本搭建Apache+PHP+Mysql环境
    PHP面试题分享与答案
    腾讯2016校招编程题【PHP实现】
    程序的优化(PHP)
    在Mac系统下配置PHP运行环境
  • 原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/2283962.html
Copyright © 2011-2022 走看看