2016-03-21 2 views
3

ReactCSSTransitionGroupで動作するアニメーションを取得できません。私はDOM -ENTERと-leaveスタイルルート変更に適用されているだけ-ENTER両方を見ればReactCSSTransitionGroupアニメーションが動作しないままにする

.fade-enter { 
    opacity: 0.01; 
} 
.fade-enter.fade-enter-active { 
    opacity: 1; 
    transition: opacity 500ms ease-in; 
} 
.fade-leave { 
    opacity: 1; 
} 
.fade-leave.fade-leave-active { 
    opacity: 0.01; 
    transition: opacity 500ms ease-in; 
} 

:次のスタイルで

<ReactCSSTransitionGroup 
    transitionName="fader" 
    transitionEnterTimeout={500} 
    transitionLeaveTimeout={500}> 
    {React.cloneElement(children, { 
    key: pathname 
    })} 
</ReactCSSTransitionGroup> 

:私は、次のコードを持っていますスタイルはアニメーション化されています。ルート間をすばやくクリックすると、離脱アニメーションが表示されますが、以前のルートの場合は表示されます。私。私がA - > B - > Aに行くと、私はAに戻ります。休暇のアニメーションは簡単にちらつきます。

+0

あなたが経路でこれを使用しているのなら、Reactはキーと混同されるかもしれません。 cloneElement、children、およびkeysをルートに適切に適用する方法については、[この記事](https://medium.com/front-end-hacking/react-page-transition-animations-9d18c90a9831#.bl1qmuamy)を参照してください。 – wintvelt

+0

@wintveltありがとう、私は正しく設定されたキーを持っていただけで、古いdivが新しいdivによってオフスクリーンに移動されて混乱していた。 – mrberggg

+0

@mrberggg私は同じものを実装する必要があります。ルート変更にページ遷移を追加する必要があります。あなたはコードを書いていますか? –

答えて

2

アニメーションが適用されていることが分かりましたが、divがオフスクリーンになっていました。おっとっと。前のページに休暇のアニメーションを付ける場合は、経路をアニメーション化するときには、position:absoluteまたはそれに似たものを画面上に追加する必要があります。

+0

この問題とそれがどのように解決されたかに関する情報を追加できますか? –

+2

@DavidPelayo確かに。新しいコンポーネントが入ると、それは古い要素の前に置かれます。したがって、ページの場合、古いページがプッシュダウンされます。新しいページがウィンドウの高さよりも短い場合にのみ表示されます。古いページをアニメーション化したい場合は、最初にすべてのページを見えるようにする必要があります。 'position:absolute;'を使用してください。通常のようにアニメーション化することができます。希望が役立ちます。 – mrberggg

関連する問題