Ich arbeite an einer zusammenklappbaren Komponente, die Sie klicken können, um Roll-Up/Down zu zeigen/Details zu verbergen. Die Komponente ist wie folgt:Angular2 Animationen :: Easings funktioniert nicht wie erwartet
// component.ts
import {Component, Directive, Input} from '@angular/core';
import {trigger, state, style, transition, animate} from '@angular/core'
@Component({
selector: 'expandable',
template: '<div *ngIf="isExpanded" @animate="'slide'"><ng-content></ng-content></div>',
animations: [
trigger('animate', [
state('slide', style({ overflow: 'hidden', height: '*' })),
transition('slide => void', [animate('200ms ease-out', style({ height: 0 }))]),
transition('void => slide', [style({ height: 0 }), animate('200ms ease-out', style({ height: '*' }))])
])
]
})
export class SimExpandable {
private _expanded: boolean = false;
@Input('expanded') set expanded(value: string | boolean) {
this._expanded = (value === 'true' || value === true);
}
get isExpanded(): boolean { return this._expanded }
}
Die Komponente funktioniert gut, teilweise. Die Animationen sind jedoch nicht perfekt. Ich habe die Komponente konfiguriert, um ease-out
Animation zu verwenden, aber in Wirklichkeit animiert die Komponente linear.
Ich habe versucht mit ease-out
, easeOut
, ease-out-cubic
, easeOutCubic
, ease-in-out
, easeInOut
, bounce
, und vielen anderen Permutationen aber die Komponente noch linear beseelt. I WIRKLICH müssen ease-out
für meine Komponente verwenden. Jede Hilfe würde wirklich geschätzt werden.
Haben Sie den Polyfill [web-animations.js] (https://github.com/web-animations/web-animations-js) hinzugefügt? – PierreDuc
der angular2 docs besagt, dass Sie es nicht für gängige Browser hinzufügen müssen. Ich verwende Chrom zum Testen .. aber ich kann es explizit hinzufügen. – AweSIM
kein Glück damit entweder .. = ( – AweSIM