2017-12-17 13 views
0

不透明度を変更したCSSトランジションをいくつか行いました。 javascriptを使用して、新しいクラスを追加したり削除したりして始めました。CSSトランジションが時々遅れる

それは次のようだ:私はクリックした後、クラスの変更を発射のEventListenerを作っ

.element { 
    opacity: 0; 
    z-index; -1; 
    display: none; 
    transition: opacity .2s linear; 
} 

.changeDisplay { 
    display: block; 
} 

.show { 
    z-index: 1; 
    opacity: 1 
} 

JavaScriptで。最初に.changeDisplayクラスが追加され、setTimeout (delay, 4)関数の後に.showクラスも追加されます。フェードインアニメーション(不透明度の遷移)が機能するには、4ms(遅延許容最小値にする必要があります)の遅延が重要です。

問題は - 時にはこれが期待どおりに動作しないことがあります。アニメーションは時々遅くなるので、アニメーション効果が全く働いていない(それはちょうどディスプレイの変化によって現れたように見える)。

なぜそれがありますか、毎回スムーズなアニメーションを得るにはどうすればよいですか?私はChrome(Androidのモバイルクロムにも)、Opera、Firefox、IE(Safariは私の家にリンゴがないためにテストされていませんでした)でこの動作を観察しました。

+0

4msは、人間の目がトランジションを知覚するための実際の時間です。詳細はこちら:https://stackoverflow.com/questions/7882713/can-a-human-eye-perceive-a-10-milliseconds-latency-in-image-load-time#7882769 – Dez

+0

4msはとても低く設定されていますユーザーが気づかないでください。この低遅延がなければ、不透明度の遷移は機能しません - > https://stackoverflow.com/questions/3331353/transitions-on-the-display-property 魔法の目立つ遷移は200msに設定されています。注目すべきです;)(遷移属性を見る) – Flo

答えて

0

私の経験の中で、小さくて微妙なアニメーションが必要な場合は、約0.7秒のアニメーションの時間が最善のようです。

さらに、遅延を追加する代わりに、コールバック関数に.showを追加するためのコードを記述します。これにより、.changeDisplayクラスが追加されるとすぐに.showクラスが追加されます。
まだ遅延が欲しいですか?
遷移遅延:0.4s;

+0

このコールバック関数のヒントは素晴らしいです、私はそれを見ていきます!しかし、.7sの移行を持つプロブレムは、私の場合、このスパンのためにサイト構造が変化しているので、ユーザーが何もできない時間がかかります。 トランジション遅延はどちらも動作しません。私はすでに試しましたが、私がディスプレイプロパティを使用すると、トランジションに表示する属性値はありません。 – Flo

関連する問題