anime.js - にほんご。

Keyframes

作成日: 2019-01-23

アニメーションキーフレーム

アニメーションキーフレームはkeyframesプロパティに配列を使って定義します。

キーフレームに持続時間を指定していない場合、 各キーフレームの持続時間は 総アニメーション時間をキーフレームの数で割った時間になります。
type
array
[
  {value: 100, easing: 'easeOutExpo'},
  {value: 200, delay: 500},
  {value: 300, duration: 1000}
]
anime({
  targets: '.animation-keyframes-demo .el',
  keyframes: [
    {translateY: -40},
    {translateX: 250},
    {translateY: 40},
    {translateX: 0},
    {translateY: 0}
  ],
  duration: 4000,
  easing: 'easeOutElastic(1, .8)',
  loop: true
});

デモ

JavaScript
var animationKeyframes = anime({
  targets: '#animation-keyframes .el',
  keyframes: [
    {translateY: -40},
    {translateX: 250},
    {translateY: 40},
    {translateX: 0},
    {translateY: 0}
  ],
  duration: 4000,
  easing: 'easeOutElastic(1, .8)',
  loop: true
});
HTML
<div id="animation-keyframes">
  <div class="square shadow"></div>
  <div class="square el"></div>
</div>
CSS
.shadow {
  position: absolute;
  opacity: .2;
}

.square {
  pointer-events: none;
  width: 28px;
  height: 28px;
  margin: 1px;
  font-size: 12px;
}

プロパティキーフレーム

アニメーションキーフレームと同様に、 プロパティキーフレームはプロパティオブジェクトの配列を使って定義します。 各プロパティにはそれぞれ独自のキーフレーム配列を持っており、 プロパティキーフレームを使用することでアニメーションを重ねることができます。

キーフレームに持続時間を指定していない場合、 各キーフレームの持続時間は 総アニメーション時間をキーフレームの数で割った時間になります。
type
array
[
  {value: 100, easing: 'easeOutExpo'},
  {value: 200, delay: 500},
  {value: 300, duration: 1000}
]
anime({
  targets: '.property-keyframes-demo .el',
  translateX: [
    { value: 250, duration: 1000, delay: 500 },
    { value: 0, duration: 1000, delay: 500 }
  ],
  translateY: [
    { value: -40, duration: 500 },
    { value: 40, duration: 500, delay: 1000 },
    { value: 0, duration: 500, delay: 1000 }
  ],
  scaleX: [
    { value: 4, duration: 100, delay: 500, easing: 'easeOutExpo' },
    { value: 1, duration: 900 },
    { value: 4, duration: 100, delay: 500, easing: 'easeOutExpo' },
    { value: 1, duration: 900 }
  ],
  scaleY: [
    { value: [1.75, 1], duration: 500 },
    { value: 2, duration: 50, delay: 1000, easing: 'easeOutExpo' },
    { value: 1, duration: 450 },
    { value: 1.75, duration: 50, delay: 1000, easing: 'easeOutExpo' },
    { value: 1, duration: 450 }
  ],
  easing: 'easeOutElastic(1, .8)',
  loop: true
});

デモ

JavaScript
var propertyKeyframes = anime({
  targets: '#property-keyframes .el',
  translateX: [
    { value: 250, duration: 1000, delay: 500 },
    { value: 0, duration: 1000, delay: 500 }
  ],
  translateY: [
    { value: -40, duration: 500 },
    { value: 40, duration: 500, delay: 1000 },
    { value: 0, duration: 500, delay: 1000 }
  ],
  scaleX: [
    { value: 4, duration: 100, delay: 500, easing: 'easeOutExpo' },
    { value: 1, duration: 900 },
    { value: 4, duration: 100, delay: 500, easing: 'easeOutExpo' },
    { value: 1, duration: 900 }
  ],
  scaleY: [
    { value: [1.75, 1], duration: 500 },
    { value: 2, duration: 50, delay: 1000, easing: 'easeOutExpo' },
    { value: 1, duration: 450 },
    { value: 1.75, duration: 50, delay: 1000, easing: 'easeOutExpo' },
    { value: 1, duration: 450 }
  ],
  easing: 'easeOutElastic(1, .8)',
  loop: true
});
HTML
<div id="animation-keyframes">
  <div class="square shadow"></div>
  <div class="square el"></div>
</div>
CSS
.shadow {
  position: absolute;
  opacity: .2;
}

.square {
  pointer-events: none;
  width: 28px;
  height: 28px;
  margin: 1px;
  font-size: 12px;
}


MIT license. © 2017 Julian Garnier.

このコンテンツはJulian Garnier(juliangarnier)によるanime.jsドキュメントを翻訳/改変したものです。