drop-shadow CSS功能使Firefox移动中的应用程序滞后

时间:2018-06-16 04:52:02

标签: javascript css reactjs svg svg-filters

我正在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;
}

0 个答案:

没有答案