观察者模式(Observer Pattern)是一种行为设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。当主题对象发生变化时,它会通知所有观察者对象,使它们能够自动更新。
动画延迟通常指的是在触发某个事件后,预期的动画效果没有立即执行,而是出现了一定的时间滞后。
requestAnimationFrame
:
这个API会在浏览器下一次重绘之前调用指定的回调函数,确保动画在最佳时机执行。requestAnimationFrame
:
这个API会在浏览器下一次重绘之前调用指定的回调函数,确保动画在最佳时机执行。假设我们有一个按钮,点击后会触发一系列操作并启动一个动画:
<button id="animateBtn">Animate</button>
<div id="box" style="width: 100px; height: 100px; background-color: red;"></div>
document.getElementById('animateBtn').addEventListener('click', () => {
// 假设这里有一些耗时的操作
performExpensiveTask().then(() => {
startAnimation();
});
});
function performExpensiveTask() {
return new Promise((resolve) => {
setTimeout(() => {
console.log('Expensive task completed.');
resolve();
}, 1000);
});
}
function startAnimation() {
const box = document.getElementById('box');
let start;
function step(timestamp) {
if (!start) start = timestamp;
const progress = timestamp - start;
box.style.transform = `translateX(${Math.min(progress / 10, 200)}px)`;
if (progress < 2000) {
requestAnimationFrame(step);
}
}
requestAnimationFrame(step);
}
在这个例子中,performExpensiveTask
模拟了一个耗时操作,通过Promise将其异步化,并在完成后启动动画。动画部分使用了requestAnimationFrame
来确保流畅性。
领取专属 10元无门槛券
手把手带您无忧上云