1

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

但我面临的问题是剪辑路径不会剪辑圆角边框border-radius: 0.5rem;。我搜索并发现可以通过使用多边形来剪辑路径。

我找到了一个链接,您可以在其中生成要剪辑的多边形项目:剪辑多边形生成器

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

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>

4

1 回答 1

1

使用蒙版而不是剪辑路径:

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>

于 2021-03-29T09:28:07.793 回答