• 原生JS中获取位置的方案总结


      • 获取鼠标当前位置

        • clientY、clientX: 鼠标当前位置 相对于 浏览器可视区域顶部、浏览器可视区域左部 的位置;
        • pageY、pageX: 鼠标当前位置 相对于 文档顶部、文档左部的位置;
        • screenY、screenX:鼠标当前位置 相对于 屏幕顶部、屏幕左部的位置;
        • offsetY、offsetY:鼠标的当前位置 相对于 目标节点内填充边顶部、内填充边左部的位置。内填充边意思是不包含border,但包含padding,类似于padding-box。
        • 他们均是鼠标事件的一级属性 ,如e.clientY
      • 获取某一元素的区域

        Element.getBoundingClientRect()   相对于视口的位置  OBJ.getBoundingClientRect().left
        
      • 1.该方法获取的是该元素相对于

    视口的位置

      top、bottom、left、right:分别是该元素的元素框(盒模型)上下左右位置距视口的距离。
        2.其中,top和bottom是距

    视口上边界

        的距离,left和right是距

    视口左边界

      的距离。
        3.width、height:分别是该元素的元素框(盒模型)的宽度和高度,这个宽高是border以内并且包含border,类似于

    border-box

      以下三种方法获取元素的位置,是相对于其包含块的
                  第一种;obj.style.left和obj.style.top,
                  1.有局限性,这种获取的方法只能获取到行内样式的left和top的属性值,不能获取到style标签和link 外部引用的left和top属性值。
                  第二种;window.getComputedStyle(obj, null).left
                  1.只读,可以获取所有style样式
                  2.存在兼容性问题,在IE浏览器上则是采用obj.currentStyle.left方法来获取属性值。
                  第三种;使用 obj.offsetLeft来获取对象的left属性
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Document</title>
     6     <style type="text/css">
     7         *{
     8             margin: 0;padding: 0;
     9         }
    10         #boxs{
    11             width: 200px;height: 200px;border: 1px solid red;position: absolute;top: 0;left:10px;
    12         }
    13     </style>
    14 </head>
    15 <body>
    16     <div id="boxs">这是一个盒子</div>
    17     <div id="ctns" style=" 500px;height: 300px;border: 1px solid blue;position: absolute;top: 210px;left:20px;">这是第二个</div>
    18 </body>
    19 <script type="text/javascript">
    20     // 1,第一种方法 obj.style.left 只能获取行内样式的left值
    21     var boxs = document.getElementById('boxs');
    22     var ctns = document.getElementById('ctns');
    23     var a = boxs.style.left;
    24     console.log(a);    //值是空,没有
    25  
    26     var a2 = ctns.style.left;
    27     console.log(a2);    //值是20px
    28  
    29     // 2,第二种方法,获取所有类型样式值,要写兼容
    30     //支持w3c规范的浏览器
    31     var b2= window.getComputedStyle(boxs).left;
    32     console.log(b2);    //10px
    33     //兼容IE9以下写法
    34     var b3 = window.getComputedStyle? window.getComputedStyle(boxs).left : boxs.currentStyle.left;
    35     console.log(b3);    //10px
    36  
    37     // 3,第三种方法 使用obj.offsetLeft
    38     var c = boxs.offsetLeft;
    39     var c2 = ctns.offsetLeft;
    40     console.log(c);        //值是10
    41     console.log(c2);    //值是20
    42  
    43 </script>
    44 </html>
  • 相关阅读:
    k8shelm
    利用TweenMax实现贝塞尔曲线运动
    flashPlayer自动降频后webgame处理技巧
    求字符串长度的好方法
    robotlegs 笔记
    pureMVC的svn地址
    完美解决as3在ie中初始化时stageWidth和stageHeight为0的问题
    God of War Ascension / 战神4, 再一次迎来新导演!
    《危情谍战 Knight and Day》又一部好电影!
    未来,突破束缚是唯一的选择?
  • 原文地址:https://www.cnblogs.com/fsg6/p/12994283.html
Copyright © 2020-2023  润新知