Dynamics.js是一款可以创建物理运动动画效果的js库插件。你可以使用它来制作任何DOM元素的CSS属性动画,也可以制作SVG属性动画和任何JAVASCRIPT对象动画。

安装

可以使用bower或nmp来安装Dynamics.js插件。

bower install dynamics.js
npm install dynamics.js               
              

在页面中引入dynamics.js文件。

<script src="dynamics.js"></script>                
              

使用方法

你可以制作任何HTML DOM元素的CSS属性动画:

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 和 rotateCY 是旋转的中心点
  rotateCX: 100,
  rotateCY: 100
}, {
  friction: 800
})                
              

你还可以制作任何javascript对象的动画:

var o = {
  number: 10,
  color: "#FFFFFF",
  string: "10deg",
  array: [ 1, 10 ]
}
dynamics.animate(o, {
  number: 20,
  color: "#000000",
  string: "90deg",
  array: [-9, 99 ]
})                
              

API

dynamics.animate(el, properties, options)

通过动画参数来动画一个元素到指定的状态。

  • el:一个DOM元素,一个JavaScript对象或一个元素数组。
  • properties:你想动画的对象的属性/值。
  • options:代表动画的对象。
    • type:动画的类型。如dynamics.springdynamics.easeInOut等,默认值为dynamics.easeInOut
    • frequency,friction,bounciness:指定你想使用的动画类型。
    • duration:动画持续时间,单位毫秒,默认值1000。
    • delay:动画的延迟时间,单位毫秒,默认值0。
    • complete:可选值,动画结束后的回调函数。
    • change:可选择,每一次改变时的回调函数。
dynamics.stop(el)

停止在元素上应用的动画。

dynamics.css(el, properties)

为动画元素指定当前浏览器前缀的CSS属性。

  • el:DOM元素。
  • properties:一个CSS属性的对象。
dynamics.setTimeout(fn, delay)

Dynamics.js有自己的setTimeout。因为requestAnimationFramesetTimeout在不同的浏览器中表现不一致。

  • fn:回调函数。
  • delay:单位毫秒。

返回唯一的ID号。

dynamics.clearTimeout(id)

清除前定义的timeout。

Dynamics and properties

dynamics.spring

  • frequency:默认值300。
  • friction:默认值200。
  • anticipationSize:可选项。
  • anticipationStrength:可选项。

dynamics.bounce

  • frequency:默认值300。
  • friction:默认值200。

dynamics.forceWithGravity 和 dynamics.gravity

  • bounciness:默认值400。
  • elasticity:默认值200。

dynamics.easeInOut, dynamics.easeIn 和 dynamics.easeOut

  • friction:默认值500。

dynamics.linear

没有属性。

dynamics.bezier

  • points:点和控制点的数组。

浏览器兼容

  • Safari 7+
  • Firefox 35+
  • Chrome 34+
  • IE10+