• JS实现拖动(2)


     

    getBoundingClientRect() 来获取页面元素的位置

    document.documentElement.getBoundingClientRect

    该方法返回一个对象,从而获得页面中某个元素的左,上,右和下分别相对浏览器视窗的位置,即分别代表该元素上、左、右、下四条边界相对于浏览器窗口左上角(注意,不是文档区域的左上角)的偏移像素值并且该方法已经不再是IE Only了,FF3.0+和Opera9.5+已经支持了该方法,可以说在获得页面元素位置上效率能有很大的提高,所以获取页面上某个元素相对于浏览器窗口的偏移量就成了getBoundingClientRect的用武之地了,按照一篇文章的说法,it's awsome,太帅了=。=因为不必纠结于offset、pagex、clientx等等等等等等在以前版本的Opera和Firefox中必须通过循环来获得元素在页面中的绝对位置。

     

    代码示例:

     

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Demo</title>
    </head>
    
    <body style="2000px; height:1000px;">
        <div id="demo" style="position:absolute; left:518px; right:100px; 500px; height:500px; background:#CC0000; top: 114px;">Demo为了方便就直接用绝对定位的元素</div>
    </body>
    </html>
    <script>
    document.getElementById('demo').onclick=function (){
            if (document.documentElement.getBoundingClientRect) { 
                alert("left:"+this.getBoundingClientRect().left)
                alert("top:"+this.getBoundingClientRect().top)
                alert("right:"+this.getBoundingClientRect().right)
                alert("bottom:"+this.getBoundingClientRect().bottom)
                var X= this.getBoundingClientRect().left+document.documentElement.scrollLeft;
               var Y = this.getBoundingClientRect().top+document.documentElement.scrollTop;
                alert("Demo的位置是X:"+X+";Y:"+Y)
            } 
    }
    </script>


  • 相关阅读:
    c# System.Object类和数据的安全转型
    计算机内存的组织方式
    c# ref和out参数
    C# 复制值类型的变量和类
    PCB 布线,直角线,差分线,蛇形线
    c# 静态方法和数据
    c# 类的知识
    appium中从activity切换到html
    No Desktop License Servers available to provide a license
    adb命令连接Android模拟器夜神模拟器
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3402463.html
Copyright © 2020-2023  润新知