首页 > 其他分享 >使用js获取鼠标坐标

使用js获取鼠标坐标

时间:2024-11-30 10:04:50浏览次数:5  
标签:const 鼠标 js 坐标 document event 页面

// 获取鼠标坐标有两种主要方式,取决于你想获取相对于什么位置的坐标:

// 1. 相对于视口 (viewport) 的坐标:

document.addEventListener('mousemove', function(event) {
  const x = event.clientX;
  const y = event.clientY;

  // 使用 x 和 y 坐标,例如显示在页面上
  console.log(`视口坐标:X: ${x}, Y: ${y}`);
  // 或更新页面元素的位置
  // document.getElementById('mouse-coords').textContent = `X: ${x}, Y: ${y}`;
});


// 2. 相对于文档 (document) 的坐标:

document.addEventListener('mousemove', function(event) {
  const x = event.pageX;
  const y = event.pageY;

  // 使用 x 和 y 坐标
  console.log(`文档坐标:X: ${x}, Y: ${y}`);
});


// 3. 相对于特定元素的坐标:

const myElement = document.getElementById('my-element'); // 获取目标元素

myElement.addEventListener('mousemove', function(event) {
  const x = event.offsetX;
  const y = event.offsetY;

  // 使用 x 和 y 坐标
  console.log(`相对于 my-element 的坐标:X: ${x}, Y: ${y}`);
});



//  完整示例 (显示在页面上):

<!DOCTYPE html>
<html>
<head>
<title>鼠标坐标</title>
<style>
body { margin: 0; }
#mouse-coords {
  position: fixed;
  top: 10px;
  left: 10px;
  background-color: rgba(0, 0, 0, 0.5);
  color: white;
  padding: 5px 10px;
  border-radius: 5px;
}
#my-element {
  width: 200px;
  height: 100px;
  background-color: lightblue;
  margin: 50px auto;
}
</style>
</head>
<body>

<div id="mouse-coords"></div>
<div id="my-element"></div>

<script>
  const coordsDisplay = document.getElementById('mouse-coords');
  const myElement = document.getElementById('my-element');

  document.addEventListener('mousemove', (event) => {
    coordsDisplay.textContent = `视口坐标:X: ${event.clientX}, Y: ${event.clientY}`;
  });

  myElement.addEventListener('mousemove', (event) => {
    console.log(`相对于 my-element 的坐标:X: ${event.offsetX}, Y: ${event.offsetY}`);
  });

</script>

</body>
</html>

解释:

  • event.clientXevent.clientY: 获取鼠标指针相对于浏览器视口 (viewport) 的 x 和 y 坐标。 视口是指浏览器窗口中当前可见的区域。 如果页面滚动,这些坐标不会改变。

  • event.pageXevent.pageY: 获取鼠标指针相对于整个文档的 x 和 y 坐标。 这包含了滚动条滚动的距离。 如果页面向下滚动 100px,pageY 就会比 clientY 大 100。

  • event.offsetXevent.offsetY: 获取鼠标指针相对于触发事件的特定元素的 x 和 y 坐标。 例如,如果事件发生在一个 <div> 元素内,这些坐标就是相对于 <div> 左上角的。

选择哪种方法?

选择哪种方法取决于你的需求:

  • 需要相对于浏览器窗口定位元素,使用 clientXclientY
  • 需要考虑页面滚动,使用 pageXpageY
  • 需要相对于特定元素内部的定位,使用 offsetXoffsetY

这个更完整的示例包含了如何在页面上显示坐标,以及如何获取相对于特定元素的坐标,方便你更好地理解和应用。 记得根据你的具体需求选择正确的方法。

标签:const,鼠标,js,坐标,document,event,页面
From: https://www.cnblogs.com/ai888/p/18578073

相关文章

  • js依赖注入的实现思路是什么?它有什么优缺点呢?
    JavaScript依赖注入的实现思路核心在于将组件的依赖关系从组件内部转移到外部,由外部负责创建和提供依赖。这实现了控制反转(InversionofControl,IoC),降低了组件之间的耦合度,提高了代码的可测试性、可维护性和可重用性。以下是几种常见的JavaScript依赖注入实现思路:构造......
  • 用js实现动态改变根元素字体大小的方法
    functionchangeRootFontSize(fontSize){//Method1:Using`document.documentElement.style.fontSize`document.documentElement.style.fontSize=fontSize;//Method2:Using`:root`CSSvariableand`setProperty`(moreflexible)//Thisallowsyou......
  • uni-app vue3 获取 package.json 自定义环境变量
    一、初始化项目 二、添加 package.json 文件(必须)注意:文件里面不要写备注{ "uni-app":{ "scripts":{ "dev":{ "title":"开发版", "env":{ "ENV_TYPE":"dev", "UNI_PLATFORM&q......
  • JSR303统一校验
    1、简介jsr是JavaSpecificationRequests的缩写,意思是java的请求规范。周志明老师的书上还着重介绍过jsr292(jvm多语言支持包括Kotlin,Clojure,JRuby,Scala等)。JSR303着重参数校验功能,点开javax.validation.constraints,可以看到已经封装好的注解有这些:使用jsr303规范......
  • 说说你对js排序的理解,你有了解哪些算法呢?
    我对JavaScript排序的理解是,它主要用于对数组中的元素进行排序,使其按照一定的顺序排列,比如升序或降序。JavaScript提供了内置的sort()方法来实现排序,同时也允许开发者自定义排序逻辑。我了解以下几种JavaScript排序算法:1.内置sort()方法:JavaScript的sort()方法默......
  • nvm安装详细教程(卸载旧的nodejs,安装nvm、node、npm、cnpm、yarn及环境变量配置)
    注意:1、安装nvm之前需要卸载之前的nodejs,并且还要删除之前的环境变量配置,否则会出现一些奇怪的问题2、nvm的安装路径不能有中文或者空格,否则后面在cmd中切换node版本会出现乱码 一、完全卸载旧的nodejs参考文章《Node卸载超详细步骤》1、打开系统的控制面板,点击卸载程序,卸......
  • #Js篇: 链式判断运算符 ?.和Null判断运算符 ??和逻辑赋值运算符||= &&= ??=
    链式判断运算符?.?.运算符,直接在链式调用的时候判断,左侧的对象是否为null或undefined。如果是的,就不再往下运算,而是返回undefined。链判断运算符?.有三种写法。obj?.prop//对象属性是否存在obj?.[expr]//同上func?.(…args)//函数或对象方法是否存在下面是obj?......
  • json-rules-engine engine 简单说明
    engine包含了存储,执行规则,提交事件以及维护状态,比如添加以及一处fact,添加、删除、更新rule,同时还包含添加operator,添加以及维护conddition执行//runtheengineawaitengine.run()//withconstantfactsawaitengine.run({userId:1})const{results,//r......
  • JAVA开源毕业设计 课程智能组卷系统 Vue.JS+SpringBoot+MySQL
    本文项目编号T009,文末自助获取源码\color{red}{T009,文末自助获取源码}......
  • JAVA开源毕业设计 医院电子病历管理系统 Vue.JS+SpringBoot+MySQL
    本文项目编号T008,文末自助获取源码\color{red}{T008,文末自助获取源码}......