js Event对象的5种坐标

yizhihongxing

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日

相关文章

  • 纯js实现的积木(div层)拖动功能示例

    下面是详细的攻略: 1. 概述 本攻略将详细讲解如何实现“纯js实现的积木(div层)拖动功能示例”。实现过程包括以下几个步骤: 设置div元素的拖动属性; 监听鼠标事件; 计算鼠标相对于被拖动元素的偏移量; 根据鼠标移动的位置,对被拖动元素进行实时更新位置; 实现停止拖拽功能。 2. 操作步骤 步骤一:设置div元素的拖动属性 在HTML代码中,我们需要将…

    JavaScript 2023年5月28日
    00
  • JavaScript中eval和with语句如何影响作用域链的深度探索

    让我详细讲解一下“JavaScript中eval和with语句如何影响作用域链的深度探索”。 什么是作用域链 在深入探索eval和with语句影响作用域链之前,我们需要了解一下什么是作用域链。 作用域链是JavaScript中的一个重要概念,它是一种链式结构,用于描述变量和函数的可见性和访问性。当我们访问一个变量或函数时,JavaScript引擎首先在当前作…

    JavaScript 2023年6月11日
    00
  • quickjs 封装 JavaScript 沙箱详情

    下面我将详细讲解如何封装JavaScript沙箱并提供两个实例说明。 QuickJS 封装 JavaScript 沙箱 前置要求 在开始封装JavaScript沙箱前,我们需要了解以下知识: QuickJS: 一款高效的Javascript引擎 沙箱: 限制JavaScript执行环境,避免恶意代码执行或获取主程序敏感信息 思路与方案 为了实现封装JavaS…

    JavaScript 2023年6月10日
    00
  • HTML DOM setInterval和clearInterval方法案例详解

    下面我将详细讲解“HTML DOM setInterval和clearInterval方法案例详解”的完整攻略。 1. 回顾setInterval和clearInterval的概念 在深入讲解之前,我们需要先了解setInterval和clearInterval两个函数的基本概念。 setInterval:可以重复执行一个函数或一段代码,在规定的时间间隔内不…

    JavaScript 2023年6月11日
    00
  • JS实现两周内自动登录功能

    实现两周内自动登录的功能需要涉及到一些技术点,下面是完整的攻略: 技术点 Cookie / LocalStorage:用于保存登录状态和用户信息,以及判断用户是否已登录。 路由拦截:在用户未登录的情况下,将其重定向至登录页面。可以通过 Vue Router 的全局前置守卫实现。 Token 认证:为了保证用户信息的安全性,一般需要在后台生成一个 Token,…

    JavaScript 2023年6月11日
    00
  • JavaScript更改字符串的大小写

    当在JavaScript中处理字符串时,更改字符串的大小写是一个常见的操作。JavaScript提供了多种方法来修改字符串的大小写,包括toUpperCase()和toLowerCase()方法。 toUpperCase()方法 toUpperCase()方法将字符串中的所有字符转换为大写字母并返回新的字符串,原始字符串保持不变。 以下代码演示了如何使用to…

    JavaScript 2023年5月28日
    00
  • 利用jQuery.Validate异步验证用户名是否存在(推荐)

    这里是利用 jQuery.Validate 异步验证用户名是否存在的攻略。在这个攻略中,我们将会使用到 jQuery、jQuery.Validate 和 AJAX 技术。 简介 为了提高用户体验和安全性,我们需要在网站的注册和登录页面上添加对用户名的合法性验证,例如:长度、唯一性等。 在这个过程中,我们可以使用一些前端框架和插件来把这些验证工作变得更加简单。…

    JavaScript 2023年6月10日
    00
  • 基于JavaScript创建动态Dom

    创建动态 DOM 可以通过多种方式,其中一种方法是使用 JavaScript。下面是基于 JavaScript 创建动态 DOM 的完整攻略,包含两条示例说明。 1. 在 HTML 中创建容器元素 首先,在 HTML 页面中创建一个空的容器元素,该元素的 id 属性可以用于后续操作。例如: <!DOCTYPE html> <html>…

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