首页 > 解决方案 > SVG 过滤器中的小数

问题描述

我无法让 Chrome(和 Opera)使用半径为十进制值的 SVG 过滤器。

转到http://oreillymedia.github.io/svg-essentials-examples/ch11/fe_morphology.html并尝试在半径字段中输入 0 或 0.5。在 Chrome 中没有变化,但在 Firefox 中,侵蚀有效。

我有一个带十进制逗号的语言环境,这会起作用吗?使用逗号,它会被解释为 x,y。

这是一个已知问题吗?任何解决方法?

标签: svgsvg-filtersblink

解决方案


radius零不是该属性的有效值。引用规范:

半径=“数字可选数字”

操作的半径(或半径)。如果提供了两个数字,则第一个数字表示 x 半径,第二个值表示 y 半径。如果提供了一个数字,则该值用于 X 和 Y。这些值位于由“filter”元素上的属性“primitiveUnits”建立的坐标系中。负值是错误(请参阅错误处理)。零值禁用给定过滤器基元的效果(即,结果是透明的黑色图像)。如果未指定属性,则效果如同指定了值 0。

半径值决定了用于处理图像的卷积矩阵的大小。根据定义,矩阵必须具有整数个列和行。然而,规范并不清楚分数是否应该向上或向下舍入。

似乎 Firefox 总是向上取整,而 Chrome/Webkit 总是向下取整。

在任何情况下,小数值都是没有意义的,所以你应该总是使用整数。


推荐阅读