采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
当给到type transition时。开始动画的appear就失效了,这是为什么
因为你的代码里面 appear-active-class="animated swing" 这里只是为开始动画应用了 keyframe 形式的动画, 没有使用 transition。换句话说,也可以理解为你的开始动画指定了一个 transition: all 0s 的样式。那么你的开始动画的执行时间点是这样的:keyframe 动画和 transition 效果同时开始,但是 transition 持续时间为 0s 然后触发 transition-end 事件,keyframe 动画持续时间为 1s (animate.css 源码里面指定的为 1s) 然后触发 animation-end 事件。你设置 type="transition",所以 vue 框架监听到 transition-end 事件之后,便会清除掉 .fade-enter-active .fade-enter-to .appear-enter-active 这些类,所以动画就停止了。由于transition 只持续了 0s,其实就相当于你设置了 :duration="0",动画持续 0s 就结束,因此还没来得及执行 keyframe 动画,你的动画就已经停止了。如果你设置 type="animation",那么 vue 框架会侦听 animation-end 事件来决定何时结束动画,由于 keyframe 动画持续时间为 1s,就相当于设置了 :duration="1000",这样就会执行你的 keyframe 动画了。
你可以试一下,你的源码不要动,只是修改 appear-active-class="animated swing .fade-enter-active",这样就相当于为你的开始动画效果添加了一个 持续时间为 3s 的transition,transition-end 事件的触发就不会是原来的 0s 了,而是 3s 之后触发,type="transition" 就相当于 :duration="3000",就可以执行你的 keyframe 动画了
老师这是你写的代码,在这个时间点,你刷新页面后。appear的开始动画没有了。当你写了type=transition时
代码发上来看看
<style> * { margin: 0; padding: 0; font-family: Microsoft YaHei, serif; } li { list-style: none; } .fade-enter, .fade-leave-to { opacity: 0; } .fade-enter-active, .fade-leave-active { transition: opacity 4s; } </style> <link rel="stylesheet" href="./Animate.css"> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> </head> <body> <div id="app"> <transition name= "fade" appear :duration= "4000" enter-active-class= "animated swing fade-enter-active" leave-active-class= "animated swing fade-leave-active" appear-active-class= "animated swing" > <div v-show="show">hello world</div> </transition> <button @click= "change">Toggle</button> </div> <script> new Vue({ el: '#app', data: { show: true }, methods: { change(){ this.show = !this.show } } }) </script>
太长,只能发这么多。另外还有一个v-model的问题,还请老师帮忙讲一下。就是说下老师对v-model的理解还有实现。
你截个图吧,这样我没法看哇
登录后可查看更多问答,登录/注册
课程紧跟Vue3版本迭代,企业主流版本Vue2+Vue3全掌握
1.8k 20
1.5k 19
2.6k 17
1.3k 16
1.6k 15