一篇文章带你了解SVG 蒙版(Mask)

摘要:
circlex=“25”cy=“25”r=“25“/></svg>linearGradientx1=“0%”y1=“0%”x2=“100%”y2=“0”扩展方法=“pad”>stopfoffset=“100%”stop color=“#000000”stop opacity=“1”/>矩形=“0”y=“0”/>此文本位于矩形下方<

SVG蒙版功能可将蒙版应用于SVG形状。蒙版可确定SVG形状的哪些部分可见,以及具有什么透明度。运行效果可以将SVG蒙版视为剪切路径的更高级版本。

一、简单的蒙版

代码解析:

本示例使用ID=mask1定义一个蒙版。

元素内部是一个元素。元素定义了蒙版的形状。

定义了一个使用mask的元素,元素使用CSS style属性mask内部引用mask ID属性。

例:

<svg   height="120">
<defs>
<mask   x="0" y="0"   height="100">
<rect x="0" y="0"       />
</mask>
</defs>
<rect x="1" y="1"       />
</svg>

注:

要显示的矩形的高度为100像素,但垂直的前50个像素是可见的。那是因为蒙版矩形只有50个像素高。矩形仅在蒙版矩形所覆盖的部分中可见。

黑色轮廓矩形是没有蒙版的矩形的大小。

二、其他形状的蒙版

可以使用任何SVG形状作为蒙版。

使用圆圈作为蒙版。

<svg>
 <defs>
   <mask   x="0" y="0"     >
     <circle cx="25" cy="25" r="25"  />
   </mask>
 </defs>

 <rect x="1" y="1"    
    />

</svg>

运行效果:

一篇文章带你了解SVG 蒙版(Mask)第1张

注:仅在可见蒙版圆的地方可见引用蒙版的矩形。

三、蒙版形状颜色定义蒙版不透明度

1. 如何去定义不透明度 ?

蒙版形状(圆形或矩形)的填充颜色设置为#ffffff。

蒙版形状的颜色定义使用蒙版的形状的不透明度。蒙版形状的颜色越接近#ffffff(白色),使用蒙版的形状将越不透明。蒙版形状的颜色越接近#000000(黑色),使用蒙版的形状将越透明。

2. 案例

其中蒙版由两个具有不同颜色(#ffffff和#66666)的矩形组成。蒙版用于单个矩形,因此运行效果可以使用蒙版查看蒙版中的两个不同形状如何影响相同形状。

<svg   height="120">
<defs>
 <mask   x="0" y="0"     >

   <rect x="0" y="0"     
          />

   <rect x="0" y="50"    
          />
 </mask>
</defs>

<text x="10" y="55" style="stroke: none; fill: #000000;">
  此文本在矩形下方
</text>

<rect x="1" y="1"    
    />
 </svg>

运行效果:

一篇文章带你了解SVG 蒙版(Mask)第2张

四、在蒙版中使用渐变

如果对用作蒙版的形状应用渐变,则可以实现蒙版所应用的形状的渐变透明度。

使用渐变的蒙版,使用蒙版的矩形以及该矩形下的文本,因此可以看到其透明度如何随着蒙版的渐变而变化。

例:

<svg   height="120">
<defs>
<linearGradient   x1="0%" y1="0%" x2="100%" y2="0%" spreadMethod="pad">
<stop offset="0%" stop-color="#ffffff" stop-opacity="1" />
<stop offset="100%" stop-color="#000000" stop-opacity="1" />
</linearGradient>

<mask   x="0" y="0"   height="100">
<rect x="0" y="0"       />
</mask>
</defs>

<text x="10" y="55" style="stroke: none; fill: #000000;">
此文本在矩形下方
</text>
<rect x="1" y="1"       />
</svg>

运行效果:

一篇文章带你了解SVG 蒙版(Mask)第3张

注:渐变蒙版可以与其他效果(例如填充图案)结合使用。

SVG代码:

<svg   height="120">
<defs>

 <linearGradient  
               x1="0%"   y1="0%"
               x2="100%" y2="0%"
               spreadMethod="pad">
   <stop offset="0%"   stop-color="#ffffff" stop-opacity="1"/>
   <stop offset="100%" stop-color="#000000" stop-opacity="1"/>
 </linearGradient>


 <pattern  
        x="10" y="10"    
        patternUnits="userSpaceOnUse" >

   <circle cx="10" cy="10" r="10"   />

 </pattern>

 <mask   x="0" y="0"     >
     <rect x="0" y="0"     
          />
 </mask>
</defs>

<text x="10" y="55" style="stroke: none; fill: #000000;">
  此文本在矩形下方
</text>
<rect x="1" y="1"    
      />
 </svg>

运行效果:

一篇文章带你了解SVG 蒙版(Mask)第4张

注:其中可见矩形使用填充图案作为填充,并在其蒙版中使用渐变。

要显示的矩形如何引用其CSS属性中的fill填充图案,以及如何引用其CSS属性中的mask蒙版。

五、在蒙版中使用填充图案

也可以在蒙版中使用填充图案,从而使蒙版成为填充图案的形状。

例:

<svg   height="120">
<defs>
 <pattern  
        x="10" y="10"    
        patternUnits="userSpaceOnUse" >

     <circle cx="10" cy="10" r="10"   />
 </pattern>

 <mask   x="0" y="0"     >
   <rect x="0" y="0"     
        />
 </mask>
</defs>

<text x="10" y="55" style="stroke: none; fill: #000000;">
  此文本在矩形下方
</text>
<rect x="1" y="1"    
    />
 </svg>

运行效果

一篇文章带你了解SVG 蒙版(Mask)第5张

注:矩形现在是半透明的,其中填充图案绘制了圆圈,而在其他位置完全透明。

六、总结

本文基于HTML基础,介绍了SVG中蒙版的应用。定义不同形状的蒙版,设置蒙版的不透明度,蒙版中使用渐变,以及蒙版应用填充图案。都通过项目,进行详细的讲解。

希望能够帮助你更好的学习。

想学习更多Python网络爬虫与数据挖掘知识,可前往专业网站:http://pdcfighting.com/

免责声明:文章转载自《一篇文章带你了解SVG 蒙版(Mask)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C# 类类型136-如何访问redis数据库下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

默認打開pr_debug和dev_dbg

作者:彭東林 郵箱:pengdonglin137@163.com 日期:2016-08-26 18:04:14 在進行Linux驅動開發時經常見到使用pr_debug和dev_dbg打印驅動的log,如果在內核配置時選擇了CONFIG_DYNAMIC_DEBUG宏,那麼就可以利用類似下面的命令打開對應文件的log: echo -n "file xxx.c...

WebAPI客户端

封装WebAPI客户端,附赠Nuget打包上传VS拓展工具 一、前言 上篇《 WebAPI使用多个xml文件生成帮助文档 》有提到为什么会出现基于多个xml文件生成帮助文档的解决方案,因为定义的模型可能的用处有: 1:单元测试 2:其他项目引用(可能以Nuget包的形式) 3:WebAPI客户端(封装的HttpClient及WebAPI接口调用,其实包含...

nginx+tomcat+java部署总结

昨天部署了一下nginx+tomcat+java出现了很多问题,以下为整理总结。 使用了两种部署方式,一种是源码部署,一种是war部署。 java源码部署总结: 环境:nginx+tomcat 部署方式:源码部署 1 源码目录/chroot2/test/schedule 目录下面就是所有源码了 2 tomcat 位置: /usr/local/tomc...

JS-七大查找算法

顺序查找 二分查找 插值查找 斐波那契查找 树表查找 分块查找  哈希查找 查找定义:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。查找算法分类:1)静态查找和动态查找;注:静态或者动态都是针对查找表而言的。动态表指查找表中有删除和插入操作的表。2)无序查找和有序查找。无序查找:被查找数列有序无序均可;有序查找:被查找数列...

防止表单重复提交的方法

1、在jsp页面的button添加相关js代码: <input type="button" value="提交" onclick="this.disabled=true;this.form.submit()"> 此方法缺点是用户可能禁用js,此方法就可能失效。 2、session的token机制...

使用SpringBoot Admin监控SpringCloud微服务

spring-boot admin的github地址:https://github.com/codecentric/spring-boot-admin 本文基于SpringCloud的环境和配置上增加配置信息,而不是从0开始的配置。 一、搭建admin服务端 1、引入pom <properties> <spring-boot-a...