- requestAnimationFrame(callback) 回调函数会在绘制之前执行
- requestAnimationFrame(callback) 会在浏览器每次重绘前执行callback调用,每次callback执行的时机都是浏览器刷新下一帧渲染周期的起点上
- requestAnimationFrame(callback) 的回调 callback 回调参数 timestamp 是回调 被调用的时间,也就是当前帧的起始时间
- requestAnimation FrameTime preformance.timing.navigationStart + performance.now() 约等于Date.now()
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>RequestAnimationFrame</title></head><body><div style="background-color:blue; width: 0; height: 20px;"></div><button>开始</button><script>let div = document.querySelector('div');let button = document.querySelector('button');let startTime;function progress () {div.style.width = div.offsetWidth+1+'px';div.innerHTML = div.offsetWidth+'%';if(div.offsetWidth<100){console.log(Date.now()-startTime+"ms")startTime = Date.now();requestAnimationFrame(progress)}}button.onclick = function(){div.style.width = 0;startTime = Date.now();// 浏览器会在每一帧渲染前执行progressrequestAnimationFrame(progress);}</script></body></html>
