Chcę, aby element DIV wsuwał się od prawej strony w kątowej 2 za pomocą CSS.
<div class="note" [ngClass]="{'transition':show}" *ngIf="show">
<p> Notes</p>
</div>
<button class="btn btn-default" (click)="toggle(show)">Toggle</button>
Działa dobrze, jeśli używam [ngClass] tylko do przełączania klas i wykorzystywania krycia. Ale nie chcę, aby ten element był renderowany od początku, więc najpierw „ukrywam” go za pomocą ngIf, ale wtedy przejście nie zadziała.
.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
źródło
źródło
*ngIf
usuwa go całkowicie z DOM.display:none
. Nie madisplay:hidden
AFAIK.{ trigger, style, animate, transition } from '@angular/animations';
Zgodnie z najnowszą dokumentacją angular 2 można animować elementy "wchodzenia i wychodzenia" (jak w angular 1).
Przykład prostej animacji zanikania:
W odpowiednim @Component dodaj:
Nie zapomnij dodać importu
Element HTML odpowiedniego komponentu powinien wyglądać następująco:
I przykład zbudowany slajdów i animacji blaknięcie tutaj .
Wyjaśnienie dotyczące „void” i „*”:
void
to stan, kiedyngIf
jest ustawiony na false (ma zastosowanie, gdy element nie jest dołączony do widoku).*
- Może być wiele stanów animacji (więcej informacji w dokumentacji).*
Stan ma pierwszeństwo w stosunku do wszystkich z nich jako „zamiennika” (w moim przykładzie jest to stan, gdyngIf
jest ustawionytrue
).Uwaga (zaczerpnięte z angular docs):
Dodatkowa deklaracja wewnątrz modułu aplikacji,
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
źródło
leave
animacja nie ma miejsca, ponieważ komponent jest wcześniej usuwany z DOM*ngIf
.źródło
Jedyne rozwiązanie CSS dla nowoczesnych przeglądarek
źródło
ng-enter
użycia klas.Jednym ze sposobów jest użycie metody ustawiającej dla właściwości ngIf i ustawienie stanu w ramach aktualizacji wartości.
Przykład StackBlitz
fade.component.ts
fade.component.html
example.component.css
źródło
Używam Angular 5 i aby ngif działał dla mnie, który jest w ngfor, musiałem użyć animateChild, aw komponencie user-detail użyłem * ngIf = "user.expanded", aby pokazać hide użytkownika i działało przy wpisywaniu odejście
źródło
W moim przypadku przez pomyłkę zadeklarowałem animację na złym komponencie.
app.component.html
Animację należy zadeklarować w komponencie, w którym element jest używany w (
appComponent.ts
). Deklarowałem włączenie animacjiOrderDetailsComponent.ts
Zamiast tego .Miejmy nadzieję, że pomoże to komuś popełnić ten sam błąd
źródło