HTML
 Computer >> コンピューター >  >> プログラミング >> HTML

HTML DOM TransitionEventのpropertyNameプロパティとは?使い方とサンプルコード

TransitionEvent propertyNameプロパティとは

HTML DOM の TransitionEvent オブジェクトの propertyName プロパティは、transitionstarttransitionend などのトランジションイベントが発生した際に、そのトランジションで実際に使用された CSS プロパティ名を文字列として返します。

例えば、要素の transform プロパティに対してトランジションアニメーションが実行された場合、このプロパティは「transform」という値を返します。どの CSS プロパティがアニメーション対象だったのかを動的に判別したい場合に便利です。

構文

トランジションで使用された CSS プロパティ名を取得するには、以下のように記述します。

transitionEvent.propertyName

サンプルコード

それでは、TransitionEvent の propertyName プロパティの具体的な使用例を見てみましょう。次のコードでは、div 要素にマウスオーバーすると transform プロパティによるトランジションが実行され、transitionend イベントが発生したタイミングで、propertyName プロパティの値を画面に表示します。

<!DOCTYPE html>
<html>
<head>
<title>TransitionEvent propertyName</title>
<style>
   form {
      width:70%;
      margin: 0 auto;
      text-align: center;
   }
   * {
      padding: 2px;
      margin:5px;
   }
   input[type="button"] {
      border-radius: 10px;
   }
   #playArea {
      display: inline-block;
      border-radius: 50%;
      background-color: #DC3545;
      width: 50px;
      height: 50px;
      border: 3px solid #AC3509;
      transition: all 1.3s ease;
   }
   #playArea:hover {
      transform:translateX(80px);
   }
</style>
</head>
<body>
   <form>
      <fieldset>
         <legend>TransitionEvent-propertyName</legend>
         <div id="playArea"></div>
         <div id="divDisplay"></div>
      </fieldset>
   </form>
<script>
   var divDisplay = document.getElementById("divDisplay");
   var playDisplay = document.getElementById("playArea");
   function getPropertyName(event) {
      divDisplay.textContent = 'CSS Property Used for Transition: '+event.propertyName;
   }
   playDisplay.addEventListener("transitionend", getPropertyName);
</script>
</body>
</html>

コードのポイント

  • CSS 側では transition: all 1.3s ease; を指定しているため、すべてのプロパティがトランジション対象になります。
  • マウスオーバー時には transform: translateX(80px); が適用され、円形の div 要素が右方向へスライドします。
  • JavaScript 側では addEventListener("transitionend", getPropertyName) により、アニメーション完了時にイベントリスナーが呼び出されます。
  • イベントハンドラ内で event.propertyName を参照することで、実際にトランジションが行われた CSS プロパティ名(この場合は「transform」)を取得して表示できます。

実行結果

div 要素にマウスオーバーする前の表示は以下の通りです。

HTML DOM TransitionEventのpropertyNameプロパティとは?使い方とサンプルコード

div 要素にマウスオーバーし、トランジションが完了した後の表示は以下の通りです。propertyName プロパティによって取得された CSS プロパティ名が出力されています。

HTML DOM TransitionEventのpropertyNameプロパティとは?使い方とサンプルコード

まとめ

TransitionEvent の propertyName プロパティを使えば、トランジションイベント発生時に「どの CSS プロパティがアニメーションされたのか」を簡単に特定できます。同じ要素に複数のトランジションが設定されている場合でも、イベントごとに対象プロパティを判別できるため、高度なアニメーション制御やデバッグに役立ちます。なお、TransitionEvent にはこのほかに、トランジションの経過時間を返す elapsedTime や、擬似要素名を返す pseudoElement といったプロパティも用意されています。

  1. HTML DOM offsetWidthプロパティの使い方をわかりやすく解説

    HTML DOM offsetWidthプロパティとは HTML DOMのoffsetWidthプロパティは、要素の実際の表示幅に対応する数値(ピクセル単位の整数)を返します。この幅にはパディング・ボーダー(境界線)・スクロールバーが含まれますが、マージンは含まれません。なお、offsetWidthは読み取り専用のプロパティのため、値を直接代入することはできません。 構文 HTMLElement.offsetWidth 要素が非表示(display: none など)の状態にある場合は、0 が返されます。 関連プロパティとの違い offsetWidth: パディング+ボーダー+スクロールバー

  2. HTML DOM TransitionEventのelapsedTimeプロパティの使い方を解説

    TransitionEvent elapsedTimeプロパティとはHTML DOMのTransitionEvent elapsedTimeプロパティは、トランジションイベントが発生した時点で、そのトランジションが何秒間実行されていたかを表す数値を返します。このプロパティは読み取り専用であり、transitionendイベントなどトランジション関連のイベントハンドラ内で利用することで、CSSトランジションの進行状況や完了までの所要時間を簡単に把握できます。構文トランジションが実行されていた秒数を取得するには、以下のように記述します。transitionEvent.elapsedTimeTran