用另一条路径屏蔽 SVG 路径

mask SVG path by another path

我有 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);

不适合我。你知道路吗?

您不需要使用 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>