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

另見