zoukankan      html  css  js  c++  java
  • JS获得鼠标位置

    <body>
    <script>
        function mouseMove(ev)
        {
            ev = ev || window.event;
            var mousePos = mouseCoords(ev);
            //alert(ev.pageX);
            document.getElementById("xxx").value = mousePos.x;
            document.getElementById("yyy").value = mousePos.y;
        }
    
        function mouseCoords(ev)
        {
            if(ev.pageX || ev.pageY){
                return {x:ev.pageX, y:ev.pageY};
            }
            return {
                x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
                y:ev.clientY + document.body.scrollTop - document.body.clientTop
            };
        }
    
        document.onmousemove = mouseMove;
    
        $(document).mousemove(function(e){
            $('.h1').text(e.pageX + ", " + e.pageY);
        });
    
    
        alert(document.getElementsByTagName("div").screenX);
    
    </script>
        鼠标 X 轴:<input id = xxx type = text>
        鼠标 Y 轴:<input id = yyy type = text>
        <h1 class="h1"></h1>
        <h1 class="h2"></h1>
    </body>

    一.PageX和clientX

    PageX和clientX ,这个两个比较容易搞混,
    PageX:鼠标在页面上的位置,从页面左上角开始,即是以页面为参考点,不随滑动条移动而变化
    clientX:鼠标在页面上可视区域的位置,从浏览器可视区域左上角开始,即是以浏览器滑动条此刻的滑动到的位置为参考点,随滑动条移动 而变化.

    可是悲剧的是,PageX只有FF特有,IE这个悲剧没有啊T_T,所以大牛们想出了一个办法
    PageY=clientY+scrollTop-clientTop;(只讨论Y轴,X轴同理,下同)
    页面上的位置=可视区域位置+页面滚动条切去高度-自身border高度

    二.screenX

    screenX:鼠标在屏幕上的位置,从屏幕左上角开始,这个没有任何争议,不讨论 ^_^

    三.offsetX和layerX

    接下来是offsetX和layerX
    offsetX:IE特有,鼠标相比较于触发事件的元素的位置,以元素盒子模型的内容区域的左上角为参考点,如果有boder,可能出现负值

    layerX:FF特有,鼠标相比较于当前坐标系的位置,即如果触发元素没有设置绝对定位或相对定位,以页面为参考点,如果有,将改变参考坐标系,从触发元素盒子模型的border区域的左上角为参考点
    也就是当触发元素设置了相对或者绝对定位后,layerX和offsetX就幸福地生活在一起^-^,几乎相等,唯一不同就是一个从border为参考点,一个以内容为参考点

  • 相关阅读:
    c++坐标移动
    c++字串的连接最长路径查找
    c++句子逆序——堆栈实现
    c++句子逆序——substr函数
    c++计数法解决统计不同字符个数
    c++提取不重复的整数-计数
    C++取近似值简单算法
    c++排序去重
    c++计数排序例子
    分布式服务框架 Zookeeper
  • 原文地址:https://www.cnblogs.com/xinxingyu/p/4705395.html
Copyright © 2011-2022 走看看