CSS动画延迟重复

标签 css css-animations

我最近发现了如何“正确地”使用 CSS 动画(之前我认为它们不能像在 JavaScript 中那样制作复杂的序列)。所以现在我正在了解它们。

为了实现这种效果,我试图让渐变“耀斑”扫过类似进度条的元素。类似于原生 Windows Vista/7 进度条的效果。

@keyframes barshine {
  from {background-image:linear-gradient(120deg,rgba(255,255,255,0) -10%,rgba(255,255,255,0.25) -5%,rgba(255,255,255,0) 0%);}
  to {background-image:linear-gradient(120deg,rgba(255,255,255,0) 100%,rgba(255,255,255,0.25) 105%,rgba(255,255,255,0) 110%);}
}
.progbar {
  animation: barshine 1s 4s linear infinite;
}

如您所见,我尝试延迟 4 秒,然后在 1 秒内让闪光扫过,重复。

不过,animation-delay似乎只适用于第一次迭代,之后闪耀就一直重复扫过。

我“解决”了这个问题如下:

@keyframes expbarshine {
  from {background-image:linear-gradient(120deg,rgba(255,255,255,0) -10%,rgba(255,255,255,0.25) -5%,rgba(255,255,255,0) 0%);}
  80% {background-image:linear-gradient(120deg,rgba(255,255,255,0) -10%,rgba(255,255,255,0.25) -5%,rgba(255,255,255,0) 0%);}
  to {background-image:linear-gradient(120deg,rgba(255,255,255,0) 100%,rgba(255,255,255,0.25) 105%,rgba(255,255,255,0) 110%);}
}
.progbar {
  animation: barshine 5s linear infinite;
}

from80% 完全一样,导致“延迟”动画长度的 80%。

这可行,但对于我的下一个动画,我需要延迟是可变的(对于特定元素是常量,但在使用动画的元素之间是可变的),而动画本身保持完全相同的长度。

使用上面的“解决方案”,当我想要的只是更长的延迟时,我最终会得到一个更慢的动画。

是否可以将 animation-delay 应用于所有迭代,而不仅仅是第一个迭代?

最佳答案

我遇到了类似的问题,用过

@-webkit-keyframes pan {
   0%, 10%       { -webkit-transform: translate3d( 0%, 0px, 0px); }
   90%, 100%     { -webkit-transform: translate3d(-50%, 0px, 0px); }
}

有点烦人的是你必须伪造你的持续时间来解释两端的“延迟”。

关于CSS动画延迟重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58363841/

相关文章:

css - 循环背景图像在第一次运行时在图像之间闪烁

javascript - 扩大div的宽度以缩小其他div的宽度

css - 使图像在 Bootstrap 页面中延伸到整个 html 正文

html - 当父级宽度为 100% 时防止列展开

javascript - 生成轮子- Canvas

CSS3 关键帧动画定格动画图像抖动

html - 向一个元素添加 2 个 css 动画

html - 重复 CSS 关键帧动画

javascript - 滑动箭头按钮不显示在 slider 之间

html - CSS 网格布局中列的反向顺序