我可以在不指定剪辑路径ID的情况下在SVG中应用剪辑吗?

mik*_*vis 11 svg clone clipping

在我的标记中,我有一个像这样的块:

<svg width="0" height="0" style="display:none" id="dummy-wedge">
 <g class="dummy" transform="translate(100, 100)">
    <defs>
      <clipPath id="clip1">
        <polygon id="clip1Shape" points="-100,-100 0,-100 0,0 -100,-20" />        
      </clipPath>
    </defs>
    <circle id="" cx="0" cy="0" r="52" fill-opacity="0" 
                  stroke="#ffffff" stroke-opacity="0.6" stroke-width="50" 
                  pointer-events="visiblePainted" clip-path="url(#clip1)" />
  </g>
</svg>
Run Code Online (Sandbox Code Playgroud)

我想要做的是获取该块并将其克隆到不同的svg根元素中以创建一堆楔形,每个楔形具有不同的位置和剪辑段.这部分很酷,但令人沮丧的是每个克隆的clipPath元素都需要接收一个新的ID,然后必须将其插入到匹配元素的clip-path属性中.

我知道,如果所有的弧是相同的长度,我可以有一个共同的剪辑,并使用旋转变换,但他们并不一定是相同的长度.

是否可以使用拓扑关系声明剪辑多边形而不是通过显式命名它?或者,是否有更好的方法在使用路径之外定义这样的弧?

谢谢.

Eri*_*röm 1

为什么需要使用剪辑?难道不能只使用带有各种弧段的路径元素吗?

目前还没有声明性的方法来获得您想要的行为,但这正是SVG 参数规范旨在解决的问题。查看那里的示例以及为处理内容提供​​的脚本实现(作为支持当前浏览器的一种方式)。注意:它仍然是一个工作草案,可能会发生变化。