响应式SVG蒙版

我在Stack上查看了其他几个答案: Responsive SVG Clip Path or Mask Image Responsive SVG image mask

但是似乎没有一个对我有用。我有一个基于路径的SVG蒙版。我希望它扩展以填充所有可用空间(或收缩),同时保持路径的纵横比。

    svg {
        width: 100%;
        height: 100%;
    }
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 237.859 264.582" preserveAspectRatio="xMinYMin meet">
  <defs>
    <pattern id="triangle-image" patternUnits="userSpaceonUse" width="3918" height="3918">
      <image xlink:href="images/aspirational-photos/christian-buehner-JQFHdpOKz2k-unsplash.jpg" x="0" y="0" width="100%" height="100%" />
    </pattern>
    <pattern id="triangle-pattern" width="100%" height="100%" patternUnits="userSpaceonUse">
      <path id="triangle-path" d="M237.844,32.946c-0.001-9.981-4.42-19.279-12.121-25.512c-7.82-6.331-17.85-8.78-27.518-6.721
        c-3.373,0.717-6.639,1.979-9.707,3.751l-129.11,74.56l-42.942,24.8C6.147,109.771-0.001,120.42,132.312
        c0,11.892,6.149,22.541,16.449,28.487l84.623,48.833l87.457,50.486c7.179,4.143,15.193,5.435,23.174,3.736
        c15.41-3.279,26.166-16.532,26.156-32.222L237.844,32.946z"
        						fill="#fff" fill-rule="evenodd" width="100%" height="100%" />
    </pattern>
    <mask id="triangle-mask" width="100%">
      <rect x="0" y="0" width="100%" height="100%" fill="url(#triangle-pattern)" />
    </mask>
  </defs>
  <rect x="0" y="0" width="100%" height="100%" fill="url(#triangle-image)" mask="url(#triangle-mask)"/>
</svg>

无论我做什么,SVG似乎都遵循路径值。有没有办法使它像图像一样扩展或收缩?

xu8269909 回答:响应式SVG蒙版

我在将蒙版应用于图像而不是使用图案的意义上简化了您的代码。遮罩也是路径。我没有使用width="100%",因为svg元素的宽度将占用所有可用空间,即100%。 我想了解为什么您需要height="100%"

            <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 240 265">
                <defs>
                    <mask id="triangle-mask">
                        <path d="M237.844,32.946c-0.001-9.981-4.42-19.279-12.121-25.512c-7.82-6.331-17.85-8.78-27.518-6.721
c-3.373,0.717-6.639,1.979-9.707,3.751l-129.11,74.56l-42.942,24.8C6.147,109.771-0.001,120.42,132.312
c0,11.892,6.149,22.541,16.449,28.487l84.623,48.833l87.457,50.486c7.179,4.143,15.193,5.435,23.174,3.736
c15.41-3.279,26.166-16.532,26.156-32.222L237.844,32.946z"
                        fill="#fff"  />
                    </mask>
                </defs>
            <image xlink:href="https://s3-us-west-2.amazonaws.com/s.cdpn.io/222579/beagle400.jpg" mask="url(#triangle-mask)"/>
            </svg>

或者,如果您需要所有这些样式,请在代码中删除width="100%"作为掩码。

本文链接:https://www.f2er.com/3080979.html

大家都在问