キーポイント
addEventListener
アニメーションリスナー関数に渡されたイベントオブジェクトは、アニメーション名とアニメーションの開始以来の経過時間を提供します。これを使用して、特定のアニメーションが終了したときに他のコードを実行し、特定の順序で別のCSS3アニメーションを適用するなど、他のコードを実行できます。 このシンプルなCSS3アニメーションを考えてみましょう:
#anim.enable { -webkit-animation: flash 1s ease 3; -moz-animation: flash 1s ease 3; -ms-animation: flash 1s ease 3; -o-animation: flash 1s ease 3; animation: flash 1s ease 3; } /* 动画 */ @-webkit-keyframes flash { 50% { opacity: 0; } } @-moz-keyframes flash { 50% { opacity: 0; } } @-ms-keyframes flash { 50% { opacity: 0; } } @-o-keyframes flash { 50% { opacity: 0; } } @keyframes flash { 50% { opacity: 0; } }
の要素に適用されると、enable
という名前のアニメーションが3回実行されます。各反復は1秒間続き、その間に要素がフェードアウトしてからフェードインします。 anim
アニメーションが発生すると、flash
3種類のイベントがトリガーされます。
アニメーションが最初に開始されたとき、animationstart
var anim = document.getElementById("anim"); anim.addEventListener("animationstart", AnimationListener, false);
animationstart
animationiteration
anim.addEventListener("animationiteration", AnimationListener, false);
animationiteration
animationend
anim.addEventListener("animationend", AnimationListener, false);
animationend
ブラウザー互換性<
W3C Standard Firefox webKitオペラIE10
animationstart
animationstart
webkitAnimationStart
oanimationstart
MSAnimationStart
animationiteration
animationiteration
webkitAnimationIteration
oanimationiteration
MSAnimationIteration
animationend
animationend
webkitAnimationEnd
oanimationend
MSAnimationEnd
addEventListener
プレフィックスの問題を解決する最も簡単な方法は、カスタム関数を使用してすべての接頭辞と未解像度の名前を呼び出すことです。
var pfx = ["webkit", "moz", "MS", "o", ""]; function PrefixedEvent(element, type, callback) { for (var p = 0; p < pfx.length; p++) { if (!pfx[p]) type = type.toLowerCase(); element.addEventListener(pfx[p] + type, callback, false); } }
#anim.enable { -webkit-animation: flash 1s ease 3; -moz-animation: flash 1s ease 3; -ms-animation: flash 1s ease 3; -o-animation: flash 1s ease 3; animation: flash 1s ease 3; } /* 动画 */ @-webkit-keyframes flash { 50% { opacity: 0; } } @-moz-keyframes flash { 50% { opacity: 0; } } @-ms-keyframes flash { 50% { opacity: 0; } } @-o-keyframes flash { 50% { opacity: 0; } } @keyframes flash { 50% { opacity: 0; } }
イベントオブジェクト
上記のコードでは、アニメーションイベントが発生するたびに関数が呼び出されます。イベントオブジェクトは、単一のパラメーターとして渡されます。標準のプロパティとメソッドに加えて、次のことも提供します。
AnimationListener
animationName
flash
elapsedTime
したがって、
flash
たとえば、
var anim = document.getElementById("anim"); anim.addEventListener("animationstart", AnimationListener, false);
javascriptのCSS3アニメーションイベントデモンストレーションを表示
デモページにボタンが表示されます。クリックすると、「enable」クラスが切り替えられ、アニメーションが開始されます。アニメーションイベントがトリガーされると、ステータスがコンソールに表示されます。アニメーションが終了すると、ボタンを再度クリックできるように「有効」クラスが削除されます。
興味深いプロジェクトでアニメーションイベントキャプチャを使用する場合は、お知らせください。 flash
(この記事を読むのが好きなら、学習できるのが気に入るはずです。これはマスターから新しいスキルとスキルを学ぶ場所です。現実の世界のCSS3)
(この記事のコメントは閉じられています。CSSについて質問はありますか?フォーラムで尋ねてみませんか?)
CSS3アニメーションとJavaScriptイベントハンドラーについてのFAQ(FAQ) CSS3アニメーションとJavaScriptイベントハンドラーとは何ですか?
CSS3アニメーションを備えたJavaScriptイベントハンドラーを使用するには、アニメーション化するHTML要素にイベントリスナーを追加する必要があります。このイベントリスナーは、アニメーションの最後にJavaScript関数をトリガーします。基本的な例は次のとおりです
このコードでは、「AnimationEnd」は私たちが聴いているイベントであり、CSS3アニメーションが完了したときに発火します。はい、CSS3アニメーションと同じように、CSS3トランジションを備えたJavaScriptイベントハンドラーを使用できます。聞く必要があるイベントは「TransitionEnd」です。このイベントは、CSSの移行が完了した後に解雇されます。
anim.addEventListener("animationiteration", AnimationListener, false);
JavaScriptを使用して、「アニメーション」プロパティを使用してCSS3アニメーションの時間を制御できます。このプロパティは、アニメーションの開始時の遅延を設定します。このプロパティを次のようにJavaScriptに設定できます:<
このコードでは、ページが2秒間ロードされた後にアニメーションが開始されます。#anim.enable { -webkit-animation: flash 1s ease 3; -moz-animation: flash 1s ease 3; -ms-animation: flash 1s ease 3; -o-animation: flash 1s ease 3; animation: flash 1s ease 3; } /* 动画 */ @-webkit-keyframes flash { 50% { opacity: 0; } } @-moz-keyframes flash { 50% { opacity: 0; } } @-ms-keyframes flash { 50% { opacity: 0; } } @-o-keyframes flash { 50% { opacity: 0; } } @keyframes flash { 50% { opacity: 0; } }
JavaScriptを使用してCSS3アニメーションを繰り返す方法は?
JavaScriptを使用してCSS3アニメーションの速度を変更できますか?
var anim = document.getElementById("anim"); anim.addEventListener("animationstart", AnimationListener, false);
はい、JavaScriptを使用してCSS3アニメーションの速度を変更できます。 「アニメーション期間」プロパティは、アニメーションがサイクルを完了するのにかかる時間の長さを制御します。このプロパティを次のようにJavaScriptに設定できます:<
このコードでは、アニメーションは2秒間続きます。「アニメーションプレイステート」プロパティを使用してJavaScriptを使用してCSS3アニメーションを一時停止して復元できます。このプロパティは、アニメーションが実行されているか一時停止しているかを設定します。このプロパティを次のようにJavaScriptに設定できます:<
anim.addEventListener("animationiteration", AnimationListener, false);
JavaScriptを使用してCSS3アニメーションの方向を変更できますか?
このコードでは、アニメーションが後方に再生されます。
anim.addEventListener("animationend", AnimationListener, false);
JavaScriptを使用して、「AnimationEnd」イベントにイベントリスナーを追加することで、CSS3アニメーションの終了を検出できます。このイベントは、CSS3アニメーションが完了した後に解雇されます。それを行う方法は次のとおりです
はい、JavaScriptを使用してCSS3アニメーションの「アニメーション - タイミング機能」を変更できます。このプロパティは、アニメーションの速度曲線を指定します。このプロパティを次のようにJavaScriptに設定できます:
var pfx = ["webkit", "moz", "MS", "o", ""]; function PrefixedEvent(element, type, callback) { for (var p = 0; p < pfx.length; p++) { if (!pfx[p]) type = type.toLowerCase(); element.addEventListener(pfx[p] + type, callback, false); } }
このコードでは、アニメーションがゆっくりで開始され、加速します。
以上がJavaScriptでCSS3アニメーションイベントをキャプチャする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。