为什么遮罩动画不能与 stroke-dashoffset 一起使用?
<svg id='h' version="1.1" xmlns="http://www.w3.org/2000/svg">
<mask id='mask'>
<circle r="30" cx="50" cy="50" stroke='black' fill="black" stroke-width='50' stroke-dashoffset='20 20'>
<animate
attributeName='stroke-dashoffset'
begin='h.click'
dur='10s'
repeatCount='indefinite'
values='50'
/>
</circle>
<rect width="100%" height="100%" fill="green" />
</mask>
<circle r="30" cx="50" cy="50" fill="orange" />
<rect width="100" height="100" fill='tomato' mask='url(#mask)' />
</svg>
在 svg 中,最好总是添加
viewBox
,如果不指定width
andheight
,那么图像将占据整个浏览器屏幕。如果您需要适应性,请以相对单位指定宽度和高度。要使用帮助动画绘制圆形边框
stroke-dashoffset
,您需要知道圆形的总长度。有了半径
r="30"
,它2 * 30 * 3.14 = 188.4
也
stroke-dasharray ="188.4"
等于stroke-dashoffset
下面是一个不带面具的示例动画,以更好地理解原理。
stroke-dashoffset
从最大值 (188.4) 变化到零,从而确保边框从零绘制到一个完整的圆。点击后的动画
现在从您的示例中添加圆形动画蒙版
将蒙版元素着色为黑色会导致它切出一个洞
请参阅代码中的注释,以便更容易理解要点。