用另一条路径遮盖SVG路径

时间:2018-11-13 10:26:45

标签: animation svg mask

我有SVG路径(纯色),我想用其他路径(虚线)遮盖。我有这个CSS

        .dashed{
          stroke-dasharray: 5;

        }
        .path {
          stroke-dasharray: 852;
          stroke-dashoffset: 852;
          animation: dash 4s 1s linear forwards;
        }
        @keyframes dash {
          to { 
            stroke-dashoffset: 0; 
          } 
        } 

和这样的SVG

<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="612px" height="792px" viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve">
    <g transform="scale(1.7)">
        <path class="path" fill="none" stroke="#e31f1a" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="1.0" d="m 34.161514,227.15068 c 0,0 5.335031,41.13009 -10.338686,53.31427 -13.8827124,10.79193 -26.8802222,-16.84233 0.681739,-19.39738 52.917804,-4.90561 69.13065,91.87642 69.13065,91.87642"/>
    </g>

    <g transform="scale(1.71)">
        <path class="dashed" fill="none" stroke="black" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="1.5" d="m 34.161514,227.15068 c 0,0 5.335031,41.13009 -10.338686,53.31427 -13.8827124,10.79193 -26.8802222,-16.84233 0.681739,-19.39738 52.917804,-4.90561 69.13065,91.87642 69.13065,91.87642"/>
    </g>    
</svg>

路径相同。我不只使用虚线的原因是动画(请参阅CSS部分),我要在其中进行效果绘制虚线。

使用蒙版图像(虚线在其中)

 mask-image: url(mask.svg);

对我不起作用。你知道吗?

1 个答案:

答案 0 :(得分:1)

您不需要使用mask-image。这是当您要使用遮罩遮罩HTML元素时使用的。

您应该只使用SVG <mask>元素。并在其中设置路径动画。

.dashed {
  stroke-dasharray: 5;
}

.path {
  stroke-dasharray: 226;
  stroke-dashoffset: 226;
  animation: dash 4s 1s linear forwards;
}

@keyframes dash {
  to { 
    stroke-dashoffset: 0; 
  } 
} 
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" width="612px" height="792px" viewBox="0 0 612 792">
  <defs>
    <mask id="mymask">
      <path class="path" fill="none" stroke="#fff" stroke-width="2"
            d="m 34.161514,227.15068 c 0,0 5.335031,41.13009 -10.338686,53.31427 -13.8827124,10.79193 -26.8802222,-16.84233 0.681739,-19.39738 52.917804,-4.90561 69.13065,91.87642 69.13065,91.87642"/>
    </mask>
  </defs>

  <g transform="scale(1.71)">
    <path class="dashed" fill="none" stroke="black" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="1.5"
          mask="url(#mymask)"
          d="m 34.161514,227.15068 c 0,0 5.335031,41.13009 -10.338686,53.31427 -13.8827124,10.79193 -26.8802222,-16.84233 0.681739,-19.39738 52.917804,-4.90561 69.13065,91.87642 69.13065,91.87642"/>
  </g>    
</svg>