如何使用元素移动SVG模式

fis*_*en0 6 javascript svg

我创建了这里看到的svg模式:

<pattern id="t" height="20" width="20" patternUnits="userSpaceOnUse" overflow="visible">
    <ellipse cx="0" cy="0" rx="20" ry="20" fill="white"/>
    <ellipse cx="5" cy="5" rx="15" ry="15" fill="yellow"/>
    <ellipse cx="10" cy="10" rx="10" ry="10" fill="blue"/>
    <ellipse cx="15" cy="15" rx="5" ry="5" fill="red"/>
</pattern>
Run Code Online (Sandbox Code Playgroud)

然后在我的脚本中我创建了一个使用该模式的椭圆.问题是,当我移动椭圆时,图案仍然在它后面而不是与椭圆一起移动.

如何配置模式以保持元素?

Rob*_*son 5

你需要使用patternContentUnits ="objectBoundingBox"点击这个例子中的矩形来查看:http://jsfiddle.net/longsonr/x8nkz/


Mic*_*any 2

将patternContentUnits 更改为“objectBoundingBox”(相对于userSpaceOnUse)。

更多:patternUnits 不应该影响模式的布局方式,只影响其尺寸(用户空间单位与边界框单位)。patternContentUnits 是您要设置为“objectBoundingBox”的属性 - 请注意,如果您更改边界框的大小,这将缩放您的图案。如果您不希望发生这种情况,那么您需要在图案上使用 viewbox 属性 - 这可能是获得您可能正在寻找的结果的正确方法(固定大小的图案,相对于其边界框定位)

(另请注意,根据规范将溢出设置为可见会导致“未定义”渲染——这不是您想要做的事情)