当前位置:首页 > JavaScript

js实现鼠标滑动

2026-04-04 06:34:37JavaScript

鼠标滑动事件监听

通过mousemove事件监听鼠标滑动,获取实时坐标:

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

元素跟随鼠标移动

实现DOM元素跟随鼠标移动的效果:

const follower = document.getElementById('follower');
document.addEventListener('mousemove', (e) => {
  follower.style.transform = `translate(${e.clientX}px, ${e.clientY}px)`;
});

滑动速度计算

基于时间差计算鼠标移动速度:

let lastTime = 0;
let lastX = 0;
let lastY = 0;

document.addEventListener('mousemove', (e) => {
  const now = Date.now();
  const deltaTime = now - lastTime;
  const deltaX = e.clientX - lastX;
  const deltaY = e.clientY - lastY;

  const speedX = deltaX / deltaTime * 1000;
  const speedY = deltaY / deltaTime * 1000;

  lastX = e.clientX;
  lastY = e.clientY;
  lastTime = now;

  console.log(`Speed: X=${speedX.toFixed(2)}px/s, Y=${speedY.toFixed(2)}px/s`);
});

滑动方向判断

判断鼠标移动的八个主要方向:

let prevX = 0;
let prevY = 0;

document.addEventListener('mousemove', (e) => {
  const directionX = e.clientX > prevX ? 'right' : 'left';
  const directionY = e.clientY > prevY ? 'down' : 'up';

  prevX = e.clientX;
  prevY = e.clientY;

  console.log(`Direction: ${directionX}-${directionY}`);
});

滑动轨迹记录

记录并绘制鼠标轨迹:

const path = [];
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');

document.addEventListener('mousemove', (e) => {
  path.push({ x: e.clientX, y: e.clientY });

  ctx.clearRect(0, 0, canvas.width, canvas.height);
  ctx.beginPath();
  path.forEach((point, i) => {
    if (i === 0) ctx.moveTo(point.x, point.y);
    else ctx.lineTo(point.x, point.y);
  });
  ctx.stroke();
});

性能优化建议

对于高频次触发的mousemove事件,建议使用节流函数控制执行频率:

js实现鼠标滑动

function throttle(fn, delay) {
  let lastCall = 0;
  return function(...args) {
    const now = Date.now();
    if (now - lastCall >= delay) {
      fn.apply(this, args);
      lastCall = now;
    }
  };
}

document.addEventListener('mousemove', throttle((e) => {
  // 处理逻辑
}, 16)); // 约60fps

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

相关文章

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…