【问题标题】:Angular Universal SSR CSS animation transform ErrorAngular Universal SSR CSS动画变换错误
【发布时间】:2020-05-13 19:26:03
【问题描述】:

我已将 Angular 通用添加到我的应用程序中,并按照 https://angular.io/guide/universal 上的指南进行操作 这真的很简单,我只是在努力解决这个错误:

ERROR 错误:由于以下错误,无法构建动画:提供的动画属性“transform”不是动画支持的 CSS 属性 提供的动画属性“transform”不是动画支持的 CSS 属性

这样做的原因是一个简单的按钮,它带有一个关键帧动画,它使用了变换:rotate(0deg); 按钮是圆形的,加载后从右侧滚动到左侧。

有什么办法可以解决这个问题吗?我确信 transform 是一个非常有效的动画 CSS 属性。

编辑: 我在组件 scss 文件中使用 transform 属性。内容是静态的,组件显示整个站点。 css代码是这样的:

  .roll-in {  animation: 2s linear 0s 1 animation;
    animation-fill-mode: both;
    }
@keyframes animation {
  0% {
    left: 110%;
  }

  10% {
    transform: rotate(0deg);
    left: 110%;
  }

  100% {
    transform: rotate(-720deg);
    left: 0px;
  }
}

使用 serve:ssr 运行应用后,元素没有动画属性。

【问题讨论】:

  • 请贴出你目前尝试过的一些代码
  • 我不确定我应该提供哪种代码。我认为错误是由于某些服务器设置造成的,但我到处都有默认值
  • 您在哪里使用transform 属性?
  • 我已将其添加到问题中
  • 好的,但我想添加更多动画,如滚动效果。它们将无法以这种方式使用。还有其他解决办法吗?

标签: css angular transform universal


【解决方案1】:

我认为,它发生在动画从服务器端渲染本身开始时。由于这是SSR,所以在服务器版本上加载动画没有任何意义。

仅在Browser platform 版本中加载动画。因此,动画只会在页面呈现在浏览器视图中之后开始。例如,

component.ts

import { Component, Inject } from '@angular/core';
import { PLATFORM_ID } from '@angular/core';
import { isPlatformBrowser } from '@angular/common';

@Component({
  selector: 'my-animated-component',
  templateUrl: './my-animated-component.html'
})
export class MyAnimatedComponent{
  isBrowser: boolean;

  constructor( @Inject(PLATFORM_ID) platformId: Object) {
    this.isBrowser = isPlatformBrowser(platformId);
  }
}

在标记中

 <div *ngIf="isBrowser">
    <my-animated-component></my-animated-component>
 </div>

建议使用 Angular 原生动画而不是 CSS 动画。一个工作示例在这里:https://stackblitz.com/edit/angular-animate-keyframes

【讨论】:

  • 谢谢!现在我不再收到错误消息,但我的按钮仍然没有动画属性。如果我用 ng serve 启动应用程序,动画就在那里
  • 意思是,按钮出现但没有动画?
  • 使用角度原生动画还是 CSS 动画?对于关键帧,最好使用angular原生动画支持stackblitz.com/edit/angular-animate-keyframes
  • 是的,按钮存在但没有动画。缺少动画属性。我正在使用带有关键帧的 CSS 动画。我会检查你的链接
  • @keschra 我已经编辑了推荐角度原生动画的答案。如果有意义,您能否将其标记为accepted?因此,这对从事动画 + SSR 工作的其他人会有所帮助。
猜你喜欢
  • 1970-01-01
  • 2019-08-15
  • 1970-01-01
  • 2023-02-15
  • 2022-10-07
  • 2022-10-08
  • 2020-12-16
  • 2018-12-03
  • 2018-01-19
相关资源
最近更新 更多