使用 JavaScript 将鼠标指针移动到特定位置
请注意
,无法将鼠标指针移动到 JavaScript 中的特定位置。 主要原因是它会给用户带来安全问题并损害用户体验。
在这篇文章中,我们将创建一个假的或自定义的鼠标指针,它可能看起来类似于默认系统的鼠标指针,然后我们将使用 JavaScript 将其位置移动到不同的位置。 这种将鼠标指针移动到特定位置的技术用于演示目的,应在生产就绪网站上完全避免。
使用一些 CSS 样式创建基本的 HTML 结构
我们将在屏幕上创建两个按钮(一个在屏幕左侧,另一个在屏幕右侧),我们的目标是当我们点击第一个按钮时,鼠标指针会自动移动到屏幕上的第二个按钮上 屏幕。
首先,我们在 HTML 中创建两个 HTML 元素,一个是 img 标签,另一个是 div 元素。 img 标签将包含我们将用来代替原始系统鼠标光标的自定义或假光标的图像。
您可以使用您想要从互联网上获得的任何鼠标光标图像。 div 将有两个按钮,“按钮 1”和“按钮 2”。
我们还将为所有这些元素提供一个 id,以便我们可以在 JavaScript 中引用它们并在 CSS 中设置它们的样式。
代码片段 - HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Move mouse pointer</title>
<style>
* {
cursor: none;
}
.block{
display: flex;
justify-content: space-between;
}
img {
pointer-events: none;
position: absolute;
}
</style>
</head>
<body>
<img id="cursor" src="./mouse_cursor.png" width="16" height="22" />
<div class="block">
<button id="btn1">Button 1</button>
<button id="btn2">Button 2</button>
</div>
</body>
</html>
在 CSS 内部,我们借助 cursor: none 星号 (*
) 内的 CSS 属性,也称为 CSS 通用选择器,将原始系统的鼠标指针从整个页面中隐藏起来。 然后我们将向 div 元素添加一个 flexbox,以便它们之间可以有一个空格。
在 img 标签上,我们的自定义光标将添加 pointer-events: none 属性,这样就不会对其应用任何指针事件。 您可以在 MDN 上了解有关指针事件的更多信息,我们会将其设为绝对事件,以便我们可以将其移动到屏幕上的任何位置。
使用 JavaScript 将鼠标指针移动到特定位置
现在让我们使用 JavaScript 实现它的功能。 首先,我们将使用 JavaScript 中的 getElementById()
方法获取所有光标元素 btn1 和 btn2。
由于我们要将鼠标光标移动到特定位置,在这种情况下,在按钮 2 上,我们首先必须抓取按钮 2 的位置(左、上、宽、高),这样当我们点击按钮 1 时, 鼠标指针将自动移动到按钮 2。
为此,我们将在 btn2 上使用 getBoundingClientRect()
方法,这将为我们提供一个包含各种位置和尺寸的对象,如左、上、下、宽、高等,我们将把这个对象存储在一个 称为 rect 的变量。 然后我们会计算按钮2的finalPositionX和finalPositionY,这样我们在点击按钮1的时候就可以将鼠标指针指向按钮2的中心。
我们的自定义鼠标指针不会在屏幕上的这个位置移动。 要让它在浏览器上自由移动,我们必须给窗口对象添加一个事件监听器。
这个方法有两个参数,第一个是我们要执行函数的事件类型,第二个是触发该事件时将执行的函数本身。
因为我们想要移动我们的自定义鼠标指针,我们将使用 mousemove 事件作为我们的第一个参数,然后在我们的回调函数中,我们将获取 clientX 和 clientY 坐标,然后我们将它分配给 left 和 top 我们的自定义鼠标指针的位置如下所示。
不要忘记在它的末尾添加“px”; 否则,它不会工作。
代码片段 - JavaScript:
let cursor = document.getElementById("cursor");
let btn1 = document.getElementById("btn1");
let btn2 = document.getElementById("btn2");
let rect = btn2.getBoundingClientRect();
let finalPositionX = rect.left + rect.width/2;
let finalPositionY = rect.top + rect.height/2;
// Moving our custom mouse pointer
window.addEventListener("mousemove", (e) => {
x = e.clientX;
y = e.clientY;
cursor.style.left = x + "px";
cursor.style.top = y + "px";
});
btn1.addEventListener("mouseup", (e) => {
cursor.style.left = finalPositionX + "px";
cursor.style.top = finalPositionY + "px";
})
在此阶段,自定义鼠标光标将像普通鼠标光标一样移动。 现在我们将自定义鼠标光标移动到特定位置。
为此,我们将在 btn1 上添加一个 mouseup 事件,然后使用 finalPositionX 和 finalPositionY 位置设置鼠标光标的左侧和顶部位置。
输出:
总结
没有使用 JavaScript 更改鼠标位置的直接方法,因为它有一些缺陷。 但是在编程中总是有不同的和非官方的做事方式。
要解决鼠标指针移动到特定位置的问题,我们必须隐藏原来的鼠标指针。 然后,我们有两个创建我们的自定义鼠标指针并编写一些 JavaScript 代码使其移动到特定位置。
相关文章
JavaScript 异步 forEach
发布时间:2023/06/06 浏览次数:200 分类:JavaScript
-
在本篇文章中,我们将看看我们是否可以在 JavaScript 的 forEach 循环中使用异步。 有哪些选择?JavaScript 中的异步 forEach 异步编程不适用于 Array.prototype.forEach。
JavaScript 中 URL 解码
发布时间:2023/06/06 浏览次数:118 分类:JavaScript
-
本文着眼于 URL 解码以及如何使用 JavaScript 对编码的 URL 进行解码。需要URL编解码。JavaScript 中的 URL 解码。在 JavaScript 中,可以通过三种方法对编码的 URL 进行解码。
如何在 JavaScript 中生成 PDF
发布时间:2023/06/06 浏览次数:145 分类:JavaScript
-
在本文中,我们将学习用 JavaScript 创建 PDF 的有效方法。 在示例的帮助下,我们将了解 JavaScript 中有哪些可用的库来创建 PDF。
在 JavaScript 中使用种子生成随机数
发布时间:2023/06/06 浏览次数:182 分类:JavaScript
-
本文介绍如何使用种子在 JavaScript 中生成随机数。 我们实现这一点要归功于 PRNG,它接受一个种子并返回一个基于该种子的随机数。
JavaScript += 的效果
发布时间:2023/06/06 浏览次数:152 分类:JavaScript
-
本篇文章将介绍 JavaScript += 在以下情况下的效果。JavaScript 加上数字之间的相等 ;JavaScript 加上字符串之间相等 ;JavaScript 在数字和字符串之间加上相等
JavaScript 电话号码格式
发布时间:2023/06/06 浏览次数:181 分类:JavaScript
-
在本文中,我们将了解在 JavaScript 源代码中格式化电话号码的最佳方式,以及在我们的 JavaScript 代码中格式化数字的好处。JavaScript 中的电话号码格式 在 JavaScript 中,我们有多个选项可以有效地
JavaScript 中的图像加载事件
发布时间:2023/06/05 浏览次数:154 分类:JavaScript
-
本文将讨论如何在 JavaScript 中处理 .onload 事件。 我们将学习如何在上传图像后使用 JavaScript 创建警告框。我们还将了解如何通过创建警告框使用 JavaScript 检查图像是否已加载。JavaScript 中的 .
JavaScript 删除所有事件监听器
发布时间:2023/06/05 浏览次数:84 分类:JavaScript
-
本篇文章将介绍如何删除 JavaScript 中的所有事件侦听器。移除 JavaScript 中的所有事件监听器 EventTarget 接口的 addEventListener() 方法配置一个函数,只要指定的事件被传递到目标,就会调用该函数。
JavaScript 中事件冒泡和捕获的区别
发布时间:2023/06/05 浏览次数:54 分类:JavaScript
-
本文将讨论在 JavaScript 中使用的事件冒泡和事件捕获。 阅读本文后,您将清楚地了解 JavaScript 中的事件冒泡和捕获。