当前位置:首页 > JavaScript

js实现图片抖动效果

2026-03-01 08:41:03JavaScript

使用CSS动画实现图片抖动

通过CSS的@keyframes定义抖动动画,结合transform属性实现位移效果。将动画应用到图片元素上即可。

@keyframes shake {
  0%, 100% { transform: translateX(0); }
  10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); }
  20%, 40%, 60%, 80% { transform: translateX(5px); }
}

.shake-image {
  animation: shake 0.5s infinite;
}
<img src="image.jpg" class="shake-image">

使用JavaScript触发CSS动画

通过动态添加/移除CSS类控制抖动效果,适合需要交互触发的场景。

js实现图片抖动效果

const img = document.querySelector('img');
img.addEventListener('click', () => {
  img.classList.add('shake-image');
  setTimeout(() => img.classList.remove('shake-image'), 500);
});

纯JavaScript实现抖动

通过定时器动态修改图片位置,实现更灵活的抖动控制。

js实现图片抖动效果

function shakeImage(element, duration = 500, distance = 5) {
  const startTime = Date.now();
  const originalPosition = element.style.position || 'static';
  element.style.position = 'relative';

  function update() {
    const elapsed = Date.now() - startTime;
    if (elapsed >= duration) {
      element.style.left = '0';
      element.style.position = originalPosition;
      return;
    }

    const progress = elapsed / duration;
    const offset = Math.sin(progress * 20) * distance * (1 - progress);
    element.style.left = `${offset}px`;
    requestAnimationFrame(update);
  }

  update();
}

// 使用示例
const img = document.querySelector('img');
img.addEventListener('click', () => shakeImage(img));

使用GSAP库实现高级抖动

GreenSock Animation Platform (GSAP)提供更强大的动画控制能力。

// 引入GSAP库后
gsap.to(".shake-image", {
  x: 10,
  duration: 0.1,
  repeat: 5,
  yoyo: true,
  ease: "power1.inOut"
});

响应式抖动效果

根据设备特性调整抖动幅度,避免移动端显示问题。

function responsiveShake(element) {
  const isMobile = window.innerWidth < 768;
  const distance = isMobile ? 3 : 8;
  shakeImage(element, 600, distance);
}

每种方法适用于不同场景:CSS动画适合简单静态效果,JavaScript实现适合需要精确控制的场景,GSAP适合复杂动画序列。根据项目需求选择合适方案,注意性能优化和用户体验平衡。

标签: 效果图片
分享给朋友:

相关文章

vue 实现图片

vue 实现图片

Vue 实现图片加载与展示的方法 在 Vue 中实现图片加载和展示可以通过多种方式完成,以下是一些常见的方法: 使用 v-bind 绑定图片路径 通过 v-bind(或简写为 :)动态绑定图片的…

vue实现图片

vue实现图片

Vue 实现图片展示的方法 在 Vue 中实现图片展示可以通过多种方式完成,以下是一些常见的方法: 使用 img 标签直接引入 通过 img 标签的 src 属性直接引入本地或远程图片: &l…

jquery效果

jquery效果

jQuery 动画效果 jQuery 提供了多种内置动画效果,可用于实现平滑的页面交互。常用的方法包括 show()、hide()、toggle()、fadeIn()、fadeOut()、slideU…

vue实现基金效果

vue实现基金效果

Vue 实现基金效果 在 Vue 中实现基金效果,通常指的是模拟基金的增长、波动或可视化展示。以下是几种常见的实现方式: 数据绑定与动态更新 通过 Vue 的数据绑定特性,可以动态展示基金净值的变…

vue效果实现

vue效果实现

Vue 效果实现方法 Vue.js 提供了多种方式实现动态效果,包括过渡动画、状态驱动的 UI 变化以及第三方动画库集成。以下是常见效果的实现方案: 过渡动画 使用 Vue 内置的 <tra…

vue实现无缝图片

vue实现无缝图片

实现无缝图片轮播的方法 在Vue中实现无缝图片轮播,可以通过以下步骤完成。这种方法利用Vue的响应式特性和CSS动画,确保图片切换平滑且无缝。 使用vue-awesome-swiper库 安装vue…