Ich möchte, dass ein Div mit css von rechts in Winkel 2 hineingleitet.
<div class="note" [ngClass]="{'transition':show}" *ngIf="show">
<p> Notes</p>
</div>
<button class="btn btn-default" (click)="toggle(show)">Toggle</button>
Ich arbeite gut, wenn ich nur [ngClass] verwende, um die Klasse umzuschalten und die Deckkraft zu nutzen. Aber ich möchte nicht, dass dieses Element von Anfang an gerendert wird, also "verstecke" ich es zuerst mit ngIf, aber dann funktioniert der Übergang nicht.
.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
quelle
quelle
*ngIf
entfernt es vollständig aus dem DOM.display:none
. Es gibt keinedisplay:hidden
AFAIK.{ trigger, style, animate, transition } from '@angular/animations';
Gemäß der neuesten Dokumentation zu Winkel 2 können Sie Elemente "Eingeben und Verlassen" animieren (wie in Winkel 1).
Beispiel für eine einfache Überblendanimation:
In der relevanten @Component hinzufügen:
Vergessen Sie nicht, Importe hinzuzufügen
Das HTML-Element der relevanten Komponente sollte folgendermaßen aussehen:
Ich baute Beispiel Rutsche und verblassen Animation hier .
Erklärung zu 'void' und '*':
void
ist der Status, wennngIf
false festgelegt ist (gilt, wenn das Element nicht an eine Ansicht angehängt ist).*
- Es kann viele Animationszustände geben (lesen Sie mehr in den Dokumenten). Der*
Status hat Vorrang vor allen als "Platzhalter" (in meinem Beispiel ist dies der Status, auf denngIf
gesetzt isttrue
).Hinweis (aus eckigen Dokumenten entnommen):
Extra im App-Modul deklarieren,
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
quelle
leave
Animation nicht statt, da die Komponente zuvor aus dem DOM entfernt wurde*ngIf
.quelle
Nur CSS-Lösung für moderne Browser
quelle
ng-enter
Klassenverwendung.Eine Möglichkeit besteht darin, einen Setter für die ngIf-Eigenschaft zu verwenden und den Status als Teil der Aktualisierung des Werts festzulegen.
StackBlitz Beispiel
fade.component.ts
fade.component.html
example.component.css
quelle
Ich verwende Angular 5 und damit ein Ngif für mich funktioniert, das sich in einem Ngfor befindet, musste ich animateChild verwenden. In der Benutzerdetailkomponente habe ich * ngIf = "user.expanded" verwendet, um den Benutzer hide anzuzeigen, und es funktionierte für die Eingabe ein Abschied
quelle
In meinem Fall habe ich versehentlich die Animation auf der falschen Komponente deklariert.
app.component.html
Die Animation muss für die Komponente deklariert werden, in der das Element in (
appComponent.ts
) verwendet wird. Ich habeOrderDetailsComponent.ts
stattdessen die Animation aktiviert.Hoffentlich hilft es jemandem, der den gleichen Fehler macht
quelle