2016-07-08 4 views
3

折りたたみ可能なコンポーネントを作成しています。これをクリックするとロールアップ/ズームダウンして詳細を表示/非表示できます。コンポーネントは次のとおりです。Angular2 Animations ::イージングが期待通りに機能しない

// 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 } 

} 

コンポーネントは部分的に正常に動作します。しかし、アニメーションは完璧ではありません。私はease-outアニメーションを使用するようにコンポーネントを設定しましたが、実際にはコンポーネントはリニアにアニメーション化されます。

私はease-outeaseOutease-out-cubiceaseOutCubicease-in-outeaseInOutbounce、および他の順列の多くを使用して試してみたが、コンポーネントはまだ直線的にアニメーション化します。私本当に私のコンポーネントのease-outを使用する必要があります。どんな助けでも本当に感謝しています。

+1

[web-animations.js polyfill](https://github.com/web-animations/web-animations-js)を追加しましたか? – PierreDuc

+0

angular2文書では、一般的なブラウザ用に追加する必要はありません。テスト用にChromeを使用していますが、明示的に追加することができます。 – AweSIM

+0

その運がありません。=( – AweSIM

答えて

-2

Animateはもはや角型/コア型の一部ではありません。そのため、ngAnimateというモジュールの一部をインポートする必要があります.js/lib/angular-animateをインポートする必要がある$ animateサービスを使用します。 js libs。

bower install --save angular-animate 
+0

Angular2または古いAngular v1? – AweSIM

+0

私は最新のものを使用していますし、CSSで私は使用しています。退室してからイージーアウトのものを適用してください。https://docs.angularjs.org/api/ngAnimate – Palm

+0

申し訳ありません。私はv1.5を使っていました – Palm

8

CSSプロパティの移行とアニメーションは、あなたが緩和 機能を選択することができます。残念ながら、それらはすべてのイージングをサポートしておらず、 自分で希望のイージング関数を指定する必要があります(ベジェ曲線)。

Easings.net

動作するはず緩和の4つのデフォルトのタイプがあることと思われます。

  • リニア
  • 容易
  • やすアウト
  • 簡単・イン・アウト

使いやすさでこれらの作業を直接、しかし、違いは微妙

ですより効果的なイージングタイプを得るには、ベジェ曲線を使用する必要があります。あなた自身のイージーを作成する。例えば、以下の

cubic-bezier(0.680, -0.550, 0.265, 1.550) 

あなたがあなた自身のイージングを作成する機能を提供する必要があり、このbezier curver generatorにナビゲートすることができます角度アニメーション機能

animate("1500ms 2000ms cubic-bezier(0.680, -0.550, 0.265, 1.550)", style({transform: "translateX(-100%)"})) 

を使用して「easeInOutBack」です。

関連する問題