1. 用transition包裹動畫元素, 添加動畫處理函數
```
<transition
@before-enter="beforeEnter"
//進入動畫前
@enter="enter"
//動畫開始之后的樣式,設置結束狀態
@after-enter="afterEnter">
//動畫完成之后的狀態
<div class="ball" v-show="isShow"></div>
</transition
```
2. 設置動畫處理函數
注意:動畫鉤子函數的第一個參數: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.style.transform = "translate(150px, 450px)"
el.style.transition = "all 1s ease"
done() //這里的done其實就是afterEnter函數,也就是說done是afterEnter函數的引用
// 該bug已經修復,不需要done()
},
afterEnter(el){
this.isShow = !this.isShow;
}
```
3. 動態獲取小球和徽標的坐標差
```js
// 獲取小球在頁面中的位置
const ballPosition = this.$refs.ball.getBoundingClientRect();
// 獲取徽標的位置,這里用的是獲取dom的方法
const badgePosition = document
.getElementsByClassName('van-info')[0]
.getBoundingClientRect();
const xDist = badgePosition.left - ballPosition.left;
const yDist = badgePosition.top - ballPosition.top;
el.style.transform = `translate(${xDist}px, ${yDist}px)`;
```
**注意**:
enter(el, done)中需要設置done()才能接著執行afterEnter函數已經修復,現在不需要后面緊接done()函數了, 緊接著反而會變為立即執行
- 0. MVC和MVVM
- 1. v-model無法實時更新的解決辦法
- 1. Vue 指令
- 1. v-cloak&v-text&v-html
- 2. v-bind
- 3. v-model
- 7. v-for指令的幾種使用方式
- 8. v-if和v-show的使用
- 2. 事件修飾符
- 3. 通過屬性設置樣式
- 1. 通過屬性綁定設置元素class
- 2. 通過屬性綁定設置元素style
- 4. 自定義指令
- 11. 自定義全局指令
- 12. 自定義私有指令
- 5. 過濾器
- 6. 鍵盤指令
- 7. 生命周期
- 8. vue-resource
- 9. 動畫
- 1. 使用過渡類名實現動畫
- 2. 使用animate.css實現動畫
- 3. 鉤子函數實現小球半場動畫
- 10. 組件
- 1. 全局組件的創建方式
- 2. 私有組件的創建方式
- 3. 組件中的data和methods
- 4. component元素
- 5. 組件配合transition元素實現動畫
- 6. 父組件傳參傳方法
- 11. 路由
- 1. 什么是路由
- 2. vue-router的使用
- 3. 使用router-link&query方式傳遞參數
- 4. 使用param傳值
- 5. 使用children屬性實現路由嵌套
- 6. router-view之間獲取父級data
- 7. 實現路由跳轉的幾種方式
- 12. 設置緩存
- 13. $ref 操作DOM&獲取自定義屬性
- 14. 初始化一個項目
- 15. 使用并封裝一個axios方法
- 17. vuex
- 18. watch 監聽 data數據
- 19. keep alive 緩存路由組件
- vue效果實現
- 1. 實現頂部根據滑動漸隱漸現
- 2. 制作一個動畫包裹組件
- 20. vue 中的數據類操作
- 第三方工具&ui
- 1. vant-ui
- 1. 上拉加載更多
- 2. 使用圖片預加載
- 2. better-scroll
- 1. 實現上下滑動效果
- 2. 實現兩欄式點擊滑動跳轉
- vue3
- compositionApi
- 2. ref 和 reactive
- 4. watch
- 5. watchEffect
- 7.使用ref操作dom
- effect副作用
- 1. 新特性
- 3. 生命周期
- 6.定義props
- 實現自定義組件v-model
- vue面試題
- 1.對mvvm的理解
- 2.vue2和vue3響應式數據的理解
- 3.vue中如何檢測數組的變化
- 4.vue中如何進行依賴收集
- 5.如何理解vue中的模板編譯原理
- 6.vue生命周期以及原理
- 7.vue組件data為什么必須是個函數
- 8.vue-router原理
- 9.vue.mixin原理
- 10.$nextTick原理
- 11.computed和watch的區別
- vue SSR服務端渲染
- 1.什么是服務端渲染
- 2.快速創建服務端渲染