jquery坐标-原生JS和jQuery screenX/clientX/pag中storm对象的坐标解读

首先我们先介绍一下什么是风暴:

干扰是指某个物体在某个时刻做了某件事。 例如:点击暴风雨,当我点击按钮并触发暴风雨的点击时,浏览器就会做出相应的响应。

这场动荡有三个因素:

1.事件来源:dom对象

2. 事件类型:详情请参考W3C的Javas Disturbance Reference Guide

3.事件响应:通常是一个函数,称为风暴处理函数

jquery获取鼠标坐标_jquery坐标

原生JS注册干扰的句型:

    //原生注册事件语法:
     document.getElementById("box").onclick = function() {
         //点击盒子输出111
         console.log('111');
     }

jQuery也遵守风暴三要素jquery坐标,其注册句型为:

 //入口函数,所有的代码是包含在入口函数里面的
        $(function(){
            $('#box').on("click",function(){
                /* 具体语法:
                   $(选择器).on(事件类型,事件处理函数)
                */
            })
        })

二:Storm对象

哪些是风暴的对象?

A、当暴风雨触发时(如点击暴风雨),浏览器会记录触发时的个人信息。 比如你在那个位置点击,点击的时候直接用键盘左键点击。 或者同时点击键盘左右键(sao操作)等。浏览器将所有这些信息存储在一个变量中。 该变量的数据类型是对象,因此称为storm对象。

jquery坐标_jquery获取鼠标坐标

B. 如何获取storm对象:只需要向storm函数传递一个参数,可以是eventjquery坐标,也可以是.

   <!-- 这里是原生代码 -->
    <script>
        //原生注册事件语法:
        document.getElementById("box").onclick = function(e) {
            //兼容性处理
            e = e || window.event;
            //输出事件对象观察
            console.log(e);
            
        }
        
    
    </script>
    <script src="jquery-1.12.4.js"></script>
    <!-- 这里是jQuery的代码 -->
    <script>
        //入口函数,所有的代码是包含在入口函数里面的
        $(function(){
            $('#box').on("click",function(e){
                //兼容性处理
                e = e || window.event;
                //输出事件对象观察
                console.log(e);
            })
        })
    
    </script>

展开后,两者的内容是一样的:

这是 jQuery 的 Storm 对象:

           **现在介绍每次都主角:事件的三大坐标**

原生 JS 的三个家族:

屏幕(screenX和screenY)坐标:从屏幕左上角到我的触发点的距离

client(clientX和clientY)坐标:浏览器可视区域左上角到触发点的距离

注意:client的值会在页面滚动时发生变化,其引用对象是页面的可见区域。

jquery获取鼠标坐标_jquery坐标

page(pageX和pageY)坐标:无论浏览器是否滚动,都是距浏览器左上角的距离。

注:与页面不滚动时客户端坐标对应的值一致。

偏移(offsetX 和 offsetY)坐标:相对于风暴源的 XY 坐标。

原生具体代码:

jquery获取鼠标坐标_jquery坐标

  <!-- 这里是原生代码 -->
    <script>
        //原生注册事件语法:
        document.getElementById("box").onclick = function(e) {
            //兼容性处理
            e = e || window.event;
            //输出事件对象观察
            console.log(e);
            //电脑屏幕的左上角,距离你触发事件的那一点的x值和y值。
            console.log("e.screenX:"+e.screenX+"---e.screenY:"+ e.screenY);
            //浏览器可视区域,距离触发事件的那一点的x值和y值
            console.log("e.clientX:"+e.clientX+"---e.clientY:"+ e.clientY);
            //页面的左上角(哪怕页面滚走了,还是页面左上角),距离触发事件的那一点的x值和y值。
            //浏览器兼容问题:IE8及之前不支持
            console.log("e.pageX:"+e.pageX+"---e.pageY:"+ e.pageY);
            // console.log ( getPagePoint ( e ).pageX, getPagePoint ( e ).pageY );
            
        }
        
    
    </script>

jQuery 中的 Storm 坐标:

和原来的风暴坐标一模一样。

代码片段:

<!-- 这里是jQuery的代码 -->
    <script>
        //入口函数,所有的代码是包含在入口函数里面的
        $(function(){
            $('#box').on("click",function(e){
                //兼容性处理
                e = e || window.event;
                //输出事件对象观察
                console.log(e);
                //电脑屏幕的左上角,距离你触发事件的那一点的x值和y值。
                console.log("e.screenX:"+e.screenX+"---e.screenY:"+ e.screenY);
                //浏览器可视区域,距离触发事件的那一点的x值和y值
                console.log("e.clientX:"+e.clientX+"---e.clientY:"+ e.clientY);
                //页面的左上角(哪怕页面滚走了,还是页面左上角),距离触发事件的那一点的x值和y值。
                //浏览器兼容问题:IE8及之前不支持
                console.log("e.pageX:"+e.pageX+"---e.pageY:"+ e.pageY);
            })
        })
    
    </script>

现在发一张图帮助大家理解:(此图由博客园大鳄鱼提供)