本小结通过transition的钩子函数实现小球半场动画
头条-静敏的编程秘诀-vue教程合集
知识点1:入场、出厂方法
-
beforeEnter
表示动画入场之前,此时,动画尚未开始,可以在beforeEnter中设置元素开始动画之前的起始样式 -
enter
表示动画开始之后的样式,这里可是设置小球完成动画之后的,结束状态
enter(el,done)
el:动画钩子函数的第一个参数:el,标识,要执行动画的DOM原始,是原生的JS DOM对象
done:实现动画立刻消失,这里的done就是afterEnter函数的引用
.offsetWidth:这句话没有实际作用,但不写,出不来动画效果,有点坑 -
afterEnter
动画完成之后会调用afterEnter
知识点2:v-on绑定监听事件
可以简写为@
示例展示
<body>
<div id="app">
<input type="button" value="加入购物车" @click="flag=!flag">
<!-- //transition 动画包裹元素 -->
<!-- v-on: 可以简写为 @ -->
<!-- 借助transition的钩子函数实现半场动画 -->
<transition @before-enter="beforeEnter" @enter="enter" @after-enter="afterEnter">
<div class="ball" v-show="flag"></div>
</transition>
</div>
<script>
var vm = new Vue({
el: '#app',
data: {
flag: false,
},
methods: {
//动画钩子函数的第一个参数:el,标识,要执行动画的DOM原始,是原生的JS DOM对象
//el是通过 document.getElementByID('') 的方式实现的
beforeEnter(el) {
//表示动画入场之前,此时,动画尚未开始,可以在beforeEnter中设置元素开始动画之前的起始样式
el.style.transforem="translate(0,0)"
},
enter(el,done) {
// 下面这句话没有实际作用,但不写,出不来动画效果,是个坑
// 其实说明el.offsetWidth会强制刷新![在这里插入图片描述](https://img-blog.csdnimg.cn/20200312130424377.gif)
el.offsetWidth
//表示动画开始之后的样式,这里可是设置小球完成动画之后的,结束状态
el.style.transform="translate(150px,350px)"
el.style.transition=" all 1s ease"
// 实现动画立刻消失
// 这里的done就是afterEnter函数的引用
done()
},
afterEnter(el) {
// 动画完成之后会调用afterEnter
this.flag=!this.flag
}
},
});
</script>
</body>
<style>
.ball {
width: 15px;
height: 15px;
border-radius: 50%;
background-color: red;
}
</style>
效果