当前位置:首页 > JavaScript

js实现鼠标滑动

2026-03-01 05:58:43JavaScript

鼠标滑动事件的基本实现

在JavaScript中,鼠标滑动通常通过监听mousemove事件来实现。以下是一个基础示例:

document.addEventListener('mousemove', function(event) {
    console.log(`X: ${event.clientX}, Y: ${event.clientY}`);
});

获取鼠标位置信息

MouseEvent对象包含多个有用的位置属性:

js实现鼠标滑动

  • clientX/clientY:相对于浏览器视口的坐标
  • pageX/pageY:相对于整个文档的坐标
  • screenX/screenY:相对于屏幕的坐标
element.addEventListener('mousemove', (e) => {
    const posX = e.clientX;
    const posY = e.clientY;
    // 使用坐标值进行后续操作
});

实现元素跟随鼠标

创建一个跟随鼠标移动的元素:

js实现鼠标滑动

const follower = document.createElement('div');
follower.style.position = 'fixed';
document.body.appendChild(follower);

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

性能优化方案

对于频繁触发的mousemove事件,可以使用节流(throttle)技术优化性能:

function throttle(func, limit) {
    let lastFunc;
    let lastRan;
    return function() {
        if (!lastRan) {
            func.apply(this, arguments);
            lastRan = Date.now();
        } else {
            clearTimeout(lastFunc);
            lastFunc = setTimeout(() => {
                if ((Date.now() - lastRan) >= limit) {
                    func.apply(this, arguments);
                    lastRan = Date.now();
                }
            }, limit - (Date.now() - lastRan));
        }
    };
}

document.addEventListener('mousemove', throttle(function(e) {
    // 处理逻辑
}, 100));

高级交互示例

实现基于鼠标移动速度改变元素样式的效果:

let lastX, lastY, lastTime;
const element = document.getElementById('target');

document.addEventListener('mousemove', (e) => {
    const now = Date.now();
    const elapsed = now - (lastTime || now);

    if (lastX !== undefined && lastY !== undefined) {
        const distance = Math.sqrt(
            Math.pow(e.clientX - lastX, 2) + 
            Math.pow(e.clientY - lastY, 2)
        );
        const speed = distance / elapsed;

        element.style.transform = `scale(${1 + speed/100})`;
        element.style.opacity = Math.min(1, 1/speed);
    }

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

兼容性注意事项

  1. 对于触摸设备,需要同时考虑touchmove事件
  2. 某些浏览器可能对高频mousemove事件有限制
  3. 使用requestAnimationFrame可以优化动画性能
let mouseX = 0, mouseY = 0;

function updateElementPosition() {
    element.style.left = `${mouseX}px`;
    element.style.top = `${mouseY}px`;
    requestAnimationFrame(updateElementPosition);
}

document.addEventListener('mousemove', (e) => {
    mouseX = e.clientX;
    mouseY = e.clientY;
});

updateElementPosition();

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

相关文章

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…

js实现原理

js实现原理

JavaScript 实现原理 JavaScript 是一种解释型语言,其实现原理涉及多个核心组件和运行机制,包括引擎、运行时环境、事件循环等。 引擎与解释执行 现代 JavaScript 引擎(如…

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…

js 实现全选

js 实现全选

实现全选功能的方法 使用 JavaScript 实现全选功能通常需要操作复选框(checkbox)的状态。以下是几种常见的实现方式。 通过 DOM 操作实现全选 // 获取全选复选框和子复选…