我制作了一个SVG面具动画。我遇到的问题是SVG的边缘是“锯齿状的”,当动画出现时,我可以看到蒙版周围有一个轻微的黑色边缘。)它很小。我看过质量更好的GIF动画。使用SVG,我认为它会更干净)。
寻找更软边的解决方案。如果这意味着我需要使用PNG面具或应用某种类型的过滤效果?任何解决办法我都会高兴的。
CODEPEN
<mask id="text-mask">
<use x="0" y="0" xlink:href="#text" opacity="1" fill="#fff"/>
</mask>
<use x="0" y="0" xlink:href="#text" fill="#0d0d0d"/>
<rect class="water-fill" mask="url(#text-mask)" fill="url(#water)" x="-400" y="0" width="6000" height="650"/>发布于 2016-04-19 05:51:15
你看到“锯齿状边缘”深色轮廓的原因是你做SVG的方式。您正在将黑色文本路径的两个副本堆叠在自己的上面。然后你把红色的水动画放在上面。
您的SVG如下所示:
<svg>
<path with QURE (black)>
<use that path again (black)>
<water animation (red) using that path as a mask>
</svg>您有三个反别名的元素直接堆叠在一起。其中两个是黑色的,一个是红色的。因此,在形状的边缘,你得到一个混合的黑色和红色半透明像素。
您可以通过将第一个<path>定义放在<defs>部分中以避免呈现,从而大大改善外观。
这让你有了这样的安排:
<svg>
<use path with QURE shape (black)>
<water animation (red) using that path as a mask>
</svg>这很有帮助,但仍然在形状的边缘留下黑色和红色像素的混合。通过不绘制红色动画后面的黑色文本,您可以更好地改善外观。
要取得最好的效果,必须作出以下安排:
<svg>
<g with QURE mask>
<black rectangle background>
<water animation (red)>
</g>
</svg>有了这样的安排,我们只将面罩一次应用于混合的黑水和红水动画。因此,您应该没有黑色锯齿边框,因为现在只有一组反别名像素。
演示代码与这些更改应用。
https://stackoverflow.com/questions/36706210
复制相似问题