We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
流畅的动画需要浏览器保证每秒60帧的刷新频率。
换句话说,我们应该尽可能多使用GPU(硬件加速),诸如API:transform(translate,rotate 和 scale) 和 opacity;另外,在绝对定位的元素上使用动画也可以优化刷新频率。
只要严格遵循以上两条规则,就能确保在绝大多数情况下你的动画在 60FPS 下运行。但是还有一个新的技术方案,可以帮助你创建真正轻量级的动画。
FLIP,将一些开销高昂的动画,如针对 width,height,left 或 top 的动画,映射为 transform 动画。
FLIP 来源于 First,Last,Invert,Play:
根据上面的描述,我们可以自己写一个FLIP函数
function flip(element, handler, duration = 0.3, timingFn = 'ease') { let first, last, invert_top, invert_left first = element.getBoundingClientRect() handler.call(null, element) last = element.getBoundingClientRect() invert_top = first.top - last.top invert_left = first.left - last.left element.style.transform = `translate(${invert_left}px, ${invert_top}px)` element.addEventListener('transitionend', () => { element.style.transition = "" }); requestAnimationFrame(() => { requestAnimationFrame(() => { element.style.transition = `all ${duration}s ${timingFn}` element.style.transform = "" }) }) }
CodePen演示地址
GitHub地址
NPM地址
Google的开源项目——flipjs
使用 FLIP 来提高 Web 动画的性能
The text was updated successfully, but these errors were encountered:
No branches or pull requests
概述
流畅的动画需要浏览器保证每秒60帧的刷新频率。
换句话说,我们应该尽可能多使用GPU(硬件加速),诸如API:transform(translate,rotate 和 scale) 和 opacity;另外,在绝对定位的元素上使用动画也可以优化刷新频率。
只要严格遵循以上两条规则,就能确保在绝大多数情况下你的动画在 60FPS 下运行。但是还有一个新的技术方案,可以帮助你创建真正轻量级的动画。
FLIP 简介
FLIP,将一些开销高昂的动画,如针对 width,height,left 或 top 的动画,映射为 transform 动画。
FLIP 来源于 First,Last,Invert,Play:
写一个FLIP
根据上面的描述,我们可以自己写一个FLIP函数
CodePen演示地址
GitHub地址
NPM地址
开源项目
Google的开源项目——flipjs
参考
使用 FLIP 来提高 Web 动画的性能
The text was updated successfully, but these errors were encountered: