当前位置:首页 > JavaScript

js实现窗口抖动

2026-03-16 04:20:43JavaScript

实现窗口抖动效果

窗口抖动效果可以通过CSS动画结合JavaScript实现。以下是两种常见方法:

方法一:使用CSS动画和JavaScript触发

定义抖动动画关键帧,通过JavaScript添加/移除类名触发动画。

.shake {
  animation: shake 0.5s cubic-bezier(.36,.07,.19,.97) both;
}

@keyframes shake {
  10%, 90% { transform: translate3d(-1px, 0, 0); }
  20%, 80% { transform: translate3d(2px, 0, 0); }
  30%, 50%, 70% { transform: translate3d(-4px, 0, 0); }
  40%, 60% { transform: translate3d(4px, 0, 0); }
}
function shakeElement(element) {
  element.classList.add('shake');
  element.addEventListener('animationend', () => {
    element.classList.remove('shake');
  }, {once: true});
}

// 使用示例
const windowElement = document.documentElement;
shakeElement(windowElement);

方法二:纯JavaScript实现

通过定时器连续修改元素位置实现抖动效果。

function shakeWindow(intensity = 5, duration = 500) {
  const startTime = Date.now();
  const originalPosition = window.scrollX;

  function updateShake() {
    const elapsed = Date.now() - startTime;
    if (elapsed >= duration) {
      window.scrollTo(originalPosition, window.scrollY);
      return;
    }

    const progress = elapsed / duration;
    const currentIntensity = intensity * (1 - progress);
    const offset = Math.random() * currentIntensity * 2 - currentIntensity;
    window.scrollTo(originalPosition + offset, window.scrollY);
    requestAnimationFrame(updateShake);
  }

  updateShake();
}

// 使用示例
shakeWindow(10, 700);

方法三:jQuery简化实现

如果项目中已使用jQuery,可以简化实现过程。

js实现窗口抖动

function shakeWindow() {
  $('html, body')
    .animate({left: '-=10px'}, 50)
    .animate({left: '+=20px'}, 100)
    .animate({left: '-=20px'}, 100)
    .animate({left: '+=20px'}, 100)
    .animate({left: '-=10px'}, 50);
}

// 使用示例
shakeWindow();

注意事项

  • 方法一性能最佳,推荐优先使用CSS动画方案
  • 抖动强度可通过修改translate3d值或intensity参数调整
  • 移动端使用时注意性能影响
  • 避免在用户交互过程中频繁触发抖动效果

标签: 窗口js
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <htm…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…