vue.js動(dòng)畫(huà)中的js鉤子函數(shù)的實(shí)現(xiàn)
更新時(shí)間:2018年07月06日 14:22:05 作者:章魚(yú)喵_
這篇文章主要介紹了vue.js動(dòng)畫(huà)中的js鉤子函數(shù)的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
在transition中還可以通過(guò)設(shè)置javascript鉤子函數(shù),實(shí)現(xiàn)自定義動(dòng)畫(huà)效果。
以實(shí)現(xiàn)擊球效果為例:

擊球
代碼解析:
<!-- 定義js的鉤子函數(shù) --> <transition @before-enter="beforeEnter" @enter="enter" @after-enter="afterEnter" > <img v-show="flag" class="ball" :src="ball" alt="" width="30"> </transition>
let vm = new Vue({
el: "#app",
data: {
flag: false,
ball: 'https://upload-images.jianshu.io/upload_images/1864602-ec73f549171a6601.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240'
},
methods: {
// el 表示要執(zhí)行動(dòng)畫(huà)的那個(gè)DOM元素, 是原生的 js DOM 對(duì)象
beforeEnter(el) {
// 設(shè)置動(dòng)畫(huà)開(kāi)始之前的初始位置
el.style.transform = "translate(0, 0)"
},
enter(el, done) {
// 刷新動(dòng)畫(huà)效果
el.offsetWidth;
// 動(dòng)畫(huà)完成后的樣式
el.style.transform = "translate(550px, 350px)";
// 動(dòng)畫(huà)的持續(xù)時(shí)間
el.style.transition = "all 3s ease";
// done 其實(shí)是 afterEnter() 的引用
done();
},
afterEnter(el) {
// 動(dòng)畫(huà)完成之后調(diào)用
this.flag = !this.flag
}
}
})
完整代碼
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="external nofollow" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<style>
.container {
margin-top: 2%;
}
img.ball {
margin-left: 3%;
}
</style>
<body>
<div class="container">
<div id="app">
<button class="btn btn-danger" @click="flag=!flag">擊球</button>
<!-- 定義js的鉤子函數(shù) -->
<transition
@before-enter="beforeEnter"
@enter="enter"
@after-enter="afterEnter"
>
<img v-show="flag" class="ball" :src="ball" alt="" width="30">
</transition>
</div>
</div>
<script>
let vm = new Vue({
el: "#app",
data: {
flag: false,
ball: 'https://upload-images.jianshu.io/upload_images/1864602-ec73f549171a6601.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240'
},
methods: {
// el 表示要執(zhí)行動(dòng)畫(huà)的那個(gè)DOM元素, 是原生的 js DOM 對(duì)象
beforeEnter(el) {
// 設(shè)置動(dòng)畫(huà)開(kāi)始之前的初始位置
el.style.transform = "translate(0, 0)"
},
enter(el, done) {
// 刷新動(dòng)畫(huà)效果
el.offsetWidth;
// 動(dòng)畫(huà)完成后的樣式
el.style.transform = "translate(550px, 350px)";
// 動(dòng)畫(huà)的持續(xù)時(shí)間
el.style.transition = "all 3s ease";
// done 其實(shí)是 afterEnter() 的引用
done();
},
afterEnter(el) {
// 動(dòng)畫(huà)完成之后調(diào)用
this.flag = !this.flag
}
}
})
</script>
</body>
</html>
最終效果:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- 深入理解Vue父子組件生命周期執(zhí)行順序及鉤子函數(shù)
- 詳解Vue的鉤子函數(shù)(路由導(dǎo)航守衛(wèi)、keep-alive、生命周期鉤子)
- Vue手把手教你擼一個(gè) beforeEnter 鉤子函數(shù)
- Vue指令的鉤子函數(shù)使用方法
- 深入理解Vue 的鉤子函數(shù)
- 解決Vue中mounted鉤子函數(shù)獲取節(jié)點(diǎn)高度出錯(cuò)問(wèn)題
- vue中各選項(xiàng)及鉤子函數(shù)執(zhí)行順序詳解
- vue中父子組件傳值,解決鉤子函數(shù)mounted只運(yùn)行一次的操作
- Vue的路由及路由鉤子函數(shù)的實(shí)現(xiàn)
- Vue3生命周期鉤子函數(shù)詳解
相關(guān)文章
Vue中使用debugger在瀏覽器中不起作用的問(wèn)題及解決
這篇文章主要介紹了Vue中使用debugger在瀏覽器中不起作用的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
vue-router中query和params的區(qū)別解析
vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,適合用于構(gòu)建單頁(yè)面應(yīng)用,這篇文章主要介紹了vue-router中query和params的區(qū)別 ,需要的朋友可以參考下2022-10-10
淺析Proxy如何實(shí)現(xiàn)Vue響應(yīng)式
這篇文章主要是來(lái)和大家探討一下,Vue的響應(yīng)式系統(tǒng)僅僅是一個(gè)Proxy嗎,本文將圍繞此問(wèn)題探索一下Proxy是如何實(shí)現(xiàn)Vue響應(yīng)式的,感興趣的小伙伴可以了解一下2023-08-08

