SVG 研究之路 (25) - 再談漸層填色

先前有介紹過 SVG 的 fill 填色,文章後面介紹了基本的漸層填色,但並沒有深入的介紹進一步的設定,然而高深莫測的漸層填色 ( Gradient ) 在 SVG 的 fill 裡面學問還真是不少,所以專門用一篇文章來解釋漸層填色,如此使用 fill 也才能更正確更靈活。

SVG 研究之路 (7) - fill 填色

漸層 Gradient

漸層有兩種,第一種是線性漸層 ( Linear gradients ) ,第二種是放射漸層 ( Radial gradients ) ,因為是漸層,所以要這樣子定義:

<defs>
   <linearGradient id="L" x1="0%" y1="0%" x2="100%" y2="100%">
     <stop offset="5%" stop-color="#F00" />
     <stop offset="95%" stop-color="#ff0" />
   </linearGradient>
   <radialGradient id="R" cx="20%" cy="40%">
     <stop offset="5%" stop-color="#ff0" />
     <stop offset="95%" stop-color="#f00" />
   </radialGradient>
</defs>

看到上述的定義,會發現有許多屬性在裏頭,因為兩種漸層分別具有以下這些屬性:

漸層屬性

其實上述兩種漸層大同小異,差別只在於線性漸層是用x1,y1,x2,y2、圓形漸層是用cx,cy,r,fx,fy,因此我們先從相同的屬性來談起:

線性漸層 linearGradient

以上就是線性漸層和圓形漸層的共通屬性,接下來就要討論它們兩個個別的屬性了,剛剛的範例幾乎都是用線性漸層做的,就讓我們先來看看線性漸層 linearGradient 吧!

圓形漸層 radialGradient

小結

以上就是詳細的漸層用法,如果熟練了 radialGradient,也可以輕鬆做出立體的球喔!

<defs>
  <radialGradient id="r1" cx=".3" cy=".3" r=".7">
    <stop offset="0%" stop-color="#fff"></stop>
    <stop offset="30%" stop-color="#9f9"></stop>
    <stop offset="70%" stop-color="#373"></stop>
    <stop offset="100%" stop-color="#000"></stop>
  </linearGradient>
</defs>
<<circle cx="85" cy="85" r="75" fill="url(#r1)"/>

SVG 研究之路 (25) - 再談漸層填色

有興趣瞧瞧其他新文章嗎?