当前位置:首页 > 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元素跟随鼠标移动的效果:

js实现鼠标滑动

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`);
});

滑动方向判断

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

js实现鼠标滑动

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事件,建议使用节流函数控制执行频率:

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实现拖拽

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

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…