首页 > 解决方案 > CSS动画在径向渐变背景下不平滑

问题描述

我正在尝试创建一个具有平滑边缘的脉动圆形背景。对于边缘平滑的圆圈,我使用的是这个 CSS 代码:

background: radial-gradient(black, black, transparent, transparent);

使用下面的代码可以很好地为背景颜色设置动画。但是,一旦我用这个径向渐变背景替换背景颜色,动画就会跳跃并且不再平滑。该行为在多个浏览器上是一致的。这是我遇到的问题的最小工作示例:

.global {
  background: lightskyblue;
}

.silver {
  // background: radial-gradient(black, black, transparent, transparent);
  animation: pulse 3s infinite;
}

@keyframes pulse {
  0%,
  100% {
    // background-color: black;
    background: radial-gradient(black, transparent, transparent, transparent);
  }
  50% {
    // background-color: white;
    background: radial-gradient(black, black, transparent, transparent);
  }
}
<body class="global">
  <img src="pngwave.png" alt="test" class="silver" />
</body>

我发现这个Stackoverflow问题很相似,但并没有帮助我解决我的问题。

标签: htmlcsscss-animationsradial-gradients

解决方案


你需要动画background-size

.box {
  width: 200px;
  height: 200px;
  background: radial-gradient(farthest-side,black, transparent) center no-repeat;
  animation:pulse 2s linear infinite alternate;
}
@keyframes pulse{
  from {
    background-size:50% 50%;
  }
  to {
    background-size:100% 100%;
  }
}
<div class="box"></div>


推荐阅读