這篇文章主要介紹了使用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: '#app', data () { return { message: 'Hello Vue.js!', count: 0, list: [ {id: 0, text: 'aaa'}, {id: 1, text: 'bbb'}, {id: 2, text: 'ccc'} ] } }, 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的transition完成滑動過渡的詳細內容。更多資訊請關注PHP中文網其他相關文章!