css - angular SSR 引导应用程序时如何防止 css 动画再次出现

标签 css angular angular-universal server-side-rendering

我使用 Angular 构建了一个登陆站点。为了使其对 SEO 友好,我必须对其进行预渲染。

着陆页以介绍动画开始(使用 CSS 的 animation)。

当我第一次加载页面/完全重新加载时,动画开始,并且在中间引导应用程序,所以 ot 再次重新启动动画。

我想知道是否有办法防止动画再次出现。我知道很少有问题可能与我的类似,但没有一个对我有帮助。

我已尝试通过以下方式解决此问题:

  1. AppRoutingModule 中添加 initialNavigation:
@NgModule({
  imports: [RouterModule.forRoot(routes, { initialNavigation: 'enabled'})],
  exports: [RouterModule]
})
export class AppRoutingModule {
}
  1. TransferHttpCacheModuleBrowserTransferStateModule 添加到AppModule,并将ServerTransferStateModule 添加到AppServerModule

最佳答案

您可以做到,但它可能不是您正在寻找的答案。

首先让我们看看当 SSR Angular 应用程序在浏览器中启动时会发生什么:

  1. 浏览器接收服务器端呈现的页面。呈现 HTML,包括您的动画,并开始播放。然后在页面底部解析 Angular 脚本标签,并开始下载应用程序的 JS。

  2. 在下载应用时,正在播放动画。

  3. 当应用程序被下载时,它会启动,当它启动时,它会再次呈现整个 DOM,包括您的动画。在此过程中,旧的动画元素从 DOM 中移除,然后添加新的动画元素。动画第二次开始播放。

您可以通过两种方式解决这个问题:

  • 要么在应用程序加载到客户端之前不启动动画(当应用程序在浏览器中运行时使用自定义类添加动画)

  • 或者将动画移出您的应用,手动将其嵌入到 index.html - 这样当 SSR 重新渲染发生时它不会受到影响。 (这样你就不能在你的 <app-root></app-root> 元素中包含该元素)

希望这对您有所帮助!

关于css - angular SSR 引导应用程序时如何防止 css 动画再次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58278149/

相关文章:

html - 如何将小型大写字母应用于字体系列?

html - 无法通过 HTML/CSS 更改 Opera/Webkit/IE 中的字体

Angular 8,如何将配置传递给延迟加载的模块

c# - 为什么我的文件从 Angular 上传到 .NET core Web api 不起作用?

css - Angular 通用 CSS 导入不起作用

node.js - Angular4 + Universal + ng-bootstrap 出现 "Unexpected token import"错误

Javascript:根据下拉列表选择显示/隐藏div

html - 表格标题未正确对齐

javascript - ngrx-默认值被传播运算符覆盖了吗?

node.js - 运行 Node server.js 时出现意外的 token 导入