JavaScript 控制动画效果主要涉及到以下几个基础概念:
@keyframes
规则定义动画序列,然后使用类名切换来触发动画。requestAnimationFrame
可以确保动画在浏览器重绘之前执行,避免不必要的重绘,提高性能。以下是一个简单的 JavaScript 控制 CSS 动画的示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript Animation</title>
<style>
.box {
width: 100px;
height: 100px;
background-color: red;
position: relative;
}
@keyframes move {
from { left: 0; }
to { left: 200px; }
}
</style>
</head>
<body>
<div class="box" id="box"></div>
<button onclick="startAnimation()">Start Animation</button>
<script>
function startAnimation() {
const box = document.getElementById('box');
box.style.animation = 'move 2s linear infinite';
}
</script>
</body>
</html>
原因:
解决方法:
requestAnimationFrame
来优化动画性能。function animate() {
// 动画逻辑
requestAnimationFrame(animate);
}
requestAnimationFrame(animate);
原因:
解决方法:
animation
样式或清除定时器。function startAnimation() {
const box = document.getElementById('box');
box.style.animation = 'move 2s linear forwards';
setTimeout(() => {
box.style.animation = '';
}, 2000);
}
通过以上方法,可以有效解决 JavaScript 控制动画效果时遇到的常见问题,提升动画的流畅性和用户体验。