Eu quero uma div para deslizar da direita na angular 2 usando css.
<div class="note" [ngClass]="{'transition':show}" *ngIf="show">
<p> Notes</p>
</div>
<button class="btn btn-default" (click)="toggle(show)">Toggle</button>
Eu funciono bem se eu usar apenas [ngClass] para alternar entre classes e utilizar a opacidade. Mas como não quero que esse elemento seja renderizado desde o início, eu o "escondo" com ngIf primeiro, mas a transição não funcionará.
.transition{
-webkit-transition: opacity 1000ms ease-in-out,margin-left 500ms ease-in-out;
-moz-transition: opacity 1000ms ease-in-out,margin-left 500ms ease-in-out;
-ms-transition: opacity 1000ms ease-in-out,margin-left 500ms ease-in-out ;
-o-transition: opacity 1000ms ease-in-out,margin-left 500ms ease-in-out;
transition: opacity 1000ms ease-in-out,margin-left 500ms ease-in-out;
margin-left: 1500px;
width: 200px;
opacity: 0;
}
.transition{
opacity: 100;
margin-left: 0;
}
css
angular
angular-animations
Han Che
fonte
fonte
*ngIf
remove-o inteiramente do DOM.display:none
. Não hádisplay:hidden
AFAIK.{ trigger, style, animate, transition } from '@angular/animations';
De acordo com a documentação angular 2 mais recente , você pode animar os elementos "Entrando e saindo" (como no angular 1).
Exemplo de animação simples de desvanecimento:
No @Component relevante, adicione:
Não se esqueça de adicionar importações
O elemento html do componente relevante deve se parecer com:
Eu construí exemplo de animação slide e fade aqui .
Explicação sobre 'void' e '*':
void
é o estado quandongIf
é definido como false (se aplica quando o elemento não está anexado a uma visualização).*
- Pode haver muitos estados de animação (leia mais em documentos). O*
estado tem precedência sobre todos eles como um "curinga" (no meu exemplo, este é o estado quandongIf
está definido comotrue
).Aviso (extraído de documentos angulares):
Declaração extra dentro do módulo do aplicativo,
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
fonte
leave
animação não está ocorrendo porque o componente é removido do DOM*ngIf
antes disso.fonte
Solução apenas CSS para navegadores modernos
fonte
ng-enter
uso da classe.Uma maneira é usar um setter para a propriedade ngIf e definir o estado como parte da atualização do valor.
Exemplo de StackBlitz
fade.component.ts
fade.component.html
example.component.css
fonte
Estou usando o angular 5 e para que um ngif funcione para mim em um ngfor, tive que usar animateChild e no componente de detalhes do usuário usei o * ngIf = "user.expanded" para mostrar ocultar o usuário e ele trabalhou para inserir uma partida
fonte
No meu caso, declarei a animação no componente errado por engano.
app.component.html
A animação precisa ser declarada no componente em que o elemento é usado em (
appComponent.ts
). Eu estava declarando a animaçãoOrderDetailsComponent.ts
.Espero que ajude alguém a cometer o mesmo erro
fonte