使用剪辑路径时如何保持边界半径?

How to keep border-radius when using clip-path?

我有一个项目需要创建某种类型的卡片。这些卡片在悬停时包含渐变背景。我添加了一个在项目悬停时显示的前项目。为了在卡片中包含背景渐变,我向卡片添加了剪辑路径属性。

但我面临的问题是剪辑路径没有剪辑圆角边框border-radius: 0.5rem;。我搜索了一下,发现用多边形裁剪路径是可以的。

我找到了一个 link,您可以在其中生成要剪裁的多边形项目:Clip poly generator

但我找不到适合的完美多边形。圆太圆了,斜角项目只有尖锐的边框。

body{
  background-color: black;
  }

.card-oval-gradient {
  position: relative;
  width: 10rem;
  height: 6rem;
  background-color: blue;
  border-radius: 0.5rem;
  clip-path: inset(0);
}

.card-oval-gradient > * {
  position: relative;
  z-index: 2;
}

.card-oval-gradient:hover::before {
  content: '';

  position: absolute;
  left: -7rem;
  top: -10rem;
  width: 18rem;
  height: 28rem;
  -moz-border-radius: 15rem / 20rem;
  -webkit-border-radius: 15rem / 20rem;
  border-radius: 15rem / 20rem;
  opacity: 0.6;
  transform: scaleX(-1) rotate(61deg);
  background-image: linear-gradient(
    138deg,
    #4d3d8f 0%,
    #df67ed 23%,
    #e24c26 65%,
    #f18823 84%,
    #3aa6c2 100%
  );

  filter: blur(50px);
}
<div class="card-oval-gradient">
</div>

使用掩码而不是剪辑路径:

body{
  background-color: black;
  }

.card-oval-gradient {
  position: relative;
  width: 10rem;
  height: 6rem;
  background-color: blue;
  border-radius: 0.5rem;
  -webkit-mask: linear-gradient(#fff 0 0);
  mask: linear-gradient(#fff 0 0);
}

.card-oval-gradient > * {
  position: relative;
  z-index: 2;
}

.card-oval-gradient:hover::before {
  content: '';

  position: absolute;
  left: -7rem;
  top: -10rem;
  width: 18rem;
  height: 28rem;
  -moz-border-radius: 15rem / 20rem;
  -webkit-border-radius: 15rem / 20rem;
  border-radius: 15rem / 20rem;
  opacity: 0.6;
  transform: scaleX(-1) rotate(61deg);
  background-image: linear-gradient(
    138deg,
    #4d3d8f 0%,
    #df67ed 23%,
    #e24c26 65%,
    #f18823 84%,
    #3aa6c2 100%
  );

  filter: blur(50px);
}
<div class="card-oval-gradient">
</div>