当前位置:首页 > 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实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

实现图片旋转js

实现图片旋转js

使用CSS transform属性旋转图片 通过CSS的transform属性可以轻松实现图片旋转。以下是一个简单的示例代码: const image = document.getElement…

js 实现超链接

js 实现超链接

使用 HTML 的 <a> 标签 在 JavaScript 中动态创建超链接可以通过操作 DOM 实现。通过 document.createElement 创建一个 <a> 元…

js实现递归

js实现递归

递归的基本概念 递归是一种通过函数调用自身来解决问题的方法。在JavaScript中,递归通常用于处理具有重复子问题或分治结构的数据,例如树形结构、阶乘计算等。 递归的实现要点 基线条件(Base…

vue js 实现排序

vue js 实现排序

Vue.js 实现排序的方法 在 Vue.js 中实现排序可以通过多种方式完成,包括使用计算属性、方法或直接操作数据。以下是几种常见的实现方式: 使用计算属性排序 计算属性可以自动响应数据变化并重新…

js实现vue弹窗

js实现vue弹窗

实现 Vue 弹窗的基本方法 使用 Vue.js 实现弹窗功能可以通过组件化方式完成。以下是一个简单的弹窗实现示例,包含显示/隐藏控制、内容插槽和基础样式。 弹窗组件代码 创建 Modal.vue…