一篇文章带你了解SVG fill 属性

开发 前端
SVG形状的fill定义了其轮廓内的形状的颜色。换句话说,SVG形状的表面。填充是您可以为任何SVG形状设置的基本SVG CSS属性之一。

[[380901]]

SVG形状的fill定义了其轮廓内的形状的颜色。换句话说,SVG形状的表面。填充是您可以为任何SVG形状设置的基本SVG CSS属性之一。

一、Fill

SVG形状的填充是形状轮廓内的填充。

定义了一个使用蓝色(#0000ff)填充颜色但没有描边颜色的圆。

  1. <!DOCTYPE html> 
  2. <html> 
  3.   <body style="background-color: aqua;"
  4.     <title>项目</title> 
  5.     <svg width="500" height="100"
  6.       <circle cx="50" cy="50" r="25" style="stroke: none; fill: #FF0000;" /> 
  7.     </svg> 
  8.   </body> 
  9. </html> 

运行效果:

二、填充和描边示例

可以将SVG笔触和填充颜色组合为SVG形状。

示例

使用较深的蓝色(#000066)描边颜色和较浅的蓝色(#3333ff)填充颜色定义圆。

  1. <!DOCTYPE html> 
  2. <html> 
  3.   <body style="background-color: aqua;"
  4.     <title>项目</title> 
  5.     <svg width="500" height="100"
  6.       <circle cx="50" cy="50" r="50" style="stroke: #000066; fill: #FF0000;" /> 
  7.     </svg> 
  8.   </body> 
  9. </html> 

运行效果:

1. fill-opacity

SVG CSS属性 fill-opacity 用于设置形状的填充颜色的不透明度。fill-opacity 使用介于0和1之间的数值。值越接近0,填充越透明。值越接近1,填充越不透明。默认fill-opacity值为1,这意味着填充颜色是完全不透明的。

这是一个SVG填充不透明度 fill-opacity示例,其中包含两个具有不同(fill-opacity)的圆:

示例

  1. <svg width="500" height="120"
  2.       <text x="22" y="40">World Behindeda Look</text> 
  3.  
  4.       <circle cx="50" cy="50" r="25" style="stroke: none; fill: #0000ff; 
  5.                  fill-opacity: 0.3;  "> 
  6.         </path> 
  7.       <circle cx="120" cy="50" r="25" style="stroke: none; fill: #0000ff; 
  8.                  fill-opacity: 0.7;  "> 
  9.        </path> 
  10. </svg> 

运行效果:

请注意

右圆圈后面的文本比左圆圈后面的文本更不可见。那是因为右圆fill-opacity比左圆高。

2. fill-rule

fill-rule决定的复杂形状的填充方式。fill-rule可以采用两个不同的值 。这些值是:

2.1 nonzero

通常,这两个值是确定形状内部和外部形状的规则。仅内部填充,对于一个圆来说,这很简单,但是对于更复杂的形状,这并不是那么容易。

示例

  1. <svg width="500" height="120"
  2. <path d="M50,20 l40,40 l-40,40 l-40,-40 l40,-40 
  3.          M50,40 l20,20 l-20,20 l-20,-20 l20,-20" 
  4.          style="stroke: #000000; 
  5.          fill: #6666ff; 
  6.          fill-rule: nonzero; 
  7.       "> 
  8.   </path> 
  9.  
  10. <path d="M150,20 l40,40 l-40,40 l-40,-40 l40,-40 
  11.          M150,40 l-20,20 l20,20 l20,-20 l-20,-20" 
  12.          style="stroke: #000000; 
  13.          fill: #6666ff; 
  14.          fill-rule: nonzero;"></path> 
  15. </svg> 

代码解析:

两个路径示例各有8条线,每条线都以菱形绘制,其中较大的菱形包含较小的菱形。

在左侧路径中,内部菱形是从左向右(顺时针)绘制的。右边的路径中,内部菱形从右到左(逆时针)绘制。

这是使用fill-rule:non-zero绘制时的结果图像。

2.2 evenodd

这是相同的路径示例,使用fill-rule:evenodd。

示例

  1. <svg width="500" height="120"
  2. <path d="M50,20 l40,40 l-40,40 l-40,-40 l40,-40 
  3.          M50,40 l20,20 l-20,20 l-20,-20 l20,-20" 
  4.       style="stroke: #000000; 
  5.       fill: #6666ff; 
  6.       fill-rule: evenodd;" ></path> 
  7.  
  8. <path d="M150,20 l-40,40 l40,40 l40,-40 l-40,-40 
  9.          M150,40 l-20,20 l20,20 l20,-20 l-20,-20" 
  10.       style="stroke: #000000; 
  11.       fill: #6666ff; 
  12.       fill-rule: evenodd;" ></path> 
  13. </svg> 

运行后图像效果:

注意:

evenodd字面意思是“奇偶”。

按该规则:

要判断一个点是否在图形内,从该点作任意方向的一条射线,然后检测射线与图形路径的交点的数量。在任意方向上从点到无穷远绘制一条线(射线)。每当路径穿过射线时,都增加一个计数器。如果总数是偶数,则该点在外面。如果总计数为奇数,则该点位于形状内部。

三、总结

本文基于Html基础,讲解了有关SVG中的fill属性,对于fill 填充属性中常见的属性,fill-opacity,fill-rule,描边属性。通过案例的分析说明进行了详细讲解,通过丰富的案例运行效果图了能够直观的看到结果,能够帮助读者更好的理解。

代码很简单,希望能够帮助你学习。

 本文转载自微信公众号「前端进阶学习交流」,可以通过以下二维码关注。转载本文请联系前端进阶学习交流公众号。

 

责任编辑:武晓燕 来源: 前端进阶学习交流
相关推荐

2021-02-23 06:51:16

SVGstrokeHtml基础

2021-02-26 20:01:57

SVG滤镜元素

2020-12-08 08:09:49

SVG图标Web

2021-01-04 10:14:42

SVG标签元素

2021-03-26 09:57:51

SVGHtml基础SVG图像

2020-12-15 08:15:34

SVG元素路径

2020-12-25 09:42:51

SVGtspanSVG基础

2022-05-13 16:21:38

javascrip脚本SVG

2020-11-10 10:48:10

JavaScript属性对象

2020-12-29 09:39:38

元素属性定位

2020-12-23 08:12:08

javascriptSVG脚本SVG元素

2021-01-01 09:18:48

SVG图像元素

2023-07-30 15:18:54

JavaScript属性

2020-12-11 08:39:14

SVG代码剪切

2020-12-04 08:40:29

SVG动画元素

2023-05-12 08:19:12

Netty程序框架

2021-06-30 00:20:12

Hangfire.NET平台

2023-08-01 14:34:12

HTMLCSS

2023-06-28 15:04:59

CSSHTML

2022-03-04 09:31:41

CSS前端属性选择器
点赞
收藏

51CTO技术栈公众号