首頁  >  文章  >  web前端  >  如何使用vue的transition完成滑動過渡

如何使用vue的transition完成滑動過渡

不言
不言原創
2018-06-26 09:38:162717瀏覽

這篇文章主要介紹了使用vue的transition完成滑動過渡的範例程式碼,小編覺得挺好的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧

使用vue來做一些小巧的動畫效果是非常方便的,今天本人想使用vue的transition來完成一個滑動過渡效果,這裡和大家分享一下。

直接上原始碼:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Vue滑动效果</title>
  <style>
    .d {
      position: absolute;
      border: 1px solid red;
      width: 30px;
      height: 30px;
    }
    @keyframes show {
      0% {
        opacity: 0;
        left: 32px;
      }
      100% {
        opacity: 1;
        left: 0;
      }
    }
    @keyframes hide {
      0% {
        opacity: 1;
        left: 0;
      }
      100% {
        opacity: 0;
        left: -32px;
      }
    }
    .show-enter-active {
      animation: show 1.2s;
    }
    .show-leave-active {
      animation: hide 1.2s;
    }
    .show-enter, .show-leave-to {
      opacity: 0;
    }
    .wrap {
      position: relative;
      width: 32px;
      height: 32px;
    }
  </style>
  <script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
</head>
<body>
<p id="app">
  <p>{{ message }}</p>
  <p class="wrap">
    <transition name="show">
      <p class="d" v-for="item in list" :key="item.id" v-if="count === item.id">
        {{ item.text }}
      </p>
    </transition>
  </p>
  <button @click="add">add</button>
</p>

<script>
  new Vue({
    el: &#39;#app&#39;,
    data () {
      return {
        message: &#39;Hello Vue.js!&#39;,
        count: 0,
        list: [
          {id: 0, text: &#39;aaa&#39;},
          {id: 1, text: &#39;bbb&#39;},
          {id: 2, text: &#39;ccc&#39;}
        ]
      }
    },
    methods: {
      add: function () {
        if (this.count < this.list.length - 1) {
          this.count += 1;
        } else {
          this.count = 0;
        }
      }
    }
  })
</script>
</body>
</html>

#這裡要注意的是父級使用relative,子級使用absolute進行定位,利用left值來進行位置的控制移動。這裡如果使用transform的話,由於之前的p有一個漸變的消失過程,這個過程中他的位置一直有存在,造成了後面的p無法正確移動到對應位置,所以使用absolute更好。

實在不行可以使用transition的mode屬性,設定成out-in,先讓前者完成動畫,讓佔據的位置完全消失,使得下一個p可以正常運動,不過這種方式只能先後完成動畫,不能同時完成動畫。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

使用Vue行動裝置如何實作圖片裁切元件

在vue2中如何實作資料要求顯示loading圖表

在vue中有關如何使用style的scoped屬性

##

以上是如何使用vue的transition完成滑動過渡的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn