Hel*_*yle 5 javascript css requestanimationframe
我发现当同时运行Css3 Animation和RequestAnimationFrame(不改变DOM)时,重新计算样式,这意味着GPU加速不起作用?这是一个错误吗?
\n当仅运行 css3 动画时,GPU 加速工作正常,一切都很完美。
\n\n启动requestAnimationFrame,Recalculate Style每次都会看到被触发。
性能 - Css3rotateZ + requestAnimationFrame
\n停止Css3动画(仅requestAnimationFrame)\xef\xbc\x8cRecalculate就没了~
主要代码如下:
\n@keyframes rotate {\n 0% {\n transform: rotateZ(0deg);\n }\n to {\n transform: rotateZ(359deg);\n }\n}\n\n.ring {\n display: none;\n width: 80px;\n height: 80px;\n margin: 24px auto;\n border: 2px solid transparent;\n border-top-color: red;\n border-radius: 50%;\n display: block;\n}\nRun Code Online (Sandbox Code Playgroud)\nconst toggleCss = document.querySelector("#toggleCss");\ntoggleCss.addEventListener("click", function () {\n document.body.classList.toggle("loading");\n if (document.body.classList.contains("loading")) {\n toggleCss.innerText = "Stop Css3 Animation";\n } else {\n toggleCss.innerText = "Start Css3 Animation";\n }\n});\n\nlet running = false;\n\nfunction tick() {\n if (running) {\n requestAnimationFrame(tick);\n }\n}\n\ntick();\n\nconst toggleRaf = document.querySelector("#toggleRaf");\ntoggleRaf.addEventListener("click", function () {\n if (running) {\n running = false;\n toggleRaf.innerText = "Start requestAnimationFrame";\n } else {\n toggleRaf.innerText = "Stop requestAnimationFrame";\n running = true;\n tick();\n }\n});\nRun Code Online (Sandbox Code Playgroud)\n在此处查看在线示例: https: //yfkyv.csb.app/
\nCodesandbox:https://codesandbox.io/s/relaxed-andras-yfkyv?file=/src/index.js
\n| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |