【发布时间】:2020-03-21 21:48:23
【问题描述】:
我正在使用 CSS 变量制作动画,其中 CSS 变量值会根据页面滚动而变化。然后将该变量用于带有关键帧的动画。
最初它只在 Firefox 上正确更新。同时,我找到了一种让它在 Chrome 上也能工作的方法,通过强制重新绘制,在这种情况下,将颜色从 #000 设置为 #001。
/* --scale is dynamic changed by JS */
@keyframes move {
0% {
transform: translateX(0) scale(var(--scale));
color: #000;
}
100% {
transform: translateX(33vw) scale(1.5);
color: #001;
}
}
你可以看到a demo at codepen
【问题讨论】:
-
关于这个问题的任何更新?
-
@DimitarSpassov,我的解决方法是创建 2 个动画:原来的一个是
moveExpensive,我使用left而不是translateX,强制重绘。然后用JS检测浏览器。如果是 FF 使用move,否则使用moveExpensive。 -
也许我做错了什么,但在 Safari 上问题仍然存在,即使我将
translateX转换替换为left。 -
哦,对不起,@DimitarSpassov,忘了说,我没有在回退版本中使用变量。就我而言,我使用了硬编码值 (%) 并做了一些其他的变通方法。总而言之:我没有找到使它与 CSS 变量一起工作的方法。
-
哦,好吧。感谢您的更新。
标签: css animation safari repaint