【发布时间】:2018-11-06 14:44:51
【问题描述】:
部分出于趣味,部分出于我的设计理念,我正在尝试将动画 gif 转换为纯动画 CSS。
它几乎可以正常工作,但我遇到了一个障碍,我不确定是什么导致了我的问题,或者我该如何解决它。我很遗憾地怀疑我只是遇到了技术的限制。
我用来测试的 gif 是这样的:https://us.v-cdn.net/5018289/uploads/editor/yj/lcdjneh1yoxv.gif
至于实际的 CSS,我一直在尝试在此处实现该方法(动画 box-shadow 属性),因为它似乎是最可行的:https://codepen.io/andrewarchi/pen/OXEEgL
#ash::after {
animation: ash-frames 0.4s steps(1) infinite;
}
@keyframes ash-frames {
0% {box-shadow: 32px 8px #181818, 40px 8px #181818,...}
...
}
在给定的示例中,动画看起来相当无缝,所以我认为值得一试。明显差异:我使用的 gif 具有更多帧和更多像素。
作为一个快速概述,我的 CSS(我正在使用供应商标签等,这只是一个示例):
.pixel-art-3940::after {
animation: pixel-art-3940-frames 1s steps(5, end) infinite;
}
@keyframes pixel-art-3940-frames {
0% {box-shadow: 112px 68px rgba(77, 69, 64, 1),...}
16.666666666666668% {box-shadow:115px 65px rgba(77, 69, 64, 1),...}
...
}
动画似乎确实可以正常工作,但是动画上有强烈的“闪烁”效果。见下文:
我已经尝试了 Chrome 中“闪烁过渡”的常用解决方案 - 例如将 -webkit-backface-visibility 设置为 hidden - 但到目前为止还没有解决问题。
正如我所说,我担心我只是遇到了技术本身的限制。任何想法可能是什么问题,以及我是否可以解决它?
编辑:这个特定动画的完整源代码可以在这两个 Gists 中找到。由于 CSS 文件的大小,我选择了 Gists。
【问题讨论】:
-
codepen 显示了一个看起来不错的 pokemon 动画,您是否有您要在某处重现所显示内容的代码?
-
@ChrisW。我在问题中添加了完整的来源。