【问题标题】:invert SVG clip (show only outside path)反转 SVG 剪辑(仅显示外部路径)
【发布时间】:2012-07-09 09:40:02
【问题描述】:

是否可以用 SVG 反转剪辑的动作?在下面的示例中,我想显示两个圆圈之间的路径,而不是圆圈内部:

<svg xmlns="http://www.w3.org/2000/svg" width="985" height="740">
  <g>
    <clipPath id="re8-clip" clip-rule="nonzero">
      <rect id="sa11" x="763.0" y="176.5" width="70.0" height="25.0" rx="50" ry="50" fill="ForestGreen"/>
      <rect id="sa12" x="516.0" y="127.5" width="70.0" height="25.0" rx="50" ry="50" fill="ForestGreen"/>
    </clipPath>
    <rect id="sa11" x="763.0" y="176.5" width="70.0" height="25.0" rx="50" ry="50" fill="ForestGreen"/>
    <rect id="sa12" x="516.0" y="127.5" width="70.0" height="25.0" rx="50" ry="50" fill="ForestGreen"/>
  </g>
  <path stroke="Black" stroke-width="1.5" fill="none" d="M 798.0 189.0 551.0 140.0" clip-path="url(#re8-clip)"/>
</svg>

【问题讨论】:

标签: svg


【解决方案1】:

按照 Duopixel 评论中的链接,可以使用mask 解决问题:

<svg width="50%" height="50%" viewbox="0 0 985 740" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <rect id="sa11" x="763.0" y="176.5" width="70.0" height="25.0" rx="50" ry="50" />
    <rect id="sa12" x="516.0" y="127.5" width="70.0" height="25.0" rx="50" ry="50" />
  </defs>
  <mask id="re8-clip">
    <rect id="bg" x="0" y="0" width="100%" height="100%" fill="white"/>
    <use xlink:href="#sa11" fill="Black" />
    <use xlink:href="#sa12" fill="Black" />
  </mask>
  <use xlink:href="#sa11" fill="ForestGreen" />
  <use xlink:href="#sa12" fill="ForestGreen" />
  <path stroke="Black" stroke-width="1.5" fill="none" d="M 798.0 189.0 551.0 140.0" mask="url(#re8-clip)"/>
</svg>

顺便说一句,有没有人知道蒙版是否可以默认为白色,所以“bg”矩形不是必需的?

【讨论】:

  • 关于次要字符,可以得到填充白色的最少字符是:&lt;rect fill="white" width="100%" height="100%" /&gt; 在掩码内。
  • 您可以重复使用标签,将&lt;mask&gt; 中的两个矩形替换为:&lt;use xlink:href="#sa11" fill="#000"/&gt;&lt;use xlink:href="#sa12" fill="#000"/&gt;
  • True,但它们必须单独定义,因为use 标记不会覆盖fill 属性。更新了答案,包括 Ciantic 的评论。
  • 我将这种技术用于用户通过拖放定位的一些对象。我发现如果我遮盖的物体移动得太远,它们就会神秘地消失。我可以使用 元素本身的宽度、高度、x、y 和 maskUnits 属性来解决这个问题。
  • 你是个天才 RuskiN!
猜你喜欢
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2013-06-27
  • 2019-12-10
  • 1970-01-01
  • 2018-07-22
  • 2020-01-06
  • 2014-09-09
相关资源
最近更新 更多