当前位置:首页 > JavaScript

js怎么实现抖动

2026-04-04 15:44:52JavaScript

JavaScript 实现抖动效果

抖动效果(Shake Effect)通常用于吸引用户注意力或提示错误操作。以下是几种实现方法:

使用 CSS 动画

通过 CSS 定义抖动动画,再用 JavaScript 触发:

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

@keyframes shake {
  0%, 100% { transform: translateX(0); }
  10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); }
  20%, 40%, 60%, 80% { transform: translateX(5px); }
}
function shakeElement(element) {
  element.classList.add('shake');
  setTimeout(() => element.classList.remove('shake'), 500);
}

纯 JavaScript 实现

通过定时器动态修改元素位置:

function shake(element, intensity = 5, duration = 500) {
  const startTime = Date.now();
  const interval = setInterval(() => {
    const elapsed = Date.now() - startTime;
    const progress = elapsed / duration;

    if (progress >= 1) {
      clearInterval(interval);
      element.style.transform = '';
      return;
    }

    const shakeX = intensity * Math.sin(progress * 20) * (1 - progress);
    element.style.transform = `translateX(${shakeX}px)`;
  }, 16);
}

使用第三方库

使用 jQuery 实现抖动效果:

$.fn.shake = function() {
  this.css('position','relative');
  for(let x = 1; x <= 3; x++) {
    this.animate({left: -5}, 50)
      .animate({left: 0}, 50)
      .animate({left: 5}, 50)
      .animate({left: 0}, 50);
  }
};

应用场景示例

表单验证失败时抖动输入框:

document.querySelector('form').addEventListener('submit', (e) => {
  const input = document.querySelector('#username');
  if (!input.value) {
    shake(input);
    e.preventDefault();
  }
});

性能优化建议

使用 transform 而非 left/top 进行动画,因为 transform 不会触发重排。对于频繁触发的抖动效果,建议使用 CSS 硬件加速:

js怎么实现抖动

.shake {
  will-change: transform;
  backface-visibility: hidden;
  perspective: 1000px;
}

以上方法可根据具体需求选择,CSS 动画实现最简单,纯 JavaScript 方案最灵活,第三方库适合已有 jQuery 的项目。

标签: js
分享给朋友:

相关文章

js如何实现继承

js如何实现继承

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

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js实现排序

js实现排序

数组排序方法 JavaScript提供了内置的sort()方法用于数组排序。默认情况下,sort()将元素转换为字符串并按照Unicode码点排序。对于数字排序,需传入比较函数。 const num…

js实现复制功能实现

js实现复制功能实现

使用document.execCommand方法(传统方式,已逐渐被弃用) 传统方式通过document.execCommand('copy')实现复制功能,需先选中文本。以下是一个完整示例: fu…