zoukankan      html  css  js  c++  java
  • offsetTop,offsetLeft

    scrollTop设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离

    offsetTop获取对象相对于版面或由offsetTop属性指定的父坐标的计算顶端位置

    offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置

    IE67和FF的offsetTop解释结果不同,FF下其offsetParent为body,IE67下其offsetParent为父级元素。

     即:elem.offsetTop=elem.offsetTop+elemFather.offsetTop+elemFatherFather.offsetTop......

    兼容性写法:

    function getOffset(el){
    var _t =el.offsetTop;
    while(el = el.offsetParent){
    _t += el.offsetTop;
    }
    return _t;
    }

    while(el = el.offsetParent)

    如果 el.offsetParent 存在,则加上他的offsetTop,一直循环,直到没有offsetParent;下面是个测试的例子:

    1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2 <html xmlns="http://www.w3.org/1999/xhtml">
    3 <head>
    4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    5 <title>offsetTop,offsetParent</title>
    6 <style type="text/css">
    7 *{ margin:0; padding:0;}
    8 div{width:400px;margin-top:20px; background-color:#000; height:300px; overflow:hidden}
    9 p{ margin-top:30px; background-color:#F00; height:200px; overflow:hidden}
    10 a{display:block; margin-top:100px; background-color:#fff; height:20px;}
    11 </style>
    12 </head>
    13
    14 <body id="the_body">
    15 <div id="the_div">
    16 <p id="the_p">
    17 <a href="#" id="the_a">offsetTop</a>
    18 </p>
    19 </div>
    20 <script type="text/javascript">
    21 function getOffset(el){
    22 var _t =el.offsetTop;
    23 var n=0;
    24 while(el = el.offsetParent){
    25 _t += el.offsetTop;
    26 n++;
    27 alert('我有'+n+'个offsetParent')
    28 }
    29 return _t;
    30 }
    31 alert(getOffset(document.getElementById('the_a')));
    32 alert(document.getElementById('the_a').offsetTop); //IE67下 结果为100,没有加上父级的offsetTop
    33 </script>
    34
    35 </body>
    36 </html>

  • 相关阅读:
    转载:div和flash层级关系问题
    转载:页面加载swf插件:swfobject
    C++ code:浮点数的比较(Floating-Pointing Number Comparison)
    Deep Learning系统实训之三:卷积神经网络
    C++ code:指针类型(pointer types)
    Linear Algebra(未完待续)
    Deep Learning系统实训之二:梯度下降原理
    C++ code:向量操作之添加元素
    Deep Learning系统实训之一:深度学习基础知识
    机器学习与优化关系、凸集、凸函数简介
  • 原文地址:https://www.cnblogs.com/bennman/p/2016243.html
Copyright © 2011-2022 走看看