【问题标题】:css sprite animation : delay between loopscss sprite 动画:循环之间的延迟
【发布时间】:2023-04-07 02:12:01
【问题描述】:

我正在尝试为 png 精灵设置动画。 我的目标是平滑地旋转对象,即没有停顿 或循环之间的视觉不一致,就像一个精心设计的“忙碌”的 gif 看起来像。

为什么不用 gif 呢?因为我想在我的图像中有更多的颜色, 我目前也在尝试了解新的 css3 内容。

所以,我想出了这个样式表:

.hexagon
{
    width:250px;
    height:250px;
    background:url('http://i59.servimg.com/u/f59/18/89/55/67/hexago10.png');    
    -webkit-animation: playhexagon .5s steps(18) infinite;
    animation: playhexagon .5s steps(18) infinite;
}

@-webkit-keyframes playhexagon {
   0% { background-position: 0px; }
   100% { background-position: -4500px; }
}

@keyframes playhexagon {
   0% { background-position: 0px; }
   100% { background-position: -4500px; }
}

我使用 18 步,因为精灵中有 18 张图像,infinite 显然是用于无限动画。

您可以查看here,这还不错,但并不完美:我不知道如何抑制循环之间的(小)延迟。

如果您看不清楚,请尝试更改动画持续时间:在 0.5 和 1 秒之间切换让我感觉更明显。

我认为这是因为精灵中的动画开始和结束位置实际上是相同的图像(0px和-4500px在精灵中渲染相同的图像)

我看到0% { background-position: 0px; } 指令是可选的,没有它的动画播放方式完全相同,但我写它是为了明确说明发生了什么。

我尝试了一些没有结果的技巧来解决这个问题:

  • 在 sprite 循环之间的第一张图片中仅显示一次,或者
  • 将结束和开始动画的速度加倍,这样眼睛就不会注意到了

我宁愿只使用 css,但如果不可能,我会使用完整的 javascript。期待新的 css3 动画。

感谢您的任何见解等

【问题讨论】:

    标签: css animation sprite


    【解决方案1】:

    实际上,暂停的不是浏览器/css/动画。这只是特定动画的制作方式,两个非常相似的帧使它感觉就像在暂停。

    为了演示,您可以将动画更改为中途开始和中途结束。如果它正在暂停,您现在会认为暂停是在六边形水平而不是面向您时,但实际上它看起来完全一样。

    @keyframes playhexagon {
       0% { background-position: 2250px; }
       100% { background-position: -2250px; }
    }
    

    http://jsfiddle.net/sk9o3L3g/4/

    【讨论】:

    • 这个精灵是由 18 个不同的图像组成的,所以如果使用 17 个,我会失去一个。我已经尝试过了,但我还是会检查你的小提琴
    • 精灵中有18个不同的图像(你可以检查一下),但是如果我不清楚,指令0px和-4500px在精灵(第一个)中显示相同的图像sry
    • 我使用更新后的 png 进行了更多测试,其中包含 17 个图像(减去上一个 png 的最后一个),我仍然看到循环之间有一个非常小的停顿,但这可能只是一种感觉
    • 我很确定这只是一种感觉 - 尝试我上面建议的更改,看看暂停是否出现在序列中的不同点。如果没有,则意味着暂停完全取决于图像。此外,尝试将精灵大小加倍 - 看看它是否只暂停每第二次迭代。如果它在中间停顿,则再次归结为图像。最后,尝试一些不那么主观的东西——例如。一个被分成弧的圆。我很有信心你会发现我是对的。这是一个非常常见的用例,它在许多类似的动画中都非常有效。
    • 示例:jsfiddle.net/sk9o3L3g/6(使用来自spiffygif.com/docs/#png-sprites的图像)
    猜你喜欢
    • 2015-05-20
    • 1970-01-01
    • 2016-07-05
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多