• Dynamics.js动画插件的使用
  • 发布于 2个月前
  • 438 热度
    0 评论
概述
Dynamics.js 是一个JS库,能为你提供9种标准的动效,你可以制定其中的持续时间、频率、预期尺寸和强度等数据,创造出符合物理效果的动效。
它通过可视化定制接近生活的物理动效, 为体验者带来真实的生活反馈感受,无需过多描述,广泛的应用场景,使其流行。
官网 http://dynamicsjs.com

安装
npm install dynamics.js
缓动增强

<script src="./js/vue.js"></script>
<script src="./js/dynamics.js"></script>
<script>
let vm = new Vue({
    el: '#app',
    methods: {
        onTest() {
            let oBox = document.getElementById('box');
            dynamics.animate(oBox, {
                left: '270px'
            },{
                type: dynamics.spring,
                duration: 500,
                frequency: 120,
                friction: 140,
                complete: function() {
                    dynamics.animate(oBox, {
                        left: '660px'
                    },{
                        type: dynamics.spring,
                        delay: 330,
                        duration: 400,
                        frequency: 110,
                        complete: function() {
                            oBox.style.left = '-120px'
                        }
                    })
                }
            }
            
            )
        }
      }
  }
)
</script>
延迟进入

<!--堆代码 duidaima.com -->
animateSlider() {
        let oLis = document.getElementById('items').getElementsByTagName('li');
        for (let i = 0; i < oLis.length; i++) {
            dynamics.animate(oLis[i], {
                translateX: '100%',
                opacity: 1
            }, {
                type: dynamics.gravity,
                duration: 500,
                bounciness: 279,
                elasticity: 89,
                delay: i * 350
            })
        }
}
展开缓冲


<div id="app">
  <div class="nav">
      <span @click="packup">收起</span>
      <span @click="unfold">展开</span>
  </div>      
  <div id="content" class="content">
      <ul>
          <li>旗木卡卡西</li>
          <li>旗木卡卡西</li>
          <li>旗木卡卡西</li>
          <li>旗木卡卡西</li>
          <li>旗木卡卡西</li>
          <li>旗木卡卡西</li>
          <li>旗木卡卡西</li>
      </ul>
  </div>
</div>
<script src="./js/vue.js"></script>
<script src="./js/dynamics.js"></script>
<script>
 let vm = new Vue({
     el: '#app',
     methods: {
         unfold() {
             let oContentPanel = document.getElementById('content');
             let oLis = oContentPanel.getElementsByTagName('li');
             dynamics.animate(oContentPanel, {
                 opacity: 1,
                 scale: 1
             },{
                 type: dynamics.spring,
                 frequency: 200,
                 friction: 270,
                 duration: 800
             })

             for(let i=0; i< oLis.length; i++){
                 dynamics.css(oLis[i],{
                     opacity: 0,
                     translateY: 20
                 })

                 dynamics.animate(oLis[i],{
                     opacity: 1,
                     translateY: 0
                 },{
                     type: dynamics.spring,
                     frequency: 300,
                     friction: 445,
                     duration: 1000,
                     delay: 100 + i*65
                 })
             }

         },
         packup () {
             let oContentPanel = document.getElementById('content');
             let oLis = oContentPanel.getElementsByTagName('li');
             dynamics.animate(oContentPanel, {
                 opacity: 0,
                 scale: 0,
             },{
                 type: dynamics.easeInOut,
                 duration: 330,
                 friction: 100
             })
         }
     }
 })
</script>
心动


<div id="app">
  <div class="wrap" @click="onLike">
      <img id="heart" v-show="isCheck" src="./images/heart_s.png" alt="" width="60">
      <img id="heart02" v-show="!isCheck" src="./images/heart.png" alt="" width="60">
  </div>
</div>
<script src="./js/vue.js"></script>
<script src="./js/dynamics.js"></script>
<script>
  let vm = new Vue({
      el: '#app',
      data: {
          isCheck: false,
      },
      methods: {
          onLike() {
              let oHeart = document.getElementById('heart');
              let oHeart02 = document.getElementById('heart02');
              if(this.isCheck){
                  dynamics.animate(oHeart, {
                      scale: .3,
                      opacity: 0
                  },{
                      type: dynamics.bounce,
                      change: (el,pro)=>{
                          if(pro > 0.5){
                              this.isCheck = false;
                          }
                      }
                  })
              }else {
                  this.isCheck = true;
                  dynamics.animate(oHeart, {
                      scale: 2
                  },{
                      type: dynamics.bounce
                  })
              }
          }
      }
  })
</script>

用户评论