[JS]物理法則に基づいたさまざまなアニメーションを実装できるスクリプト -Dynamics.js

反発係数を使って弾み具合を変化させたり、運動量に応じて質量を変化させたり、引っ張ると引っ張り返され押すと押し返されるなど、物理法則に基づいた滑らかなさまざまなアニメーションを実装できるスクリプトを紹介します。

デモのアニメーション

Dynamics.js
Dynamics.js -GitHub

Dynamics.jsのデモ

デモでは、物理法則に基づいたさまざまなアニメーションを楽しめます。

デモのキャプチャ

デモページ

いくつかアニメーションGIFにしてみました。

デモのアニメーション

demo: Loader

ローダーで使用しているボールは落下した後、反発係数を元にバウンドの高さが少しずつ小さくなります。

デモのアニメーション

demo: Menu

メニューが開いた時、その運動量に応じて質量を変化させています。

デモのアニメーション

demo: SVG

SVGで作成したボタンにもアニメーションを適用できます。

デモのキャプチャ

デモページ

物理法則に基づいたさまざまな動きは、ブルーのプルダウンからいろいろ試すこともできます。

Dynamics.jsの使い方

Step 1: 外部ファイル

当スクリプトを外部ファイルとして記述します。

<body>
  ...
  コンテンツ
  ...
  <script src="dynamics.js"></script>
</body>

Step 2: JavaScript

適用するエレメントを指定し、アニメーションを設定します。
elは要素、el内のプロパティはアニメーションさせるプロパティと値、typeはアニメーションの種類、frequency, frictionはアニメーションの細かい設定、durationはタイミングです。

var el = document.getElementById("logo")
dynamics.animate(el, {
  translateX: 350,
  scale: 2,
  opacity: 0.5
}, {
  type: dynamics.spring,
  frequency: 200,
  friction: 200,
  duration: 1500
})

SVGの実装例です。

var path = document.querySelector("path")
dynamics.animate(path, {
  d: "M0,0 L0,100 L100,50 L0,0 Z",
  fill: "#FF0000",
  rotateZ: 45,
  // rotateCX and rotateCY are the center of the rotation
  rotateCX: 100,
  rotateCY: 100
}, {
  friction: 800
})

top of page

©2017 coliss