SVG图形引用、裁切、蒙版使用三个标签
1. <use>标签创建图形引用
2. <clipPath>标签裁切图形
3. <mask>标签创建蒙版
<use>标签
<use>标签使用URI引用一个<g>,<svg>或其他具有一个唯一的ID属性和重复的图形元素。复制的是原始的元素因此文件中的原始存在只是一个参考原始影响到所有副本的任何改变。
<use>标签使用xlink:href属性引用图形xlink:href="#id" 。
例子
<a></a>
效果

结论
从上面代码可以得出原型已经设置的属性引用会继承并且不能覆盖除了x、y。所以想引用能够设某个属性那原型就不能设置。
<clipPath>标签
<clipPath>标签用来定义剪切路径标签内可创建任意数量的基本形状包括<path>和<text>元素。图形使用clip-path属性来引用clipPath来做裁切 clip-path="url(#clip-id)" 。
clip-rule
clip-rule = "nonzero(默认值) | evenodd | inherit"
这个属性用于确定哪些点是属于裁剪路劲内部的点。对于简单的封闭图形这个很好判定但是对于复杂的内部有洞的图形就有区别了。这个属性的取值与fill-rule的取值含义是一样的。
所有在裁剪路径内的图形都可见所有在裁剪路径外的图形都不可见。
<mask>标签
蒙板mask是一种容器它定义了一组图形并将它们作为半透明的媒介可以用来组合前景对象和背景。
裁剪路径和其他的蒙板一个重要的区别就是裁剪路径是1位蒙板也就是说裁剪路径覆盖的对象要么就是全透明(可见的位于裁剪路径内部)要么就是全不透明(不可见位于裁剪路径外部)。而蒙板可以指定不同位置的透明度。
蒙板的效果基本就是根据蒙板中每个点的颜色和透明度计算出一个最终的透明度然后在渲染对象的时候在对象上面罩上这个带有不同透明度的蒙板层体现出蒙板的遮挡效果。
总结
关于蒙板的我还是有个疑问就是这个计算透明度的具体方式。这个问题牵涉出每个点的颜色跟最终的透明度的关系是否存在某些颜色算出的最终的透明度是一样的我在尝试蒙板代码时发现Mask2只要不是设置黑白其他颜色的效果都一样。
参考文献
本文为原创文章转载请保留原出处方便溯源如有错误地方谢谢指正。
本文转自 海角在眼前 博客园博客原文链接http://www.cnblogs.com/lovesong/p/6006264.html 如需转载请自行联系原作者