首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Firefox中使我在SVG元素上的CSS @keyframe动画更流畅,并减少对资源的消耗?

如何在Firefox中使我在SVG元素上的CSS @keyframe动画更流畅,并减少对资源的消耗?
EN

Stack Overflow用户
提问于 2019-12-05 05:57:14
回答 1查看 29关注 0票数 0

This animation在每个浏览器中都有很高的CPU使用率,但在Chromium中要流畅得多。我如何优化它的执行?下面是-pretty simple- SCSS:

代码语言:javascript
复制
@keyframes laptop {
  from {
    transform: rotate(0deg) translateX(0.8rem) rotate(0deg);
  }

  to {
    transform: rotate(360deg) translateX(0.8rem) rotate(-360deg);
  }
}

@keyframes phone {
  from {
    transform: rotate(0deg) translateX(0.8rem) rotate(0deg);
  }

  to {
    transform: rotate(-360deg) translateX(0.8rem) rotate(360deg);
  }
}

.header {
  &__laptop {
    animation: laptop 12s linear infinite;
    will-change: transform;
  }

  &__phone {
    animation: phone 8s linear infinite;
    will-change: transform;
  }
}
EN

回答 1

Stack Overflow用户

发布于 2019-12-05 07:22:28

由于动画是无限循环的,它们自然是资源密集型的。

您可以通过将胺化设置为3d来欺骗CPU加速动画(从而减少负担)。例如,可以将translateZ(0)添加到关键帧以实现此目的。

您可能会这样做:

代码语言:javascript
复制
 @keyframes laptop {
  from {
    transform: rotate(0deg) translateX(0.8rem) translateZ(0) rotate(0deg);
  }

  to {
    transform: rotate(360deg) translateX(0.8rem) translateZ(0) rotate(-360deg);
  }
}

@keyframes phone {
  from {
    transform: rotate(0deg) translateX(0.8rem) translateZ(0) rotate(0deg);
  }

  to {
    transform: rotate(-360deg) translateX(0.8rem) translateZ(0) rotate(360deg);
  }
}

.header {
  &__laptop {
    animation: laptop 12s linear infinite;
    will-change: transform;
  }

  &__phone {
    animation: phone 8s linear infinite;
    will-change: transform;
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59185201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档