当前位置:首页 > JavaScript

js鼠标事件实现动效

2026-01-31 08:56:43JavaScript

鼠标事件基础

在JavaScript中,常见的鼠标事件包括clickmouseovermouseoutmousemovemousedownmouseup。通过监听这些事件,可以触发不同的动效。

element.addEventListener('mouseover', () => {
  element.style.transform = 'scale(1.1)';
});

鼠标悬停缩放效果

通过mouseovermouseout事件实现悬停缩放效果。结合CSS的transition属性使动画更平滑。

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

鼠标移动跟随效果

利用mousemove事件获取鼠标位置,动态调整元素的位置或样式。

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

鼠标点击涟漪效果

通过mousedown事件触发涟漪动画,动态创建元素并添加CSS动画。

js鼠标事件实现动效

const button = document.querySelector('.ripple-button');
button.addEventListener('mousedown', (e) => {
  const ripple = document.createElement('span');
  ripple.classList.add('ripple');
  ripple.style.left = `${e.offsetX}px`;
  ripple.style.top = `${e.offsetY}px`;
  button.appendChild(ripple);
  setTimeout(() => ripple.remove(), 600);
});

鼠标拖拽效果

结合mousedownmousemovemouseup事件实现拖拽功能。

const draggable = document.querySelector('.draggable');
let isDragging = false;
let offsetX, offsetY;

draggable.addEventListener('mousedown', (e) => {
  isDragging = true;
  offsetX = e.clientX - draggable.getBoundingClientRect().left;
  offsetY = e.clientY - draggable.getBoundingClientRect().top;
});

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

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

鼠标悬停颜色渐变

通过mouseovermouseout事件结合CSS渐变实现颜色过渡。

const card = document.querySelector('.card');
card.addEventListener('mouseover', () => {
  card.style.background = 'linear-gradient(to right, #ff7e5f, #feb47b)';
});
card.addEventListener('mouseout', () => {
  card.style.background = 'linear-gradient(to right, #feb47b, #ff7e5f)';
});

鼠标悬停3D翻转

利用CSS的transformperspective属性,结合鼠标事件实现3D翻转效果。

js鼠标事件实现动效

const flipCard = document.querySelector('.flip-card');
flipCard.addEventListener('mouseover', () => {
  flipCard.style.transform = 'rotateY(180deg)';
  flipCard.style.transition = 'transform 0.6s';
});
flipCard.addEventListener('mouseout', () => {
  flipCard.style.transform = 'rotateY(0deg)';
});

鼠标移动视差效果

通过mousemove事件计算鼠标位置,调整不同图层的移动速度,实现视差效果。

document.addEventListener('mousemove', (e) => {
  const parallaxLayers = document.querySelectorAll('.parallax-layer');
  parallaxLayers.forEach(layer => {
    const speed = layer.getAttribute('data-speed');
    const x = (window.innerWidth - e.pageX * speed) / 100;
    const y = (window.innerHeight - e.pageY * speed) / 100;
    layer.style.transform = `translateX(${x}px) translateY(${y}px)`;
  });
});

鼠标悬停文字阴影

通过mouseovermouseout事件动态添加或移除文字阴影效果。

const text = document.querySelector('.hover-text');
text.addEventListener('mouseover', () => {
  text.style.textShadow = '2px 2px 4px rgba(0, 0, 0, 0.5)';
});
text.addEventListener('mouseout', () => {
  text.style.textShadow = 'none';
});

鼠标悬停SVG路径动画

针对SVG元素,通过鼠标事件触发路径动画或填充变化。

const svgPath = document.querySelector('.svg-path');
svgPath.addEventListener('mouseover', () => {
  svgPath.style.strokeDashoffset = '0';
  svgPath.style.transition = 'stroke-dashoffset 1s ease-in-out';
});
svgPath.addEventListener('mouseout', () => {
  svgPath.style.strokeDashoffset = '1000';
});

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

相关文章

Vue实现鼠标悬浮

Vue实现鼠标悬浮

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

vue 事件实现原理

vue 事件实现原理

Vue 事件实现原理 Vue 的事件系统基于发布-订阅模式,通过 $on、$emit 等方法实现组件间通信。核心原理分为以下几个部分: 事件注册与监听 Vue 实例内部维护一个 _events 对象…

vue点击事件实现跳转

vue点击事件实现跳转

vue点击事件实现跳转 在Vue中实现点击事件跳转可以通过多种方式完成,具体取决于跳转的目标和需求。以下是几种常见的方法: 使用router-link组件 router-link是Vue Rout…

vue点击事件实现隐藏

vue点击事件实现隐藏

实现点击隐藏元素的几种方法 在Vue中实现点击事件隐藏元素,可以通过以下方式实现: 使用v-show指令 通过绑定布尔值控制元素的显示与隐藏,v-show会通过CSS的display属性切换元素可见…

react如何阻止事件冒泡

react如何阻止事件冒泡

阻止事件冒泡的方法 在React中,事件冒泡可以通过调用事件对象的stopPropagation方法来实现。React的事件系统是对原生DOM事件的封装,因此原生事件的方法在React中同样适用。…

react如何解除绑定事件

react如何解除绑定事件

解除绑定事件的方法 在React中,解除事件绑定通常涉及在组件卸载时清理事件监听器。以下是几种常见场景的解决方案: 类组件中的事件解绑 在类组件中,通常在componentWillUnmount生命…