一篇文章帶你了解SVG fill 屬性
SVG形狀的fill定義了其輪廓內(nèi)的形狀的顏色。換句話說(shuō),SVG形狀的表面。填充是您可以為任何SVG形狀設(shè)置的基本SVG CSS屬性之一。
一、Fill
SVG形狀的填充是形狀輪廓內(nèi)的填充。
定義了一個(gè)使用藍(lán)色(#0000ff)填充顏色但沒(méi)有描邊顏色的圓。
- <!DOCTYPE html>
- <html>
- <body style="background-color: aqua;">
- <title>項(xiàng)目</title>
- <svg width="500" height="100">
- <circle cx="50" cy="50" r="25" style="stroke: none; fill: #FF0000;" />
- </svg>
- </body>
- </html>
運(yùn)行效果:
二、填充和描邊示例
可以將SVG筆觸和填充顏色組合為SVG形狀。
示例
使用較深的藍(lán)色(#000066)描邊顏色和較淺的藍(lán)色(#3333ff)填充顏色定義圓。
- <!DOCTYPE html>
- <html>
- <body style="background-color: aqua;">
- <title>項(xiàng)目</title>
- <svg width="500" height="100">
- <circle cx="50" cy="50" r="50" style="stroke: #000066; fill: #FF0000;" />
- </svg>
- </body>
- </html>
運(yùn)行效果:
1. fill-opacity
SVG CSS屬性 fill-opacity 用于設(shè)置形狀的填充顏色的不透明度。fill-opacity 使用介于0和1之間的數(shù)值。值越接近0,填充越透明。值越接近1,填充越不透明。默認(rèn)fill-opacity值為1,這意味著填充顏色是完全不透明的。
這是一個(gè)SVG填充不透明度 fill-opacity示例,其中包含兩個(gè)具有不同(fill-opacity)的圓:
示例
- <svg width="500" height="120">
- <text x="22" y="40">World Behindeda Look</text>
- <circle cx="50" cy="50" r="25" style="stroke: none; fill: #0000ff;
- fill-opacity: 0.3; ">
- </path>
- <circle cx="120" cy="50" r="25" style="stroke: none; fill: #0000ff;
- fill-opacity: 0.7; ">
- </path>
- </svg>
運(yùn)行效果:
請(qǐng)注意
右圓圈后面的文本比左圓圈后面的文本更不可見(jiàn)。那是因?yàn)橛覉Afill-opacity比左圓高。
2. fill-rule
fill-rule決定的復(fù)雜形狀的填充方式。fill-rule可以采用兩個(gè)不同的值 。這些值是:
2.1 nonzero
通常,這兩個(gè)值是確定形狀內(nèi)部和外部形狀的規(guī)則。僅內(nèi)部填充,對(duì)于一個(gè)圓來(lái)說(shuō),這很簡(jiǎn)單,但是對(duì)于更復(fù)雜的形狀,這并不是那么容易。
示例
- <svg width="500" height="120">
- <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>
- <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;"></path>
- </svg>
代碼解析:
兩個(gè)路徑示例各有8條線,每條線都以菱形繪制,其中較大的菱形包含較小的菱形。
在左側(cè)路徑中,內(nèi)部菱形是從左向右(順時(shí)針)繪制的。右邊的路徑中,內(nèi)部菱形從右到左(逆時(shí)針)繪制。
這是使用fill-rule:non-zero繪制時(shí)的結(jié)果圖像。
2.2 evenodd
這是相同的路徑示例,使用fill-rule:evenodd。
示例
- <svg width="500" height="120">
- <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>
- <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;" ></path>
- </svg>
運(yùn)行后圖像效果:
注意:
evenodd字面意思是“奇偶”。
按該規(guī)則:
要判斷一個(gè)點(diǎn)是否在圖形內(nèi),從該點(diǎn)作任意方向的一條射線,然后檢測(cè)射線與圖形路徑的交點(diǎn)的數(shù)量。在任意方向上從點(diǎn)到無(wú)窮遠(yuǎn)繪制一條線(射線)。每當(dāng)路徑穿過(guò)射線時(shí),都增加一個(gè)計(jì)數(shù)器。如果總數(shù)是偶數(shù),則該點(diǎn)在外面。如果總計(jì)數(shù)為奇數(shù),則該點(diǎn)位于形狀內(nèi)部。
三、總結(jié)
本文基于Html基礎(chǔ),講解了有關(guān)SVG中的fill屬性,對(duì)于fill 填充屬性中常見(jiàn)的屬性,fill-opacity,fill-rule,描邊屬性。通過(guò)案例的分析說(shuō)明進(jìn)行了詳細(xì)講解,通過(guò)豐富的案例運(yùn)行效果圖了能夠直觀的看到結(jié)果,能夠幫助讀者更好的理解。
代碼很簡(jiǎn)單,希望能夠幫助你學(xué)習(xí)。
本文轉(zhuǎn)載自微信公眾號(hào)「前端進(jìn)階學(xué)習(xí)交流」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系前端進(jìn)階學(xué)習(xí)交流公眾號(hào)。