【问题标题】:SVG filterRes alternative/replacement strategySVG filterRes 替代/替换策略
【发布时间】:2016-11-29 13:54:26
【问题描述】:
当您创建带有阴影的 SVG,然后放大/缩小您的 SVG 时,由于重新计算阴影,您会遇到一些严重的性能问题。
过去,您可以使用filterRes='' 来解决此问题。但是,过滤器已被弃用并从 SVG 规范中删除。
我正在寻找filterRes='' 的替代方案,它可以让我在执行诸如放大/缩小等会导致重新计算阴影的操作时以高性能的方式处理诸如 SVG 阴影之类的东西。
有没有人有克服过滤器被弃用后出现的性能障碍的经验?任何替换 filterres 用来提供的功能的策略示例?
【问题讨论】:
标签:
javascript
performance
svg
svg-filters
【解决方案1】:
最简单的方法是将阴影渲染到图像中,并将其包含在您的 svg 中。从那开始,可能会有一些解决方案以不同的分辨率生成阴影,并根据需要拉入适当的尺寸。您也可以使用 <canvas> 创建影子客户端并将其作为 base64 编码的图像源交给 svg。
这在很大程度上取决于您的应用程序和性能要求,因此预渲染三个或用于“结果步骤”就足够了,或者需要应用更复杂的东西......
顺便说一句。也可以用Javascript引用<filter>元素,直接操作过滤属性...
【解决方案2】:
如果您可以说服浏览器在 GPU 而不是 CPU 上进行缩放,这将使事情的性能大大提高,因此使用 CSS 3D 变换而不是 JavaScript 或 viewBox 动画来放大和缩小 SVG 可能会奏效.