[vue]使用vue2-animate來簡單達成動畫效果

  • 1621
  • 0
  • vue
  • 2017-06-04

[vue]使用vue2-animate來簡單達成動畫效果

在用jquery的時候,提供了多動畫的api給我們操作元素,不過後來出現css3之後,動畫交給css3來完成,而javascript就負責好自己的事情,似乎也是越來越分工明確,雖然vue可以用很多種方式來完成動畫效果,可以使用css3的方式,也可以使用javascript的方式,而這篇想來說明一下我發現了一個vue2的plugin,已經有高手幫我們包裝好了使用animate.css,幫我們包裝成vue專用的版本,這樣子我們就可以很簡單的做完一些動畫效果,讓網頁感覺比較潮一點不會那麼死板了。

首先來參訪一下官方的位址(https://github.com/asika32764/vue2-animate),說明很簡短的就結束了,所以如果英文能力還行的讀者,也可以自行去官網看一下就明白怎麼使用了,我這邊也只是簡短的紀錄一下。

如果你有npm的話,可以使用npm的方式,但我這邊是直接把dist的程式碼抓下來,因為我並不是single page file的

然後來一個簡單的if動畫吧

<body>
  <link rel="stylesheet" href="vue-animate.min.css">
  <script src="https://unpkg.com/vue/dist/vue.js"></script>
  <div id="app">
    <input type="checkbox" v-model="isShow">
    <transition name="bounce">
      <div v-if="isShow"> this is show</div>
    </transition>
  </div>

  <script>
    let app = new Vue({
      el: '#app',
      data: {
        isShow: true
      }
    })
  </script>
</body>

如果我們想設定離開和進入的各別狀態,也是辦得到的

<body>
  <link rel="stylesheet" href="vue-animate.min.css">
  <script src="https://unpkg.com/vue/dist/vue.js"></script>
  <div id="app">
    <input type="checkbox" v-model="isShow">
    <transition enter-active-class="bounceInLeft" leave-active-class="bounceOutLeft">
      <div v-if="isShow"> this is show</div>
    </transition>
  </div>

  <script>
    let app = new Vue({
      el: '#app',
      data: {
        isShow: true
      }
    })
  </script>
</body>

如果我們想要用v-for的話,就用transition-group來達成

<body>
  <link rel="stylesheet" href="vue-animate.min.css">
  <script src="https://unpkg.com/vue/dist/vue.js"></script>
  <div id="app">
    <input type="checkbox" v-model="isShow">
    <transition enter-active-class="bounceInLeft" leave-active-class="bounceOutLeft">
      <div v-if="isShow"> this is show</div>
    </transition>
    <hr>
    <!--下面是簡單的新增部份-->
    <input type="text" v-model="name" />
    <button @click="add">add</button>
    <transition-group name="fadeLeft" tag="ul">
      <li v-for="item in items" v-bind:key="item">
        {{ item }}
      </li>
    </transition-group>
  </div>

  <script>
    let app = new Vue({
      el: '#app',
      data: {
        isShow: true,
        items: ['anson', 'anson1', 'anson2'],
        name: ''
      },
      methods: {
        add() {
          this.items.push(this.name)
          this.name = ''
        }
      }
    })
  </script>
</body>

其實真的蠻簡單的就達成把vue加上animate.css的效果,如果有興趣的話,可以至(http://jsbin.com/webetixulu/1/edit?html,output)玩玩看