摘要:既然我們知道了方法,我們就來(lái)給它加一個(gè)簡(jiǎn)單的動(dòng)畫(huà)。動(dòng)畫(huà)中還給我們提供了一些鉤子函數(shù),我們可以使用鉤子函數(shù)構(gòu)建動(dòng)畫(huà)。它會(huì)告知我們的動(dòng)畫(huà)完成,我們綁定了為,告訴組件跳過(guò)的檢測(cè),使用。
項(xiàng)目開(kāi)發(fā)中動(dòng)畫(huà)有著很重要的作用,而且也是用到的地方非常多,例如:鼠標(biāo)的進(jìn)入離開(kāi),彈窗效果,組件的顯示隱藏,列表的切換等等,可以說(shuō)我們網(wǎng)頁(yè)上的動(dòng)畫(huà)無(wú)處不在,也有人說(shuō)了,這些東西也可以不使用動(dòng)畫(huà)。
對(duì),你說(shuō)的沒(méi)錯(cuò)可以不使用,但是,首先你要說(shuō)服你的產(chǎn)品經(jīng)理咱能不能簡(jiǎn)單點(diǎn),不搞這么多虛的來(lái)點(diǎn)實(shí)際的,說(shuō)完之后我估計(jì)你們倆得立馬干起來(lái),其次,在你的網(wǎng)頁(yè)上不使用動(dòng)畫(huà)不夠逼格啊,而且咱們的網(wǎng)頁(yè)也不夠生動(dòng),沒(méi)有活力,由此可見(jiàn)動(dòng)畫(huà)的不可或缺性。
上面只是開(kāi)個(gè)玩笑,下面咱們進(jìn)入主題,看看 Vue 中如何更好更簡(jiǎn)單的添加動(dòng)畫(huà)。
首先,Vue 在插入,修改或者移除 DOM 時(shí),提供了多種不同的添加動(dòng)畫(huà)的方法,在 Vue 中我們使用
先來(lái)看看我們要實(shí)現(xiàn)一個(gè)什么樣子的案例效果
圖中的例子是一個(gè)非常常見(jiàn)的圖片切換效果,不過(guò)在這個(gè)例子中我們只是單純的實(shí)現(xiàn)圖片的切換,看起來(lái)非常的生硬,沒(méi)有任何的過(guò)渡效果,下面我們來(lái)給圖片加一點(diǎn)動(dòng)畫(huà)的效果,讓它看起來(lái)非常的有逼格。
CSS 過(guò)渡被
v-enter/v-leave:動(dòng)畫(huà)的第一幀
v-enter-acive/v-leave-active:動(dòng)畫(huà)運(yùn)行的階段,一些過(guò)渡屬性會(huì)放置在這里,如:時(shí)間,延遲等
v-enter-to/v-leave-to:動(dòng)畫(huà)結(jié)束,最后一幀
官網(wǎng)上的一張圖片非常友好的展示了這個(gè)切換的過(guò)程。
v- 是 Vue 中默認(rèn)的類(lèi)名前綴,我們?cè)谑褂玫倪^(guò)程中如果一直使用默認(rèn)的命名方式的話(huà),必然會(huì)導(dǎo)致一些沖突,所以 Vue 給我們提供了一個(gè)自定義命名的方案,我們只需要給
既然我們知道了方法,我們就來(lái)給它加一個(gè)簡(jiǎn)單的動(dòng)畫(huà)。
CSS 動(dòng)畫(huà)
與上面 CSS 過(guò)渡不同的是,我們這里說(shuō)的 CSS 動(dòng)畫(huà)是利用 @keyframes 來(lái)創(chuàng)建與上面類(lèi)似的動(dòng)畫(huà)效果。
使用第三方動(dòng)畫(huà)庫(kù)Vue 中給我們提供了自定義 CSS 類(lèi)名的方法,非常好的支持了與第三方動(dòng)畫(huà)庫(kù)的結(jié)合。
enter-class / leave-class
enter-active-class / leave-active-class
enter-to-class / leave-to-class
上面兩個(gè)動(dòng)畫(huà)都是我們自己動(dòng)手寫(xiě)出來(lái)的,但是有些時(shí)候我們自己手寫(xiě)的并不是那么完美,或者項(xiàng)目的時(shí)間比較緊張,這個(gè)時(shí)候選擇第三方庫(kù)就是一個(gè)比較好的方案。我們繼續(xù)利用 Animate.css 動(dòng)畫(huà)庫(kù)修改我們上面的例子。
JavaScript 動(dòng)畫(huà)![]()
Vue 中還給我們提供了一些鉤子函數(shù),我們可以使用 JavaScript 鉤子函數(shù)構(gòu)建動(dòng)畫(huà)。
所有鉤子都會(huì)傳入一個(gè) el(元素)參數(shù),enter/leave 函數(shù)還會(huì)傳入一個(gè) done 函數(shù)作為參數(shù)。它會(huì)告知我們的動(dòng)畫(huà)完成,我們綁定了 css 為 false,告訴組件跳過(guò) CSS 的檢測(cè),使用 JavaScript。
我們結(jié)合 Velocity.js 動(dòng)畫(huà),來(lái)修改完成我們的動(dòng)畫(huà)效果。
過(guò)渡模式![]()
我們?cè)賮?lái)回頭看看上面的例子,不管我們使用何種方式實(shí)現(xiàn)的動(dòng)畫(huà),你會(huì)發(fā)現(xiàn)一個(gè)問(wèn)題就是,動(dòng)畫(huà)在切換的時(shí)候兩者(進(jìn)入/離開(kāi))是同時(shí)進(jìn)行的,有些時(shí)候,我們并不希望產(chǎn)生這種效果,對(duì)我們的動(dòng)畫(huà)效果非常的不友好,比如我們看看下面的這個(gè)例子。
很顯然,這種是非常不好的效果,值得高興的是 Vue 中給我們提供了一個(gè)解決方案-- 過(guò)渡模式,我們不需要增加額外的代碼,只需要修改下特性即可。
Vue 給我們提供了兩種過(guò)渡模式。
in-out:新元素先進(jìn)行過(guò)渡,完成之后當(dāng)前元素過(guò)渡離開(kāi)。
out-in:當(dāng)前元素先進(jìn)行過(guò)渡,完成之后新元素過(guò)渡進(jìn)入
過(guò)渡模式只會(huì)在相互切換的元素中才會(huì)生效
下面我們就用過(guò)渡模式修改我們上面的案例。
總結(jié)![]()
![]()
Vue 給我們提供了比較直觀靈活的 API,方便我們?cè)陧?xiàng)目中添加動(dòng)畫(huà)的效果。
Vue 中除了這些單元素的動(dòng)畫(huà)以外還提供了
文中如有不足之處,歡迎留言指正,如果本文對(duì)你有幫助,歡迎轉(zhuǎn)發(fā)點(diǎn)贊。
關(guān)注微信公眾號(hào):六小登登。領(lǐng)取全套學(xué)習(xí)資源
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/99445.html
摘要:今天我們繼續(xù)使用的擼我們的實(shí)戰(zhàn)項(xiàng)目,只有在實(shí)戰(zhàn)中我們才會(huì)領(lǐng)悟更多,光紙上談兵然并卵,繼上篇我們的一個(gè)案例引發(fā)的動(dòng)態(tài)組件與全局事件綁定總結(jié)之后,今天來(lái)聊一聊我們?nèi)绾卧陧?xiàng)目中使用遞歸組件。 今天我們繼續(xù)使用 Vue 的擼我們的實(shí)戰(zhàn)項(xiàng)目,只有在實(shí)戰(zhàn)中我們才會(huì)領(lǐng)悟更多,光紙上談兵然并卵,繼上篇我們的《Vue一個(gè)案例引發(fā)的動(dòng)態(tài)組件與全局事件綁定總結(jié)》 之后,今天來(lái)聊一聊我們?nèi)绾卧陧?xiàng)目中使用遞歸組...
摘要:我們需要的最好效果肯定是當(dāng)前的全局事件就在當(dāng)前的組件下產(chǎn)生作用,當(dāng)我們切換到其他組件時(shí),事件自動(dòng)刪除,于是我可能想到的就是利用鉤子函數(shù)去刪除這個(gè)全局事件。 最近在自學(xué) Vue 也了解了一些基本用法,也記錄了一些筆記有興趣的朋友可以去查看我的其他文章,技術(shù)這東西真的不能光靠看,看是沒(méi)有的,你必須要?jiǎng)邮謱?shí)踐,只有在實(shí)戰(zhàn)項(xiàng)目中才能發(fā)現(xiàn)問(wèn)題,才能發(fā)現(xiàn)我們沒(méi)有掌握的知識(shí)點(diǎn),然后發(fā)現(xiàn)問(wèn)題解決問(wèn)題,...
摘要:我們就來(lái)說(shuō)說(shuō)如何創(chuàng)建一個(gè)靈活的高復(fù)用的組件。在一款優(yōu)秀的組件庫(kù)中有這么兩個(gè)組件與。什么是官方說(shuō)法混入是一種分發(fā)組件中可復(fù)用功能的非常靈活的方式。對(duì)象可以包含實(shí)例中的所有選項(xiàng),當(dāng)組件使用對(duì)象時(shí),對(duì)象中的所有選項(xiàng)將和組件中的選項(xiàng)進(jìn)行合并。 我們都知道 Vue 采用的是一種組件化開(kāi)發(fā)模式,組件在 Vue 中一個(gè)非常重要的核心概念。每個(gè)組件都是一個(gè)完整的實(shí)例,組件的創(chuàng)建,組件間的通訊,組件如何...
摘要:調(diào)用鉤子渲染一波,然后把渲染后的元素賦值給并取代。大和小同為漸進(jìn)式框架,提供了大量的對(duì)數(shù)據(jù)視圖去進(jìn)行處理。微信小程序我選擇用原生主要是因?yàn)轭A(yù)覽還要再開(kāi)一個(gè)很不開(kāi)心。 前言 刷了一波 react 文檔,想找個(gè)東西練練手,在網(wǎng)上一看,什么實(shí)現(xiàn)一個(gè) 網(wǎng)易云、酷狗音樂(lè)、豆瓣 感覺(jué)找接口都?jí)蛸M(fèi)神了,之前做過(guò) vue 實(shí)現(xiàn)餓了么的一個(gè)系統(tǒng),圖片資源,mock 數(shù)據(jù)齊全,再加之樣式寫(xiě)過(guò)了,所以直接就...
摘要:前言月份開(kāi)始出沒(méi)社區(qū),現(xiàn)在差不多月了,按照工作的說(shuō)法,就是差不多過(guò)了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了一般來(lái)說(shuō),差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議那么今天我就把看過(guò)的一些學(xué)習(xí)資源主要是博客,博文推薦分享給大家。 1.前言 6月份開(kāi)始出沒(méi)社區(qū),現(xiàn)在差不多9月了,按照工作的說(shuō)法,就是差不多過(guò)了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了!一般來(lái)說(shuō),差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議!那么今天我就...
閱讀 1687·2021-11-11 10:59
閱讀 2700·2021-09-04 16:40
閱讀 3763·2021-09-04 16:40
閱讀 3080·2021-07-30 15:30
閱讀 1819·2021-07-26 22:03
閱讀 3228·2019-08-30 13:20
閱讀 2300·2019-08-29 18:31
閱讀 502·2019-08-29 12:21