当前位置:首页 > JavaScript

js实现摆动

2026-04-06 16:07:17JavaScript

实现摆动动画的方法

使用JavaScript实现摆动动画可以通过CSS动画结合JavaScript控制,或者直接使用JavaScript操作DOM元素的样式。以下是几种常见的方法:

使用CSS动画和JavaScript触发

通过定义CSS关键帧动画,再利用JavaScript添加或移除动画类来实现摆动效果。

@keyframes swing {
  0% { transform: rotate(0deg); }
  25% { transform: rotate(15deg); }
  50% { transform: rotate(0deg); }
  75% { transform: rotate(-15deg); }
  100% { transform: rotate(0deg); }
}

.swing-animation {
  animation: swing 1s ease-in-out infinite;
}
const element = document.getElementById('swing-element');
element.classList.add('swing-animation');

// 停止动画
// element.classList.remove('swing-animation');

使用JavaScript直接操作样式

通过定时器动态修改元素的transform属性,实现摆动效果。

const element = document.getElementById('swing-element');
let angle = 0;
let direction = 1;
const speed = 2;
const maxAngle = 15;

function swing() {
  angle += speed * direction;
  if (angle > maxAngle || angle < -maxAngle) {
    direction *= -1;
  }
  element.style.transform = `rotate(${angle}deg)`;
  requestAnimationFrame(swing);
}

swing();

使用GSAP库实现高级摆动

GSAP是一个强大的动画库,可以轻松实现复杂的摆动效果。

import { gsap } from "gsap";

const element = document.getElementById('swing-element');
gsap.to(element, {
  rotation: 15,
  duration: 0.5,
  repeat: -1,
  yoyo: true,
  ease: "sine.inOut"
});

使用物理引擎模拟摆动

如果需要更真实的物理摆动效果,可以使用Matter.js等物理引擎。

js实现摆动

const Engine = Matter.Engine;
const Render = Matter.Render;
const Bodies = Matter.Bodies;
const Composite = Matter.Composite;

const engine = Engine.create();
const render = Render.create({
  element: document.body,
  engine: engine
});

const pendulum = Bodies.rectangle(400, 100, 50, 200, {
  chamfer: { radius: 10 }
});
const anchor = Bodies.rectangle(400, 10, 300, 20, { 
  isStatic: true 
});

Composite.add(engine.world, [pendulum, anchor]);
Engine.run(engine);
Render.run(render);

摆动动画的优化建议

  • 使用requestAnimationFrame代替setTimeoutsetInterval以获得更流畅的动画效果。
  • 对于简单的摆动效果,优先考虑CSS动画,性能更好且实现简单。
  • 如果需要复杂的物理效果,考虑使用专门的物理引擎库。
  • 在移动设备上,注意动画性能,避免过度使用可能导致卡顿的效果。

标签: js
分享给朋友:

相关文章

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js手势实现

js手势实现

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

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…

js实现菜单

js实现菜单

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