# 填充与边框
可以使用几种方法来着色(包括指定对象的属性)使用内联 CSS 样式、内嵌 CSS 样式,或者使用外部 CSS 样式文件。
# Fill 和 Stroke
# 上色
现在你难免面露难色,但是大多数基本的涂色可以通过在元素上设置两个属性来搞定:fill属性和stroke属性。
fill属性设置对象内部的颜色,stroke属性设置绘制对象的线条的颜色。
<svg width="310" height="100" style="border: 1px solid;">
<rect x="10" y="10" width="80" height="80"
stroke="blue" fill="purple"
fill-opacity="0.5" stroke-opacity="0.8"/>
</svg>
# 描边
除了颜色属性,还有其他一些属性用来控制绘制描边的方式。
<svg width="160" height="100" style="border: 1px solid;">
<line x1="40" x2="120" y1="20" y2="20" stroke="black" stroke-width="20" stroke-linecap="butt"/>
<line x1="40" x2="120" y1="50" y2="50" stroke="black" stroke-width="20" stroke-linecap="square"/>
<line x1="40" x2="120" y1="80" y2="80" stroke="black" stroke-width="20" stroke-linecap="round"/>
</svg>
<svg width="400" height="100" style="border: 1px solid;">
<polyline points="10 60 50 20 90 60" stroke="black" stroke-width="20"
stroke-linecap="butt" fill="none" stroke-linejoin="miter"/>
<polyline points="110 60 150 20 190 60" stroke="black" stroke-width="20"
stroke-linecap="butt" fill="none" stroke-linejoin="round"/>
<polyline points="210 60 250 20 290 60" stroke="black" stroke-width="20"
stroke-linecap="butt" fill="none" stroke-linejoin="miter"/>
</svg>
<svg width="310" height="100" style="border: 1px solid;">
<path d="M 10 75 Q 50 10 100 75 T 190 75" stroke="black" fill="none"
stroke-linecap="round" stroke-dasharray="5,10,5" />
<path d="M 10 75 L 190 75" stroke="red" fill="none"
stroke-linecap="round" stroke-width="1" stroke-dasharray="5,5" />
</svg>
stroke-width
属性定义了描边的宽度。stroke-linecap
属性控制边框终点的形状。butt square roundstroke-linejoin
属性,用来控制两条描边线段之间,用什么方式连接。 miter round bevelstroke-dasharray
属性,将虚线类型应用在描边上。
# 使用 CSS
除了定义对象的属性外,你也可以通过 CSS 来样式化填充和描边。语法和在 HTML 里使用 CSS 一样,只不过你要把background-color、border改成fill和stroke。注意,不是所有的属性都能用 CSS 来设置。
<svg width="200" height="200" xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<style type="text/css">
#MyRect {
stroke: black;
fill: red;
}
#MyRect:hover {
stroke: black;
fill: blue;
}
</style>
</defs>
<rect x="10" height="180" y="10" width="180" id="MyRect"/>
</svg>