感觉canvas在处理大数据的复杂图表的时候比svg效率更高啊,为啥d3.js采用了svg而不是canvas呢?
d3可以用canvas的,大量数据节点的图表(力导向图、数据地图)用canvas更快;
svg用的多因为可以结合css做到结构和样式分离,方便维护;
同时svg是document里的节点,鼠标交互更加方便;
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
首先d3.js是可以使用canvas的,比如这个示例:https://bl.ocks.org/mbostock/...
不过你会发现大部分的例子和d3项目还是用svg为主,因为作者虽然对canvas做了一些统一的API封装,但总的来说完成度远远没达到svg部分的高度。
另外d3.js专注的是数据可视化,在这个领域,所谓的“复杂图表”又能到多复杂的程度?是否canvas和svg的性能差距已经到了影响用户体验的程度?
也许是先入为主,但总是觉得d3推行的这套data-driven思想和dom元素更契合。