【发布时间】:2018-01-15 21:19:21
【问题描述】:
我了解移动设备的可用资源较少。这不是我的确切问题。
澄清更多;我在同一台设备上使用了amCharts 和chartjs。
- AmCharts 有 2 个包含大量数据的复杂图表 - 超过 900 条记录。
- Chartjs 有 1 个图表和非常简单的数据 - 少于 60 条记录。
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*/
}
- 来源:answers from this question。
- 使用 ionic 会破坏导航栏,因此请使用
ion-content- 或任何较小的容器 - 而不是body。 - 看起来它会破坏 SVG,因此
*:not(svg)。 - 在
ios 8.3和android 6上测试。
【问题讨论】:
-
AmCharts 对于闭源项目来说不是免费的,这就是为什么我想在这个项目中使用
chartjs。
标签: javascript html svg ionic-framework chart.js