黑马程序员技术交流社区
标题:
【上海校区】钩子函数实现小球弹落
[打印本页]
作者:
梦缠绕的时候
时间:
2019-11-6 10:36
标题:
【上海校区】钩子函数实现小球弹落
钩子函数实现小球弹落
.ball {
width
: 15px;
height
: 15px;
border-radius
: 50%;
background-color
: red; }
<div id="app">
<input type="button" value="快到碗里来" @click="flag=!flag">
<!-- 1. 使用 transition 元素把 小球包裹起来 -->
<transition @before-enter="beforeEnter" @enter="enter" @after-enter="afterEnter">
<div class="ball" v-show="flag">
</div>
</transition>
</div>
// 创建 Vue 实例,得到 ViewModel
var
vm =
new
Vue({
el
:
'#app'
,
data
: {
flag
:
false
},
methods
: {
// 注意: 动画钩子函数的第一个参数:el,表示 要执行动画的那个DOM元素,是个原生的 JS DOM对象
// 大家可以认为 , el 是通过 document.getElementById('') 方式获取到的原生JS DOM对象
beforeEnter(el){
// beforeEnter 表示动画入场之前,此时,动画尚未开始,可以 在 beforeEnter 中,设置元素开始动画之前的起始样式
// 设置小球开始动画之前的,起始位置
el.style.transform =
"translate(0, 0)"
}, enter(el, done){
// 这句话,没有实际的作用,但是,如果不写,出不来动画效果;
// 可以认为 el.offsetWidth 会强制动画刷新
el.offsetWidth
// enter 表示动画 开始之后的样式,这里,可以设置小球完成动画之后的,结束状态
el.style.transform =
"translate(150px, 450px)"
el.style.transition =
'all 1s ease'
// 这里的 done, 起始就是 afterEnter 这个函数,也就是说:done 是 afterEnter 函数的引用
done() }, afterEnter(el){
// 动画完成之后,会调用 afterEnter
// console.log('ok')
this
.flag = !
this
.flag } } });
作者:
梦缠绕的时候
时间:
2019-11-6 10:36
有任何问题欢迎在评论区留言
作者:
梦缠绕的时候
时间:
2019-11-6 10:36
或者添加学姐微信
DKA-2018
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2