当前位置:首页 > JavaScript

js鼠标事件实现动效

2026-04-05 00:56:07JavaScript

鼠标事件基础

鼠标事件是JavaScript中实现交互效果的核心,常用事件包括clickmouseovermouseoutmousemovemousedownmouseup等。通过监听这些事件,可以触发CSS或JavaScript动画。

监听鼠标事件

通过addEventListener绑定事件,例如实现元素悬停放大效果:

const box = document.querySelector('.box');
box.addEventListener('mouseover', () => {
  box.style.transform = 'scale(1.2)';
  box.style.transition = 'transform 0.3s ease';
});
box.addEventListener('mouseout', () => {
  box.style.transform = 'scale(1)';
});

结合CSS过渡

通过CSS定义动画属性,JavaScript仅控制状态变化:

.box {
  transition: all 0.3s ease;
}
box.addEventListener('mouseenter', () => {
  box.classList.add('hover-effect');
});
box.addEventListener('mouseleave', () => {
  box.classList.remove('hover-effect');
});

拖拽效果实现

利用mousedownmousemovemouseup实现拖拽:

let isDragging = false;
box.addEventListener('mousedown', (e) => {
  isDragging = true;
  const offsetX = e.clientX - box.getBoundingClientRect().left;
  const offsetY = e.clientY - box.getBoundingClientRect().top;

  document.addEventListener('mousemove', (e) => {
    if (!isDragging) return;
    box.style.left = `${e.clientX - offsetX}px`;
    box.style.top = `${e.clientY - offsetY}px`;
  });

  document.addEventListener('mouseup', () => {
    isDragging = false;
  });
});

鼠标跟随特效

通过mousemove事件获取光标位置,动态调整元素样式:

document.addEventListener('mousemove', (e) => {
  const x = e.clientX;
  const y = e.clientY;
  const follower = document.querySelector('.follower');
  follower.style.left = `${x + 10}px`;
  follower.style.top = `${y + 10}px`;
});

高级动画库结合

使用GSAP或Anime.js增强效果,例如实现弹性跟随:

gsap.to('.follower', {
  x: mouseX,
  y: mouseY,
  duration: 0.5,
  ease: 'elastic.out(1, 0.3)'
});

性能优化

减少mousemove事件的计算负担,使用requestAnimationFrame或节流函数:

js鼠标事件实现动效

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(updatePosition, 16));

标签: 鼠标事件
分享给朋友:

相关文章

jquery点击事件

jquery点击事件

jQuery 点击事件基础用法 使用 jQuery 绑定点击事件主要通过 .click() 方法或 .on() 方法实现。以下示例展示如何为按钮添加点击事件: // 方法1: 使用 .click()…

jquery事件绑定

jquery事件绑定

jQuery 事件绑定的基本方法 使用 on() 方法绑定事件是最推荐的方式,兼容性强且支持动态元素。语法如下: $(selector).on(eventName, handlerFunction)…

Vue实现鼠标悬浮

Vue实现鼠标悬浮

鼠标悬浮效果实现方法 在Vue中实现鼠标悬浮效果可以通过多种方式完成,以下是几种常见方法: 使用v-on指令绑定事件 通过@mouseenter和@mouseleave事件可以实现悬浮效果 <…

vue实现拖拽事件

vue实现拖拽事件

Vue 实现拖拽事件的方法 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 dr…

vue实现事件委托

vue实现事件委托

事件委托的概念 事件委托是一种利用事件冒泡机制的技术,将子元素的事件监听绑定到父元素上,通过事件目标(event.target)判断实际触发事件的子元素,从而减少事件监听器的数量,提升性能。 Vue…

vue实现事件绑定

vue实现事件绑定

Vue 事件绑定实现方法 Vue 提供了多种方式实现事件绑定,以下是常用方法: v-on 指令 使用 v-on 指令绑定事件监听器,语法为 v-on:event="handler" 或简写为 @ev…