js Event对象的5种坐标

JS Event对象包含5种不同的坐标属性,它们可以用来描述事件的发生位置,这些坐标属性分别是:

  1. clientX和clientY
  2. pageX和pageY
  3. screenX和screenY
  4. offsetX和offsetY
  5. x和y

下面就逐一介绍这5种坐标属性的含义和使用方法:

1. clientX和clientY

clientX和clientY属性用来获取事件的触发点相对于浏览器窗口可视区域左上角的坐标值。例如下面这个例子:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>clientX和clientY示例</title>
  <style>
    #box {
      width: 200px;
      height: 200px;
      background-color: yellow;
    }
  </style>
  <script>
    window.onload = function() {
      document.getElementById('box').addEventListener('click', function(e) {
        console.log('clientX: ' + e.clientX + ', clientY: ' + e.clientY);
      });
    };
  </script>
</head>
<body>
  <div id="box"></div>
</body>
</html>

当点击黄色的方块时,控制台会输出当前鼠标相对于浏览器窗口可视区域左上角的坐标值。

2. pageX和pageY

pageX和pageY属性用来获取事件的触发点相对于文档左上角的坐标值。例如下面这个例子:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>pageX和pageY示例</title>
  <style>
    #box {
      width: 200px;
      height: 200px;
      background-color: yellow;
    }
  </style>
  <script>
    window.onload = function() {
      document.getElementById('box').addEventListener('click', function(e) {
        console.log('pageX: ' + e.pageX + ', pageY: ' + e.pageY);
      });
    };
  </script>
</head>
<body>
  <div id="box"></div>
</body>
</html>

当点击黄色的方块时,控制台会输出当前鼠标相对于文档左上角的坐标值。

3. screenX和screenY

screenX和screenY属性用来获取事件的触发点相对于屏幕左上角的坐标值。例如下面这个例子:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>screenX和screenY示例</title>
  <style>
    #box {
      width: 200px;
      height: 200px;
      background-color: yellow;
    }
  </style>
  <script>
    window.onload = function() {
      document.getElementById('box').addEventListener('click', function(e) {
        console.log('screenX: ' + e.screenX + ', screenY: ' + e.screenY);
      });
    };
  </script>
</head>
<body>
  <div id="box"></div>
</body>
</html>

当点击黄色的方块时,控制台会输出当前鼠标相对于屏幕左上角的坐标值。

4. offsetX和offsetY

offsetX和offsetY属性用来获取事件的触发点相对于事件源元素的左上角的坐标值。例如下面这个例子:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>offsetX和offsetY示例</title>
  <style>
    #box {
      position: relative;
      width: 200px;
      height: 200px;
      background-color: yellow;
    }
    #inner-box {
      position: absolute;
      top: 50px;
      left: 50px;
      width: 100px;
      height: 100px;
      background-color: blue;
    }
  </style>
  <script>
    window.onload = function() {
      document.getElementById('box').addEventListener('click', function(e) {
        console.log('offsetX: ' + e.offsetX + ', offsetY: ' + e.offsetY);
      });
    };
  </script>
</head>
<body>
  <div id="box">
    <div id="inner-box"></div>
  </div>
</body>
</html>

当在蓝色的方块内部点击时,控制台会输出当前鼠标相对于蓝色方块左上角的坐标值。

5. x和y

x和y属性是IE浏览器专属的属性,用来获取事件的触发点相对于文档左上角的坐标值。在其它浏览器中,可以用pageX和pageY代替。例如下面这个例子:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>x和y示例</title>
  <style>
    #box {
      width: 200px;
      height: 200px;
      background-color: yellow;
    }
  </style>
  <script>
    window.onload = function() {
      document.getElementById('box').addEventListener('click', function(e) {
        console.log('x: ' + (e.x || e.pageX) + ', y: ' + (e.y || e.pageY));
      });
    };
  </script>
</head>
<body>
  <div id="box"></div>
</body>
</html>

不同浏览器表现不一,有的使用x和y属性,有的使用pageX和pageY属性,需要根据实际情况做出调整。

以上就是JS Event对象的5种坐标的详细讲解和两条示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js Event对象的5种坐标 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JavaScript实现页面定时刷新(定时器,meta)

    下面是JavaScript实现页面定时刷新的完整攻略。 一、使用JavaScript定时器实现页面定时刷新 JavaScript定时器是一个非常常见的JavaScript特性,可以让你重复执行一段JavaScript代码片段。结合定时器和location.reload()方法,可以非常简单地实现页面定时刷新。 以下是使用JavaScript定时器实现页面定时…

    JavaScript 2023年6月11日
    00
  • Ajax同步与异步传输的示例代码

    下面我将详细讲解一下“Ajax同步与异步传输的示例代码”的完整攻略。 什么是Ajax? Ajax是指异步JavaScript和XML(Asynchronous JavaScript and XML)的缩写,其主要用于在Web应用程序中实现异步数据交换,从而实现与服务器对数据进行交互而无需刷新整个页面的效果。Ajax避免了传统页面刷新方式在交互效率和用户体验方…

    JavaScript 2023年6月11日
    00
  • javascript字符串拆分成单个字符相加和不超过10,求最终值第1/2页

    针对这个问题,我们可以采用以下方法来拆分和求解字符串中所有单个字符之和: 1. 将字符串拆分成单个字符 利用JavaScript中的split方法,可以将字符串按照指定的分隔符拆分成数组。对于本题,可以按空格分隔,代码如下: var str = "2 7 4 3 0 1 9"; var numArr = str.split(" …

    JavaScript 2023年5月28日
    00
  • javascript浏览器用户代理检测脚本实现方法

    下面是关于“javascript浏览器用户代理检测脚本实现方法”的完整攻略: 什么是浏览器用户代理 在使用浏览器访问网站时,浏览器会发送一个HTTP请求头(HTTP header)给服务器,包含了一些浏览器信息。这个请求头就是所谓的浏览器用户代理(User-Agent),通常包括了浏览器的类型、版本号、操作系统类型等信息。 为什么要检测浏览器用户代理 通过检…

    JavaScript 2023年6月10日
    00
  • 分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容

    这里是分享自定义的console类让JS调试代码更方便的攻略: 1. 创建一个自定义的Console类 创建一个可以封装原生console使其在不同浏览器环境下具有兼容性的类,示例代码如下: class CustomConsole { constructor() { this.logHistory = []; this.registerConsoleMeth…

    JavaScript 2023年6月11日
    00
  • 借助FileReader实现将文件编码为Base64后通过AJAX上传

    这里是借助FileReader实现将文件编码为Base64后通过AJAX上传的完整攻略: 1. 读取文件 首先通过input元素选择上传的文件,使用FileReader的readAsDataURL方法将文件读取为Base64编码的url形式。代码如下: <input type="file" id="file"&g…

    JavaScript 2023年5月19日
    00
  • JS函数this的用法实例分析

    JS函数this的用法实例分析 在JavaScript中,每个函数都有一个被称为this的上下文对象。这个对象是函数的执行环境,这个对象的值取决于函数的调用方式。this的用法是JavaScript中比较棘手的一个话题之一。在本篇文章中,我们将深入研究this的用法,并通过两个实例来帮助读者更好地理解它的使用。 什么是this? 在JavaScript中所有…

    JavaScript 2023年5月27日
    00
  • 原生js封装的ajax方法示例

    这里是“原生js封装的ajax方法示例”的完整攻略: 简介 在前后端分离的现代web开发中,ajax技术得到了广泛应用。ajax可以在不刷新页面的条件下与后台服务器交互,实现了异步加载和动态更新页面的功能。在此过程中,封装一个通用的、可复用的ajax方法是非常必要的。本文将演示如何使用原生的JavaScript来封装一个ajax方法。 实现步骤 1. 按照顺…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部