-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
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
render()增加lv参数,标明本次渲染是repaint/reflow,布局缓存,渲染缓存 #87
Comments
|
style/currentStyle/computedStyle上的属性以getter形式提供 低优先级 |
updateStyle/animate覆盖currentStyle逻辑应该统一放到refresh前,因为会有重复甚至改变再还原,此时进行repaint等级计算,且isDestroy的不执行。 渲染位图缓存采用page内存分页碎片管理的方式,以某个尺寸为基准1,如8px * 8px,一个dom的内容尺寸都视作这个方块大小,页按8 * 8个单位算,这样一页最多可以存放8 * 8=64个单位尺寸图片。低于1的按1计算。 不同浏览器对于canvas尺寸有限制,目前主流都在4096 * 4096以上,按此为最大。因此常规单位尺寸最大为512。 pc比较大,mobile会小点。pc中ie垫底8192,mobile中iphone6垫底4096。 |
对path绘制的大概测试,对比drawImage缓存。当5个lineTo时和位图缓存大约持平,当3个lineTo+1个曲线时大约持平。 为了dom缓存孩子节点,孩子不能直接绘制在主canvas上,因此无分数概念只要有内容就缓存 |
局部布局缓存,没有变化时无需重新布局。
在一个节点无需重新布局但因为外部/兄弟节点变化造成偏移时,特殊进行offset操作而不是重新布局。
渲染方面,一个节点无动画等变化时,根据复杂情况canvas离屏绘制缓存,再次刷新时刻直接利用drawImage离屏内容;
svg也是直接利用生成好的virtualDom,新的根据位置插入,对matrix/opacity/filter进行特殊优化,大部分动画是变化matrix,此时也不重新生成virtualDom,只改变transform值且只对比diff本transform即可。
The text was updated successfully, but these errors were encountered: