14
我在iOS上滚动时遇到了性能问题。在touchstart
和touchend
上,Safari无效,然后重新计算样式,这导致在滚动响应之前稍微延迟。 Safari的工具有一个“启动器”列,但在我的测试中它是空白的。如何确定iOS Safari中导致“样式失效”的原因?
我已经试过:
- 滚动元件上施加任何
will-change: transform;
或transform: translateZ(0);
。这对Chrome非常有帮助,但对iOS Safari没有任何帮助。分析器仍然报告正在重新计算样式。 - 去除有
position: fixed;
- 检查的Javascript每一行的DOM的所有元素(这只是jQuery和在我的测试角的核心代码)通过剖析报告,看看他们在Paul Irish's list of things that force layout/reflow
- 要重现在Android上,我可以使用Chrome的恒星开发工具,但没有成功。该问题仅影响iOS Safari,而Safari Safari只能从桌面Safari进行调试。
如何确定是什么导致我的样式在iOS Safari中失效?
这是iOS中已知的“问题”,请参阅此处:https://developers.google.com/web/updates/2013/12/300ms-tap-delay-gone-away。使用Fastclick.js来帮助缓解,我认为8之后更新版本的iOS删除了这个点击延迟“功能”。希望有所帮助! –
我不确定这是一样的。对于我来说,滚动对于更简单的DOM结构的页面响应速度更快,这不是一个静态延迟。我确定它与风格无效有关。 – adamdport
面对同样的问题,唯一有效的方法是查看单个页面上的每个动画内容并尝试禁用它并检查它是否有帮助。在我的情况下,回流是由来自离子的组件的“animated ='true'”参数引起的。 –