fill

fill 属性有两种不同的含义。对于形状和文本,它是一个呈现属性,用于定义绘制元素的颜色(或任何 SVG 颜料服务器,如渐变或图案);对于动画,它定义动画的最终状态。

注意: 当用作呈现属性时,fill 还有一个对应的 CSS 属性:fill。当两者都指定时,CSS 属性优先。

SVG 呈现属性 fill 和 CSS fill 属性可以与以下 SVG 元素一起使用

SVG fill 属性可以与以下 SVG 元素一起用于定义最终的动画状态

示例

基本颜色和渐变填充,以及动画

html
<svg viewBox="0 0 300 100" xmlns="http://www.w3.org/2000/svg">
  <!-- Basic color fill -->
  <circle cx="50" cy="50" r="40" fill="pink" />

  <!-- Fill circle with a gradient -->
  <defs>
    <radialGradient id="myGradient">
      <stop offset="0%" stop-color="pink" />
      <stop offset="100%" stop-color="black" />
    </radialGradient>
  </defs>

  <circle cx="150" cy="50" r="40" fill="url(#myGradient)" />

  <!--
  Keeping the final state of an animated circle
  which is a circle with a radius of 40.
  -->
  <circle cx="250" cy="50" r="20">
    <animate
      attributeType="XML"
      attributeName="r"
      from="0"
      to="40"
      dur="5s"
      fill="freeze" />
  </circle>
</svg>

context-fill 示例

在此示例中,我们使用 <path> 元素定义了三个形状,每个形状都设置了不同的 strokefill 颜色。我们还通过 <marker> 元素定义了一个 <circle> 元素作为标记。每个形状都通过 marker CSS 属性应用了该标记。

<circle> 设置了 stroke="context-stroke"fill="context-fill"。由于它在形状的上下文中被设置为标记,这些属性使其在每种情况下都继承 <path> 元素上设置的 fillstroke

html
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 90">
  <style>
    path {
      stroke-width: 2px;
      marker: url("#circle");
    }
  </style>
  <path d="M 10 44.64 L 30 10 L 70 10 L 90 44.64 L 70 79.28 L 30 79.28 Z"
        stroke="red" fill="orange" />
  <path d="M 100 44.64 L 80 10 L 120 10 L 140 44.64 L 120 79.28 L 80 79.28 Z"
        stroke="green" fill="lightgreen" />
  <path d="M 150 44.64 L 130 10 L 170 10 L 190 44.64 L 170 79.28 L 130 79.28 Z"
        stroke="blue" fill="lightblue" />
  <marker id="circle" markerWidth="12" markerHeight="12"
          refX="6" refY="6" markerUnits="userSpaceOnUse">
    <circle cx="6" cy="6" r="3" stroke-width="2"
            stroke="context-stroke" fill="context-fill"  />
  </marker>
</svg>

输出如下:

注意:当元素被 <use> 元素引用时,它们也可以使用 context-strokecontext-fill 来继承 strokefill 值。

animate

对于 <animate>fill 定义动画的最终状态。

freeze(保持最后一帧动画的状态)| remove(保持第一帧动画的状态)
默认值 remove
可动画的

animateMotion

对于 <animateMotion>fill 定义动画的最终状态。

freeze(保持最后一帧动画的状态)| remove(保持第一帧动画的状态)
默认值 remove
可动画的

animateTransform

对于 <animateTransform>fill 定义动画的最终状态。

freeze(保持最后一帧动画的状态)| remove(保持第一帧动画的状态)
默认值 remove
可动画的

circle

对于 <circle>fill 是一个呈现属性,定义圆的颜色。

<paint>
默认值 black
可动画的

ellipse

对于 <ellipse>fill 是一个呈现属性,定义椭圆的颜色。

<paint>
默认值 black
可动画的

路径

对于 <path>fill 是一个呈现属性,定义形状内部的颜色。(内部由 fill-rule 属性或 fill-rule 属性定义。)

<paint>
默认值 black
可动画的

polygon

对于 <polygon>fill 是一个呈现属性,定义形状内部的颜色。(内部由 fill-rule 属性或 fill-rule 属性定义。)

<paint>
默认值 black
可动画的

polyline

对于 <polyline>fill 是一个呈现属性,定义形状内部的颜色。(内部由 fill-rule 属性或 fill-rule 属性定义。)

<paint>
默认值 black
可动画的

rect

对于 <rect>fill 是一个呈现属性,定义矩形的颜色。

<paint>
默认值 black
可动画的

set

对于 <set>fill 定义动画的最终状态。

freeze(保持最后一帧动画的状态)| remove(保持第一帧动画的状态)
默认值 remove
可动画的

文本

对于 <text>fill 是一个呈现属性,定义文本的颜色。

<paint>
默认值 black
可动画的

textPath

对于 <textPath>fill 是一个呈现属性,定义文本的颜色。

<paint>
默认值 black
可动画的

tspan

对于 <tspan>fill 是一个呈现属性,定义文本的颜色。

<paint>
默认值 black
可动画的

规范

规范
SVG 动画级别 2
# FillAttribute
Scalable Vector Graphics (SVG) 2
# SpecifyingFillPaint

浏览器兼容性

svg.elements.animate.fill

svg.elements.animateMotion.fill

svg.elements.animateTransform.fill

svg.elements.circle.fill

svg.elements.ellipse.fill

svg.elements.path.fill

svg.elements.polygon.fill

svg.elements.polyline.fill

svg.elements.rect.fill

svg.elements.set.fill

svg.elements.text.fill

svg.elements.textPath.fill

svg.elements.tspan.fill

另见