我正在React制作番茄钟,并在svg圈定时器上应用动画filter: drop-shadow
,使其看起来像脉冲。
这在我的Firefox桌面浏览器上工作正常,但它使我的整个应用程序在我的Android设备上的Firefox移动设备上滞后。该应用在Chrome移动浏览器上运行良好。
我注意到即使我删除动画并且只对svg元素应用静态filter: drop-shadow
,该应用仍然是滞后的。有没有解决这个问题,或者可能是另一种方法来实现我想要的效果?
这是我的应用的codesandbox link。
相关的svg代码在PomodoroTimer.jsx中,或者在这里:
<svg width="17em" height="17em" viewBox="0 0 20em 20em">
<circle
cx="8.5em"
cy="8.5em"
r="5.8em"
fill="none"
stroke="#FFF"
strokeWidth=".05em"
/>
</svg>
<svg
className="pulse"
width="17em"
height="17em"
viewBox="0 0 20em 20em"
>
<circle
cx="8.5em"
cy="8.5em"
r="5.8em"
fill="none"
stroke="#FFF"
strokeWidth=".2em"
strokeDasharray="36.442em"
strokeDashoffset={36.442 * this.props.offsetModifier + "em"}
/>
</svg>
相关的CSS在PomodoroTimer.css中,或者在这里:
svg {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
margin: auto;
transform: rotate(-90deg);
}
@-webkit-keyframes svg_pulse {
0% {
filter: drop-shadow(0 0 0.5em #fff);
}
50% {
filter: drop-shadow(0 0 1.5em #fff);
}
100% {
filter: drop-shadow(0 0 0.5em #fff);
}
}
@keyframes svg_pulse {
0% {
filter: drop-shadow(0 0 0.5em #fff);
}
50% {
filter: drop-shadow(0 0 1.5em #fff);
}
100% {
filter: drop-shadow(0 0 0.5em #fff);
}
}
.pulse {
-webkit-animation: svg_pulse 3s linear infinite;
animation: svg_pulse 3s linear infinite;
}