首先,您真的想使用requestAnimationFrame而不是 setInterval。它专为动画制作。根据保罗爱尔兰..
我为什么要使用它?
浏览器可以将并发动画一起优化为单个回流和重绘循环,从而获得更高保真度的动画。例如,与 CSS 过渡或 SVG SMIL 同步的基于 JS 的动画。此外,如果您在不可见的选项卡中运行动画循环,浏览器将不会继续运行,这意味着 CPU、GPU 和内存使用量减少,从而延长电池寿命。
以下是我将如何实现您所说的内容
// all credit to paul irish on this part
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function( callback ){
window.setTimeout(callback, 1000 / 60);
};
})();
function growCircle () {
// code to make the circle bigger
}
function rotateCross() {
// code to make the cross rotate
}
(function animate(){
requestAnimFrame(animate);
if ( /* code to tell if the circle has finished growing */ ) {
rotateCross();
} else {
growCircle();
}
})();