我正在构建一个依赖于 svg 的 Web 应用程序。为了参考,我使用 raphael js 库来处理所有的内容。
在这种情况下,我实现了一个类似于滚动条的东西,并将一堆 svg 功能(~500 个元素)移动到屏幕上。其中一部分特性是 <text>
元素(~100 个)。其他元素包括 <rect>
、<image>
和 <path>
元素。
我注意到我的应用程序在我的笔记本电脑上并不是很流畅,在 iPad 上处理起来非常糟糕,由于速度缓慢而令人讨厌。但是,每当在滚动过程中删除或忽略文本元素时,它立即变得更加流畅。
我尝试进行了一些速度测试(非常原始,使用new Date().getTime()
),发现除了 <text>
元素外,移动所有元素大约需要 10 毫秒,但是当包括 <text>
元素时,需要大约 120 毫秒。
我相信这是因为每个字母都被渲染为矢量形状,计算这样一个复杂结构的确切遮挡需要大量的处理能力。
是否可能只嵌入文本,以便将文本呈现为光栅图形,而不是形状?或通过其他方式改进呈现文本的性能?
我不需要背景透明度,也不使用任何花哨的字体。
paper.print()
还是paper.text()
来创建文本元素?同时提供一个 fiddle 会更好。 - Bruno