`
lu007heng
  • 浏览: 24444 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

zz如何在js中获得div的位置(一段封装好的代码)

阅读更多
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]
    };
}

 看的别人博客上的,帮了我大忙啊~传上来,好代码一起分享。

分享到:
评论

相关推荐

    base zz zz zz zz

    base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz

    天猫雪花悬浮代码 淘宝下雪代码下载

    “最新悬浮”一词可能暗示了代码的更新迭代,意味着开发者可以下载最新的代码包,将其集成到自己的网站或项目中,以获得最佳的视觉效果和兼容性。这通常涉及以下步骤: 1. **下载代码**:从官方资源或社区分享的...

    zz经典C代码.rar_C语言 图像_ZZ丫C香烟代码

    标题中的“zz经典C代码.rar_C语言 图像_ZZ丫C香烟代码”暗示了这是一个包含C语言编程中关于图像处理的代码集合,可能是一些示例或实践项目。"ZZ丫C香烟代码"可能是作者或者这个代码库的特定代号或者命名风格。描述中...

    高仿微信,iOSAppTemplate代码重构 此版本TLChat基于TLKit、 ZZFLEX实现

    在iOS应用开发中,"高仿微信"是一个常见的学习项目,旨在模仿微信的界面和功能,帮助开发者熟悉iOS开发流程并提升技能。本项目标题提到的"高仿微信,iOSAppTemplate代码重构 此版本TLChat基于TLKit、ZZFLEX实现"是一...

    zz CAD快速计算长度插件

    在CAD中想要快速测量长度,在CAD工具栏找到加载应用程序,再点击加载 加载成功后在输入栏输入“zz”(不分大小写)在选择你需要测量的线段即可。

    全同态加密代码

    1. ZZ.c、ZZ.h:这些文件可能涉及到一个名为"ZZ"的数据类型或类,它可能用于表示大整数,这是许多加密算法的基础,特别是在处理模数较大的情况下。 2. fhe-*.cc(fhe-keygen.cc, fhe-enc.cc, fhe-dec.cc):这些...

    2SK2980ZZ-TR-E-VB一款SOT23封装N-Channel场效应MOS管

    根据给定的信息,本文将详细解析“2SK2980ZZ-TR-E-VB”这款SOT23封装N-Channel场效应MOS管的关键技术特性与应用领域。 ### 一、产品概述 2SK2980ZZ-TR-E-VB是一款采用SOT23封装的N-Channel沟道MOSFET(金属氧化物...

    元器件封装库

    在电子设计领域,元器件封装库是至关重要的资源,它包含了一系列电子元件的物理布局模型,用于电路板设计软件,如Altium Designer、EAGLE、KiCad等。元器件封装库的完整性和准确性直接影响到电路板的设计质量和制造...

    ZZ Fibo Trader - MetaTrader 5EA.zip

    在ZZ Fibo Trader中,抛物线止损系统与斐波那契分析相结合,可以在价格走势符合预期时保护盈利,同时在市场反转时减少损失。 ZZFiboTrader.mq5 文件是ZZ Fibo Trader EA的核心源代码,采用MQL5语言编写。MQL5是...

    zz809.com留言本

    源代码的分享是IT领域中常见的学习和交流方式,本资源作为“源代码”和“源码”,对于开发者来说具有很高的研究价值。它不仅可以让开发者了解留言本系统的内部运行机制,还能为他们提供一个实战性的学习案例,以便于...

    基于51单片机实现的zz自动避障小车(含小车代码+控制端代码+仿真图)

    3、当小车在前进的过程中遇到障碍物时,由舵机转动超声波模块分别测前方、左方右方45°90°障碍物距离自己的距离,并将这个距离发送给手机或电脑,显示在七段数码管上,小车根据距离选择一个可以通行的方向移动,当...

    超出NLO QCD的高横向动量的ZZ产生

    最重要的是,我们将来自胶子-胶子通道的胶子-融合ZZ + jet贡献添加到我们的合并样本中,胶子-胶子通道正式是N3LO,并在NLO上为胶子-融合机理提供了近似结果。 这些预测是使用VBFNLO软件包获得的,包括Z玻色子的轻子...

    ZZ_MODIFIED_GEEBINF.ENS.zip

    标题中的"ZZ_MODIFIED_GEEBINF.ENS.zip"是一个压缩包文件,暗示其内容可能包含对EndNote引用样式的一种修改。EndNote是一款流行的参考文献管理软件,它允许用户存储、组织和格式化引用文献。"ZZ_MODIFIED_GEEBINF....

    zz.js:类似 AS3 的 DOM 操作库

    总的来说,zz.js是一个旨在简化JavaScript DOM操作的库,它借鉴了AS3的优秀特性,让开发者在JavaScript环境下也能享受到类似AS3的开发体验。通过学习和使用zz.js,开发者可以提高工作效率,写出更加优雅、高效的前端...

    中医大夫助理信息系统 zz-doctor

    在“zz-doctor”项目中,我们能看到Android的四大组件——Activity、Service、BroadcastReceiver和ContentProvider的运用。Activity是用户界面的主要构成部分,Service用于后台运行任务,BroadcastReceiver处理系统...

    ZZ561401.CAB

    ZZ561401.CAB ZZ561401.CAB ZZ561401.CAB

    ZZ: 时间管理方法(转贴)

    标题中的“ZZ: 时间管理方法(转贴)”表明这是一篇关于时间管理的文章,可能是从其他地方转载而来。从描述中的“博文链接:https://lkfnn.iteye.com/blog/33600”我们可以推测,这是一篇在ITeye技术社区发表的博客...

    Node.js-TerminalRendererforThree.jsThree.js的终端渲染器

    "Node.js-TerminalRendererforThree.jsThree.js的终端渲染器" 这个标题揭示了一个创新的项目,它将Three.js,一个流行的JavaScript 3D库,与Node.js结合,实现了在终端环境中的3D渲染。这意味着开发者能够在命令行...

    android应用源码zz-doctor中医大夫助理信息系统.rar

    【标题】"android应用源码zz-doctor中医大夫助理信息系统.rar"揭示了这是一份针对Android平台开发的应用程序源代码,专门设计用于辅助中医大夫进行日常工作。这个系统可能集成了病症诊断、处方建议、病例记录等多种...

Global site tag (gtag.js) - Google Analytics