【问题标题】:Angular Universal: avoid restarting CSS animations at DOM replacementAngular Universal:避免在 DOM 替换时重新启动 CSS 动画
【发布时间】:2019-08-15 03:58:22
【问题描述】:

我们有一个以动画开头的网页:coara

出于性能和 SEO 的原因,我们通常使用 Angular Universal 将页面预渲染为静态 HTML。

这里的问题:当 DOM 被 Angular 代码替换时,动画会重新开始。有没有办法避免这种情况,或者等待 DOM 替换直到动画完成(而不是重新开始)?

【问题讨论】:

  • 您找到解决此问题的方法了吗?我有同样的问题。不错的网站顺便说一句:)
  • @Vingtoft 我想我们最终删除了这个动画。

标签: javascript css-animations angular-universal


【解决方案1】:

您可以在 app.module.ts 上添加一个虚假的提供程序以了解组件的呈现位置:

 providers: [
    {
      provide: "isBrowser",
      useValue: true,
    },
  ],

这个导入到你的app.server.module.ts

 providers: [
    {
      provide: "isBrowser",
      useValue: false,
    },
  ],

然后你可以像这样在你的组件上导入这个“提供者”:

constructor(@Inject("isBrowser") public enableAnimations: boolean) {}

现在您可以在服务器端加载组件时禁用动画,并在客户端添加动画。

【讨论】:

  • 但这并不能解决以下问题:在预渲染的 HTML 上运行动画,然后不再在客户端渲染的 HTML 上运行它。有什么建议吗?
猜你喜欢
  • 1970-01-01
  • 2020-05-13
  • 2022-01-26
  • 1970-01-01
  • 2013-04-09
  • 2011-09-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多