生成带有虚线填充线的 SVG 矩形
Generating an SVG rectangle with dashed fill lines
我有一个用 dimpleJS 制作的矩形,需要用虚线而不是纯色填充的框。这可以使用 svg,css and/or jquery 吗?矩形在下面。
<rect id="dimple-not-working-on-an-associate-s-degree-2008-not-working-on-an-associate-s-degree---" class="dimple-series-0 dimple-bar dimple-not-working-on-an-associate-s-degree dimple-2008 dimple-not-working-on-an-associate-s-degree dimple-custom-series-bar dimple-custom-format-1" x="183.5" y="128.4" width="18" height="141.6" opacity="0.8" style="fill: rgb(92, 186, 230); stroke: rgb(77, 156, 192);" fill="#5cbae6" stroke="rgb(77, 156, 192)"></rect>
正如罗伯特在评论中提到的,您需要做的是使用 pattern
来填充矩形。步骤很简单:
- 在 SVG 中定义一个图案
- 在模式里面,"draw" 任何你想要的模式。例如,你想要虚线,所以你会做一条只占据图案一部分的线,所以当它重复时它看起来像虚线。
- 将属性
patternUnits
设置为 "userSpaceOnUse" 因此图案将占据应用它的整个元素(就像背景重复一样)。
- 通过引用其 id(例如
fill="url(#pattern-id)"
)在 fill
属性中应用模式
在这里您可以看到一个正在运行的演示:
<svg width="100" height="100" viewBox="0 0 100 100">
<defs>
<pattern id="lines" height="10" width="10" patternUnits="userSpaceOnUse">
<line x1="0" y1="4" x2="5" y2="4" stroke-width="2" stroke="black"/>
</pattern>
</defs>
<rect x="10" y="10" width="80" height="80" fill="url(#lines)" />
</svg>
我有一个用 dimpleJS 制作的矩形,需要用虚线而不是纯色填充的框。这可以使用 svg,css and/or jquery 吗?矩形在下面。
<rect id="dimple-not-working-on-an-associate-s-degree-2008-not-working-on-an-associate-s-degree---" class="dimple-series-0 dimple-bar dimple-not-working-on-an-associate-s-degree dimple-2008 dimple-not-working-on-an-associate-s-degree dimple-custom-series-bar dimple-custom-format-1" x="183.5" y="128.4" width="18" height="141.6" opacity="0.8" style="fill: rgb(92, 186, 230); stroke: rgb(77, 156, 192);" fill="#5cbae6" stroke="rgb(77, 156, 192)"></rect>
正如罗伯特在评论中提到的,您需要做的是使用 pattern
来填充矩形。步骤很简单:
- 在 SVG 中定义一个图案
- 在模式里面,"draw" 任何你想要的模式。例如,你想要虚线,所以你会做一条只占据图案一部分的线,所以当它重复时它看起来像虚线。
- 将属性
patternUnits
设置为 "userSpaceOnUse" 因此图案将占据应用它的整个元素(就像背景重复一样)。 - 通过引用其 id(例如
fill="url(#pattern-id)"
)在fill
属性中应用模式
在这里您可以看到一个正在运行的演示:
<svg width="100" height="100" viewBox="0 0 100 100">
<defs>
<pattern id="lines" height="10" width="10" patternUnits="userSpaceOnUse">
<line x1="0" y1="4" x2="5" y2="4" stroke-width="2" stroke="black"/>
</pattern>
</defs>
<rect x="10" y="10" width="80" height="80" fill="url(#lines)" />
</svg>