我正在计划一个界面来显示许多小部件(绘制在 a 上<canvas>
),这些小部件可能会四处移动(例如,在一个使用 jQuery 以不同方式排序的列表中)。小部件的数量可能在 10 到 100 之间。
我可以用一张大画布来做这件事,然后在正确的地方画很多小部件。或者我可以在 s 中有很多<canvas>
ses <li>
。帆布是否足够轻,适合这种事情?是否有令人信服的性能理由来选择其中一个?
我正在计划一个界面来显示许多小部件(绘制在 a 上<canvas>
),这些小部件可能会四处移动(例如,在一个使用 jQuery 以不同方式排序的列表中)。小部件的数量可能在 10 到 100 之间。
我可以用一张大画布来做这件事,然后在正确的地方画很多小部件。或者我可以在 s 中有很多<canvas>
ses <li>
。帆布是否足够轻,适合这种事情?是否有令人信服的性能理由来选择其中一个?
3 年前我不得不做类似的事情来代表BPM。我用<canvas>
(我在画布和 VML 之上构建了一个库 - 用于 IE - )实现了它,然后我选择了你提出的第二个选项。
画布的问题在于,如果您有很多交互(单击特定元素,移动它等),那么每次您都必须重新绘制所有内容(对于一个充满元素的大画布,这并不是最好的)性能条款)。我更喜欢表示 X 占位符(每个占位符是一个包含画布的 div),并且我注意到性能更好,并且显然 DOM 事件(附加到画布的容器)更容易管理。
实现这种交互式东西的另一种方法是使用SVG
(到目前为止,我更喜欢这个),例如通过raphaelJS。对于没有交互的动画和 2d 表示,我会使用<canvas>
.
我听说对于高度大于 600 像素的画布,性能会下降 WAAAAAYYYYYY。所以你可能想解决这个问题。现在正在寻找参考...