如何在形状内夹一个圆

问题描述 投票:1回答:2

Frame

这是一个长方形里面的形状。

-webkit-clip-path: polygon(0% 0%, 0% 100%, 25% 100%, 25% 25%, 75% 25%, 75% 75%, 25% 75%, 25% 100%, 100% 100%, 100% 0%);
clip-path: polygon(0% 0%, 0% 100%, 25% 100%, 25% 25%, 75% 25%, 75% 75%, 25% 75%, 25% 100%, 100% 100%, 100% 0%);

如何在形状里面夹一个圆?

css clip-path
2个回答
2
投票

你可以使用你在svg中画的路径,比如这样。

img{-webkit-clip-path: url(#clip);;
clip-path: url(#clip);}
<img src="https://assets.codepen.io/222579/darwin300.jpg" />
<svg height="0" width="0" class="svg-clip" style="position:absolute">
        <defs>
             <clipPath id="clip" clipPathUnits="objectBoundingBox">
               <path d="M0,0 L1,0 1,1 0,1 0,0M.75,.5A.25,.25 0 1 0 .25,.5A.25,.25 0 1 0 .75,.5z" />
            </clipPath>
        </defs>
</svg>

请注意 clipPathUnits="objectBoundingBox" 而且路径的第一部分是顺时针绘制,而第二部分(孔)是逆时针绘制。


2
投票

使用 mask 而不是。

.box {
  display:inline-block;
  width:200px;
  height:200px;
  background:url(https://i.picsum.photos/id/100/800/800.jpg) center/cover;
  -webkit-mask:radial-gradient(circle 40px,transparent 98%,#fff 100%);
          mask:radial-gradient(circle 40px,transparent 98%,#fff 100%);
}
<div class="box"></div>

<div class="box" style="width:300px;height:300px"></div>

你可以让它像下面这样响应。

.box {
  display:inline-block;
  width:200px;
  height:200px;
  background:url(https://i.picsum.photos/id/100/800/800.jpg) center/cover;
  -webkit-mask:radial-gradient(circle farthest-side,transparent calc(100% - 30px),#fff calc(100% - 32px));
          mask:radial-gradient(circle farthest-side,transparent calc(100% - 30px),#fff calc(100% - 32px));
}
<div class="box"></div>

<div class="box" style="width:300px;height:300px"></div>
© www.soinside.com 2019 - 2024. All rights reserved.