当前位置:首页 > JavaScript

js实现鼠标移动

2026-04-04 03:15:55JavaScript

监听鼠标移动事件

使用 mousemove 事件监听鼠标移动,通过回调函数获取鼠标的坐标信息(clientXclientY)。

document.addEventListener('mousemove', (event) => {
  const x = event.clientX;
  const y = event.clientY;
  console.log(`鼠标位置:X=${x}, Y=${y}`);
});

实时显示鼠标坐标

在页面上动态更新鼠标坐标的显示,例如通过一个 <div> 元素。

const coordDisplay = document.createElement('div');
coordDisplay.style.position = 'fixed';
coordDisplay.style.bottom = '10px';
coordDisplay.style.right = '10px';
document.body.appendChild(coordDisplay);

document.addEventListener('mousemove', (event) => {
  coordDisplay.textContent = `X: ${event.clientX}, Y: ${event.clientY}`;
});

跟随鼠标移动的元素

创建一个元素(如圆形或图标),使其跟随鼠标移动。

const follower = document.createElement('div');
follower.style.width = '20px';
follower.style.height = '20px';
follower.style.backgroundColor = 'red';
follower.style.borderRadius = '50%';
follower.style.position = 'fixed';
follower.style.pointerEvents = 'none'; // 防止遮挡点击事件
document.body.appendChild(follower);

document.addEventListener('mousemove', (event) => {
  follower.style.left = `${event.clientX - 10}px`;
  follower.style.top = `${event.clientY - 10}px`;
});

限制移动范围

通过逻辑判断限制鼠标移动的响应范围,例如仅在特定区域内触发。

const boundary = { minX: 100, maxX: 500, minY: 100, maxY: 500 };

document.addEventListener('mousemove', (event) => {
  const x = Math.max(boundary.minX, Math.min(event.clientX, boundary.maxX));
  const y = Math.max(boundary.minY, Math.min(event.clientY, boundary.maxY));
  console.log(`限制后坐标:X=${x}, Y=${y}`);
});

性能优化

使用防抖(debounce)或节流(throttle)减少事件触发频率,避免高频更新导致的性能问题。

function throttle(callback, delay) {
  let lastCall = 0;
  return function(...args) {
    const now = new Date().getTime();
    if (now - lastCall >= delay) {
      callback(...args);
      lastCall = now;
    }
  };
}

document.addEventListener('mousemove', throttle((event) => {
  console.log(`节流坐标:X=${event.clientX}, Y=${event.clientY}`);
}, 100));

兼容性处理

检查浏览器是否支持 mousemove 事件,并提供备用方案(如触摸事件)。

js实现鼠标移动

if ('onmousemove' in window) {
  document.addEventListener('mousemove', handleMove);
} else {
  console.warn('mousemove 事件不支持');
}

标签: 鼠标js
分享给朋友:

相关文章

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: fun…