微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SVG 路径不会作为光滑轮播的蒙版居中

如何解决SVG 路径不会作为光滑轮播的蒙版居中

我发现了 Fabio Ottaviani 的这款很棒的 CodePen,它采用 SVG Circle 并将其用作当前轮播图像的蒙版。由于jQuery,圆圈完全居中,甚至可以调整大小。但是,当我将圆圈更改为我自己的 SVG 图像路径时,该路径始终位于窗口的左上角。如何将 SVG 路径居中作为图像蒙版

这是 fabio 的原始 CodePen:

https://codepen.io/supah/pen/JMvEzQ

  <div class="item">
    <svg xmlns="http://www.w3.org/2000/svg" class="original">
      <image width="100%" height="100%" preserveAspectRatio="xMidYMid slice" xlink:href="https://github.com/supahfunk/supah-codepen/blob/master/flowers/1.jpg?raw=true" mask="url(#donutmask)"></image>
    </svg>
      <svg>
      <defs>
        <mask id="donutmask">
          <circle id="outer" cx="250" cy="250" r="400" fill="white"/>
          <circle id="inner" cx="250" cy="250" r="300"/>
        </mask>
      </defs>
    </svg>

这是我使用 SVG 路径作为掩码的修改版本:

https://codepen.io/applebaumian/pen/ExWzymE

    <svg>
      <defs>
        <mask id="donutmask">
          <path id="logo_mask" fill="white" stroke="white"
                d="M 10,30
           A 20,20 0,1 50,1 90,30
           Q 90,60 50,90
           Q 10,60 10,30 z"/>
        </mask>
      </defs>
    </svg>

代码成功移动了图像,但不适合响应式设计……我也无法调整图像大小。

<svg>
   <defs>
     <mask id="donutmask">
       <path id="logo_mask" fill="white" stroke="white" transform="translate(500,300)" d="M 10,30 A 20,30 Q 90,90 Q 10,30 z"/>
     </mask>
   </defs>
</svg>

使用 CSS 我能够定位蒙版并再次使用 translate 移动它,但没有别的。

#logo_mask {
  -webkit-transform-origin: center;
  -webkit-transform: translatex(50%) translateY(50%);
}

我也可以使用这个来改变它的比例

#logo_mask{
  -webkit-transform:scale(6);
}

但这会严重影响其坐标,使其几乎无法定位。必须有一种响应方式来做到这一点......

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。