【发布时间】:2013-06-17 17:09:33
【问题描述】:
如果我有这样的 CSS 关键帧动画
@keyframes flash-red {
50% {
background: #f00;
}
}
#goflash.anm-flash {
animation-name: flash-red;
animation-duration: .5s;
background: rgba(255, 0, 0, 0);
}
然后我总是可以像这样触发动画:
var gf = document.querySelector("#goflash");
gf.classList.remove("anm-flash");
setTimeout(function() {
gf.classList.add("anm-flash");
}, 50);
有没有办法覆盖动画持续时间/动画定时功能以依赖于 JavaScript?我希望能够说出类似gf.animate("flash-red", "50%") 来使gf 的背景变红,或者说gf.animate("flash-red", "75%") 使背景更像rgba(255, 0, 0, .5)。
理想情况下,相同的技术也适用于过渡。 gf.transitionTo("new-class", "50%") 会将元素显示为过渡的一半。
显然flash-red 只是一个例子——我希望能够用任何动画来做到这一点。
【问题讨论】:
-
不,你不能那样做。
-
CSS3 动画(和过渡)似乎不够灵活。您可以创建(或搜索)一个 JavaScript 函数或 jQuery 插件来计算和应用受影响的样式,给定 2 个 CSS 规则(一个用于开始状态,一个用于结束状态)和一个百分比值。在某些情况下,为中间状态硬编码一组 CSS 规则可能更容易。
-
编辑了我的答案以包含一个工作示例,我认为这就是您想要的?
标签: javascript html css css-animations