使用transition标签实现:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum=1.0,minimum=1.0,user-scalable=0" /> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/vue@2.6.1.js"></script> <style> .leftNav { height: 90vh; width: 200px; background-color: #ccc; } /*设置动画*/ .fade-enter, .fade-leave-to { transform: translateX(-100%); } .fade-enter-active, .fade-leave-active { transition: 1s; } .fade-enter-to { transform: translateX(0) } </style> </head> <body> <div id="app"> <button @click="show = !show">{{txt}}</button> <transition name="fade"> <div class="leftNav" v-show="show">左侧边栏</div> </transition> </div> <script> var Main = { data() { return { show: true, } }, computed: { txt() { return this.show ? '收起' : '展开' } }, } var Ctor = Vue.extend(Main) new Ctor().$mount("#app") </script> </body> </html>
网友回复