首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

[转] [备忘]原生JS获取dom的左下坐标

2012-11-23 
[转] [备忘]原生JS获取dom的左上坐标scriptfunction getElementPos(elementId) {var ua navigator.use

[转] [备忘]原生JS获取dom的左上坐标

<script>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]};}</script>

热点排行