据我所知,手机资源较少。这不是我的确切问题。
澄清更多;我在同一台设备上使用了amCharts
和chartjs
。
amCharts
运行顺利,但 chartjs使页面滚动停止,它非常明显滞后,有时会将页面的某些部分显示为空白空间大约1/4秒 - 原谅我的确切数字。
显然,这不是数据集问题,每个库的工作方式有很大差异。我能找到的最大的一个是amChart
使用SVG而chartjs
使用html Canvas元素。
chartjs
还没有针对移动设备进行优化?解决方案:因为问题更多的是关于"原因"而不是"修复",我没有提交这个作为答案。
我忘记了它,但几乎是一个重击规则:" 如果出现滚动问题;强制GPU加速。"大多数现代浏览器都可以做到这一点,强迫它非常简单,只需在3D空间中进行任何转换(平移,缩放等):
body *:not(svg) {
transform: translate3d(0, 0, 0);
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0); /*only in IE10*/
}
ion-content
- 或任何较小的容器 - 而不是body
。*:not(svg)
。ios 8.3
和android 6
。答案 0 :(得分:3)
如果用户滚动画布时图形会不断变化或更改,则会比SVG慢。
使用画布,您可以针对每一个小小的变化重新绘制图形,但不能解决它。
使用SVG,您的图形是DOM的一部分,可以在不完全重新渲染的情况下进行修改。
因此,如果您的图形正在发生很大变化,并且您注意到它落后的时刻与重新绘制的时间一致,那么库的库选择是SVG的问题。否则,Canvas在大多数情况下实际上更快。
修复此问题可能包括找到另一个库,修改现有代码的代码或找到更少绘制图形的方法(例如,在图形更改几毫秒甚至几秒之间有一个mandatroy超时)。