当前位置:首页 > JavaScript

js实现摇摆

2026-03-14 06:38:10JavaScript

实现摇摆动画的 JavaScript 方法

使用 CSS 动画结合 JavaScript 触发

通过定义 CSS 关键帧动画实现摇摆效果,JavaScript 用于动态添加或移除动画类。CSS 部分定义 @keyframes,例如:

@keyframes swing {
  0% { transform: rotate(0deg); }
  20% { transform: rotate(15deg); }
  40% { transform: rotate(-10deg); }
  60% { transform: rotate(5deg); }
  80% { transform: rotate(-5deg); }
  100% { transform: rotate(0deg); }
}

.swing-animation {
  animation: swing 1s ease-in-out;
}

JavaScript 通过事件触发动画:

element.addEventListener('click', () => {
  element.classList.add('swing-animation');
  setTimeout(() => element.classList.remove('swing-animation'), 1000);
});

纯 JavaScript 实现(使用 requestAnimationFrame)

js实现摇摆

通过逐帧修改元素的 transform 属性实现更灵活的控制:

function swing(element, amplitude = 15, duration = 1000) {
  const startTime = performance.now();
  function animate(currentTime) {
    const elapsed = currentTime - startTime;
    const progress = Math.min(elapsed / duration, 1);
    const angle = amplitude * Math.sin(progress * Math.PI * 2) * (1 - progress);
    element.style.transform = `rotate(${angle}deg)`;
    if (progress < 1) requestAnimationFrame(animate);
  }
  requestAnimationFrame(animate);
}

使用 GSAP 库实现高级效果

js实现摇摆

引入 GSAP 库可简化复杂动画序列:

gsap.to(element, {
  rotation: 15,
  duration: 0.2,
  repeat: 3,
  yoyo: true,
  ease: "sine.inOut"
});

物理模拟摇摆(阻尼效果)

模拟真实物理摆动,包含速度衰减:

let angle = 0, velocity = 0, damping = 0.9;
function physicsSwing() {
  velocity += (-angle * 0.1 - velocity * 0.1);
  angle += velocity;
  element.style.transform = `rotate(${angle}deg)`;
  if (Math.abs(angle) > 0.01 || Math.abs(velocity) > 0.01) {
    requestAnimationFrame(physicsSwing);
  }
}
// 触发初始速度
velocity = 5;
physicsSwing();

标签: js
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现自举

js实现自举

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

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…