【发布时间】:2015-11-26 04:20:47
【问题描述】:
我正在尝试为圆形 div 设置动画以提供类似波纹的效果,填充它的容器。应该有一个初始波纹(边框),然后是主要形状扩展以填充容器。
我通过将圆形 div 的边框宽度与填充相结合来实现波纹,从而将边框向外推。
问题是,当填充动画时,圆形 div 的边界框会闪烁白色。如果我删除动画的填充部分,只为边框宽度设置动画,则不会出现闪烁,所以我知道是填充导致了问题。
@keyframes circle {
0% {
width:0.001px;
border-width:0px;
padding:0px;
}
50% {
width:0.001px;
border-width:100px;
padding:400px;
}
100% {
width:125%;
border-width:100px;
padding:400px;
}
}
Here's a fiddle 进行演示。点击灰色框将其激活。
编辑:在 Firefox 中进行测试后,它按预期工作。可能是特定于 webkit 的?
编辑 2:我见过的用于修复通用“动画期间闪烁”错误的 2 个常见解决方案是添加样式
-webkit-transform-style: preserve-3d;
或
-webkit-backface-visibility: hidden;
到有问题的元素。这些我都试过了,都没有解决。
最初,我使用多个圆形 div 和一系列带有转换的类(表示动画的各种状态)来完成这个动画,然后使用 setInterval 延迟触发这些类。现在我对 CSS 动画更加熟悉了,我正在尝试对其进行重新编码,使其对 CPU 更友好,因为旧方法在旧笔记本电脑上一直存在。我假设单个圆形 div 与多个圆形 div 相比,调用单个动画而不是不断添加和删除类会更有效?
【问题讨论】:
-
当我点击灰色框时,我什么也没有发生。我正在使用火狐。
-
@RohitGupta 他正在使用 webkit 属性。它可能仅适用于 Chrome 和 Safari。
-
@RohitGupta 正如 Manoj 提到的,我使用的是 webkit 属性,但也更新了 fiddle 以在 Firefox 上工作。我从 Firefox 中的测试中注意到没有问题,因此这可能是特定于 webkit 的问题。
标签: jquery css webkit css-animations