我正在使用 stroke-dashoffset 技术创建动画书法,将笔画作为动画蒙版应用到 SVG 之上。这适用于大多数浏览器,但我想在 PNG 上应用相同的掩码。这样,即使浏览器在处理 SVG 和掩码(IE...)时都有问题,至少它会按原样显示 PNG。
这是带有纯 SVG 的工作书法的代码笔: https ://codepen.io/benviatte/pen/PMzmYB
这是非工作书法的代码笔,我在其中放置了图像而不是基本 SVG。它只是显示空白,除非我删除“mask-image”属性,在这种情况下它不会动画: https ://codepen.io/benviatte/pen/eqzWzJ
最后,这里是只显示空白的 PNG 版本的代码: HTML:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 354.33071 248.03149">
<mask id="mask" maskUnits="userSpaceOnUse">
<path d="M 92.81613,118.88531 C 92.79077,113.54067 89.77774,108.7899 89.336626,103.42689 96.06007,89.146492 85.818314,62.350762 62.06357,80.661632 c -5.787226,7.87329 -12.023557,16.43904 -12.784729,26.500038 -0.404099,5.34115 3.084547,9.85663 7.361464,12.76814 9.170344,6.24271 20.057653,10.0779 27.888503,18.14154 4.373535,4.50356 2.810446,11.25662 2.004789,16.78827 -1.093846,7.51033 -10.89645,19.36241 -18.314927,21.84098 -9.433311,3.81749 -18.936726,-10.31651 -25.709437,-30.06406" />
</mask>
</svg>
<img src="http://thehermitcrab.org/imgs/S2.png"/>
CSS:
mask path {
fill: none;
stroke: white;
stroke-width: 22;
stroke-dasharray: 237 237;
stroke-dashoffset: 237;
animation: brush 1s cubic-bezier(.6,.3,.3,.9);
animation-fill-mode: forwards;
}
@keyframes brush {
0% { stroke-dashoffset: 237; }
20% { stroke-dashoffset: 237; }
80% { stroke-dashoffset: 0; }
100% { stroke-dashoffset: 0; }
}
img, svg{
width: 300px;
position: absolute;
top: 0;
left: 0;
}
img {
-webkit-mask-image: url(#mask);
mask-image: url(#mask);
}
太感谢了!!!