SVG填充
SVG形状的填充定义了其轮廓内的形状的颜色。换句话说,SVG形状的表面。填充是可以为任何SVG形状设置的基本SVG CSS属性之一。
填充示例
SVG形状的填充是形状轮廓内的填充。这是一个SVG填充示例:
<circle cx="50" cy="50" r="25" style="stroke: none; fill: #0000ff;" />
本示例定义了一个蓝色("#0000ff")填充颜色且无笔触颜色的圆。
填充和描边示例
我们可以将SVG笔触和填充颜色组合为SVG形状。这是一个SVG笔触和填充示例:
<circle cx="50" cy="50" r="25" style="stroke: #000066; fill: #3333ff;" />
本示例定义了一个圆形,其笔触颜色为深蓝色(#000066
),填充颜色为浅蓝色(#3333ff
)。
填充不透明度
SVG的fill-opacity CSS属性用于设置形状的填充颜色的不透明度。 " fill-opacity"取一个介于0和1之间的十进制数字。值越接近0,则填充越透明。值越接近1,填充越不透明。默认的" fill-opacity"为1,表示填充颜色是完全不透明的。
这是一个SVG" fill-opacity"示例,其中包含两个具有不同" fill-opacity"的圆:
<text x="22" y="40">Text Behind Shape</text> <circle cx="50" cy="50" r="25" style="stroke: none; fill: #0000ff; fill-opacity: 0.3; " /> <circle cx="120" cy="50" r="25" style="stroke: none; fill: #0000ff; fill-opacity: 0.7; " />
这是生成的图像。
形状后面的文字
请注意,右圆圈后面的文字比左圆圈后面的文字不怎么可见。那是因为右边的圆圈比左边的圆圈具有更高的"填充不透明度"。
填写规则
"填充规则"决定了填充复杂形状的方式。 " fill-rule"可以采用两个不同的值。这些是:
nonzero evenodd
通常,这两个值是确定形状内部和外部形状的规则。仅内部被填充。对于一个圆来说,这很简单,但是对于更复杂的形状,这并不是那么容易。看一下这个<path>示例:
<path d="M50,20 l40,40 l-40,40 l-40,-40 l40,-40 M50,40 l20,20 l-20,20 l-20,-20 l20,-20" style="stroke: #000000; fill: #6666ff; fill-rule: nonzero; " /> <path d="M150,20 l40,40 l-40,40 l-40,-40 l40,-40 M150,40 l-20,20 l20,20 l20,-20 l-20,-20" style="stroke: #000000; fill: #6666ff; fill-rule: nonzero;" />
这两个路径示例各有8条线,以菱形绘制,较大的线中有较小的菱形。在左侧路径中,内部菱形是从左向右(顺时针)绘制的。在右侧路径中,从右到左(逆时针)绘制内部菱形。这是使用non-zero``fill-rule
绘制时得到的图像:
如我们所见," nonzero"规则考虑内部钻石在形状内部还是外部,具体取决于内部钻石的绘制方向。用于确定点在形状内部还是外部的"非零"规则是:
在任意方向上从点到无穷远绘制一条线(射线)。形状中的路径每次穿过此射线时,如果路径从左到右穿过射线,则将1加到计数器上;如果路径是从右到左穿过射线,则从计数器中减1. 对所有穿过射线的路径进行计数后,如果总计数为零,则该点被视为路径之外。如果总计数不为零,则将该点视为路径内的点。
这是相同的路径示例,但使用的是fill-ruleevenodd
:
<path d="M50,20 l40,40 l-40,40 l-40,-40 l40,-40 M50,40 l20,20 l-20,20 l-20,-20 l20,-20" style="stroke: #000000; fill: #6666ff; fill-rule: evenodd;" /> <path d="M150,20 l-40,40 l40,40 l40,-40 l-40,-40 M150,40 l-20,20 l20,20 l20,-20 l-20,-20" style="stroke: #000000; fill: #6666ff; fill-rule: evenodd;" />
确定点是在形状的内部还是外部的" evenodd"规则是:
在任意方向上从点到无穷远绘制一条线(射线)。每当路径穿过射线时,都增加一个计数器。如果总数是偶数,则该点在外面。如果总计数为奇数,则该点位于形状内部。