Je veux qu'un div se glisse de la droite dans angular 2 en utilisant css.
<div class="note" [ngClass]="{'transition':show}" *ngIf="show">
<p> Notes</p>
</div>
<button class="btn btn-default" (click)="toggle(show)">Toggle</button>
Je fonctionne bien si je n'utilise que [ngClass] pour basculer entre la classe et utiliser l'opacité. Mais li ne veut pas que cet élément soit rendu depuis le début donc je le "cache" d'abord avec ngIf, mais la transition ne fonctionnera pas.
.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
la source
la source
*ngIf
le supprime entièrement du DOM.display:none
. Il n'y a pas d'display:hidden
AFAIK.{ trigger, style, animate, transition } from '@angular/animations';
Selon la dernière documentation angular 2, vous pouvez animer des éléments "Entrée et sortie" (comme dans angular 1).
Exemple d'animation de fondu simple:
Dans @Component pertinent, ajoutez:
N'oubliez pas d'ajouter des importations
L'élément html du composant concerné doit ressembler à:
J'ai construit un exemple d' animation de diapositives et de fondus ici .
Explication sur «void» et «*»:
void
est l'état lorsquengIf
est défini sur false (il s'applique lorsque l'élément n'est pas attaché à une vue).*
- Il peut y avoir de nombreux états d'animation (en savoir plus dans la documentation). L'*
état est prioritaire sur tous en tant que "joker" (dans mon exemple, c'est l'état quandngIf
est défini surtrue
).Remarque (tirée de la documentation angulaire):
Extra déclarer dans le module de l'application,
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
la source
leave
animation n'a pas lieu, car le composant est supprimé du DOM*ngIf
avant cela.la source
Solution CSS uniquement pour les navigateurs modernes
la source
ng-enter
de l'utilisation de classe.Une façon consiste à utiliser un setter pour la propriété ngIf et à définir l'état dans le cadre de la mise à jour de la valeur.
Exemple de StackBlitz
fade.component.ts
fade.component.html
example.component.css
la source
J'utilise angular 5 et pour qu'un ngif fonctionne pour moi qui est dans un ngfor, j'ai dû utiliser animateChild et dans le composant user-detail, j'ai utilisé le * ngIf = "user.expanded" pour afficher hide user et cela a fonctionné pour entrer un départ
la source
Dans mon cas, j'ai déclaré l'animation sur le mauvais composant par erreur.
app.component.html
L'animation doit être déclarée sur le composant où l'élément est utilisé dans (
appComponent.ts
). Je déclaraisOrderDetailsComponent.ts
plutôt l'animation .J'espère que cela aidera quelqu'un à faire la même erreur
la source