css - 加载和页面转换时的 Angular2 动画

标签 css animation angular angular2-routing

目前正在尝试使用 ng2 的内置 animations 组件在我的 Angular2 站点中实现一些动画。到目前为止,我一直在研究文档中提供的 Angular 2 Developer Guide - Animations。虽然我遇到了一些问题,但我希望 SO 社区能够提供帮助。我似乎遇到的第一个问题/问题是动画(据我所知)没有运行页面加载。如果我切换到一个 View 然后返回到带有动画的 View ,它似乎运行得很好。这是我目前用于相关动画的代码(如果需要,我可以提供整个组件):

animations: [
  trigger('kissState', [
    state('in', style({opacity: 1})),
    transition('void => *', [
      style({opacity: 0}),
      animate('250ms ease-in-out')
    ]),
    transition('* => void', [
      animate('250ms ease-in-out', style({opacity: 0}))
    ])
  ])
]

我的印象是 void => * 会将我的 DOM 元素设置为 opacity:0 并且一旦它进入 in 到 View 将是 opacity:1。我似乎遇到的另一个问题是我的导航似乎无法在移动设备上使用。我实际上还没有将它们移动到我的服务器,但在本地开发并通过节点 localtunnel 在我的移动设备上查看似乎没有任何动画。这可能是因为 localtunnel 的运行方式很奇怪,所以在我可以在实际服务器上对其进行真正测试之前,我并不太担心这一点。这是另一个动画,特别是当我注意到它在我的移动设备上不起作用时:

animations: [
  trigger('offScreenMenu', [
    state('inactive', style({
      opacity: 0,
      zIndex: -10
    })),
    state('active',   style({
      backgroundColor: 'rgba(255, 255, 255, 0.8)',
      zIndex: 10
      })),
    transition('inactive => active', animate('250ms ease-in')),
    transition('active => inactive', animate('250ms ease-out'))
  ])
]

我遇到的最后一个问题是 Angular2 团队的一个已知问题,即路由器 View 更改时的动画。当前有一个 SO question解决了这个问题和 Angular2 repo 票(在 Günter Zöchbauer 在 SO 问题的评论中提到)。有了这个,我很好奇目前是否有任何解决方法?通过一些简短的研究,看起来可能曾经实现了一个 ng-enterng-leave 可以在他们的 css 中为此使用,但从我的 Angular 来看可以看出这些已经被淘汰了。仍然需要做更多的研究,所以我可能是错的。

在此先感谢您的帮助!

UPDATE(7.7.16):好吧,所以我决定回过头来看它,在弄乱了页面加载动画的时间后,它似乎确实有效。虽然我必须做一个大约 1000ms 的动画才能引起注意。这让我想到了我认为动画在 DOM 完全加载之前开始执行的问题(或更多想法)。这似乎有点奇怪。 仍在研究移动动画情况。看起来我现在会在 Github 存储库上提交一个问题,因为我已经把它搞砸了,似乎无法让它工作。似乎也没有提到不适用于 NG2 的移动动画。

更新(7.13.16):看起来 Angular2 团队已经做了一些修复,计划与 RC5 一起发布,应该可以解决我的上述问题。将回答我自己的问题并关闭。

最佳答案

将结束这个问题。我上面提到的大多数问题看起来已经在 Angular2 的 RC5 中得到解决。看起来这将是等待游戏的时间。以下是 Angular 存储库中各个问题/PR 的链接:

我的直觉是元素在页面加载之前是动画是正确的,并且已经在这个 PR 中得到解决:https://github.com/angular/angular/pull/9887

RC5 将包含一个修复程序,允许通过此 PR 更改路线时使用动画:https://github.com/angular/angular/pull/9933并且 NG2 最终将允许一个用于动画的 query() 函数,这将是很棒的(在这方面可以找到更多信息 here)。

至于移动问题。我仍在尝试找出在移动设备上重新创建错误的方法(即 - 在 plunker 中),但到目前为止还没有成功。不过,对于我的网站而言,这不是一个破坏性 问题,所以我现在将继续前进。

关于css - 加载和页面转换时的 Angular2 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38136162/

相关文章:

javascript - 在 Angular 路由更改后调用 javascript 函数

所有浏览器上的位置和溢出的 CSS 错误

css - 为 div 创建链接

javascript - 将分隔符添加到按字母顺序排列的列表

html - CSS 收缩

android - 在具有深度感知的 z 轴上旋转的 View 之间转换的动画

reactjs - 如何在单击按钮时使用钩子(Hook)重新制作 react-spring 动画?

iOS 动画——像 Siri 一样向上滚动文本

angular - 如何在Angular中检测mat-stepper的开始和结束?

Angular HttpClient 请求方法如何设置正文