Quiero que un div se deslice desde la derecha en el ángulo 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>
Funciono bien si solo uso [ngClass] para cambiar de clase y utilizar opacidad. Pero no quiero que ese elemento se renderice desde el principio, así que primero lo "oculto" con ngIf, pero luego la transición no 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
fuente
fuente
*ngIf
lo elimina por completo del DOM.display:none
. No haydisplay:hidden
AFAIK.{ trigger, style, animate, transition } from '@angular/animations';
De acuerdo con la última documentación de angular 2 , puede animar elementos de "Entrada y salida" (como en angular 1).
Ejemplo de animación de fundido simple:
En @Component relevante, agregue:
No olvides agregar importaciones
El elemento html del componente relevante debería verse así:
Construí un ejemplo de animación de deslizamiento y desvanecimiento aquí .
Explicación sobre 'void' y '*':
void
es el estado cuandongIf
se establece en falso (se aplica cuando el elemento no está adjunto a una vista).*
- Puede haber muchos estados de animación (lea más en los documentos). El*
estado tiene prioridad sobre todos ellos como "comodín" (en mi ejemplo, este es el estado cuandongIf
se establece entrue
).Aviso (tomado de documentos angulares):
Declaración adicional dentro del módulo de la aplicación,
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
fuente
leave
animación no se lleva a cabo, porque el componente se elimina del DOM*ngIf
antes de eso.fuente
CSS única solución para navegadores modernos
fuente
ng-enter
uso de clases.Una forma es usar un establecedor para la propiedad ngIf y establecer el estado como parte de la actualización del valor.
Ejemplo de StackBlitz
fade.component.ts
fade.component.html
example.component.css
fuente
Estoy usando angular 5 y para que un ngif funcione para mí que está en un ngfor, tuve que usar animateChild y en el componente de detalles del usuario usé * ngIf = "user.expanded" para mostrar el usuario oculto y funcionó para ingresar una partida
fuente
En mi caso, declaré la animación en el componente incorrecto por error.
app.component.html
La animación debe declararse en el componente donde se usa el elemento en (
appComponent.ts
). En su lugar, estaba declarando la animaciónOrderDetailsComponent.ts
.Con suerte, ayudará a alguien a cometer el mismo error.
fuente