如何在SVG形状的某些边上设置笔划宽度:1?

时间:2012-01-23 18:36:53

标签: html5 svg vector-graphics inkscape

在SVG的<rect>元素上设置笔画宽度:1会在矩形的每一侧放置一个笔画。

如何仅在SVG矩形的三个边上放置笔划宽度?

3 个答案:

答案 0 :(得分:161)

如果你需要中风或无中风,那么你也可以使用stroke-dasharray来实现这一点,方法是使破折号和间隙与矩形的边相匹配。

rect { fill: none; stroke: black; }
.top { stroke-dasharray: 0,50,150 }
.left { stroke-dasharray: 150,50 }
.bottom { stroke-dasharray: 100,50 }
.right { stroke-dasharray: 50,50,100 }
<svg height="300">
    <rect x="0.5" y="0.5" width="50" height="50" class="top"/>
    <rect x="0.5" y="60.5" width="50" height="50" class="left"/>
    <rect x="0.5" y="120.5" width="50" height="50" class="bottom"/>
    <rect x="0.5" y="180.5" width="50" height="50" class="right"/>
</svg>

请参阅jsfiddle

答案 1 :(得分:28)

您无法在SVG中更改单个形状的各个部分的视觉样式(缺少尚未可用的Vector Effects模块)。相反,您需要为每个笔划或其他想要改变的视觉样式创建单独的形状。

特别针对这种情况,您可以创建仅涵盖矩形三边的<rect><polygon>,而不是使用<path><polyline>元素。

<!-- Move to 50,50 then draw a line to 150,50, to 150,150, and then to 50,150 -->
<path d="M50,50 L150,50 150,150 50,150" />
<polyline points="50,50 150,50 150,150 50,150" />

您可以在此处查看这些效果的效果:http://jsfiddle.net/b5FrF/3/

Red square with stroke on three sides

有关详细信息,请参阅<polyline>以及更强大但更令人困惑的<path>形状。

答案 2 :(得分:2)

您可以对三条描边使用折线,而不是将描边放在矩形上。我不认为SVG允许您将不同的笔划应用于路径/形状的不同部分,因此您需要使用多个对象来获得相同的效果。