最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vuejs第七篇之Vuejs過(guò)渡動(dòng)畫(huà)案例全面解析

 更新時(shí)間:2016年09月05日 14:21:58   作者:qq20004604  
這篇文章主要介紹了Vuejs第七篇之Vuejs過(guò)渡動(dòng)畫(huà)案例全面解析的相關(guān)資料,需要的朋友可以參考下

本篇資料是小編結(jié)合官方文檔整理的一套更全面細(xì)致的說(shuō)明,代碼更多更全。

本篇資料來(lái)于官方文檔:

http://cn.vuejs.org/guide/transitions.html

下面看下過(guò)渡動(dòng)畫(huà)相關(guān)知識(shí):

①過(guò)渡動(dòng)畫(huà)的定義;

簡(jiǎn)單來(lái)說(shuō),就是當(dāng)模塊消失、出現(xiàn)時(shí),會(huì)以什么樣的形式消失和出現(xiàn);

如果要使用過(guò)渡動(dòng)畫(huà),則在標(biāo)簽里加入屬性:

transition=”過(guò)渡動(dòng)畫(huà)名”

例如:

<div class="box" v-if="box_1" transition="mytran">1</div>

這里是mytran就是過(guò)渡動(dòng)畫(huà)名,他是一個(gè)類名,動(dòng)畫(huà)將基于這個(gè)名字而添加多個(gè)不同的擴(kuò)展名(具體請(qǐng)參看下面)

②過(guò)渡動(dòng)畫(huà)綁定的事件:

【1】v-if

【2】v-show

【3】v-for(只在插入和刪除時(shí)觸發(fā),可以自己寫(xiě),或者使用vue-animated-list插件);

自己寫(xiě)例如:

<div v-for="i in items" class="box" transition="mytran">{{i}}</div>

動(dòng)畫(huà)寫(xiě)法略(參照下面)

【4】動(dòng)態(tài)組件;

【5】在組件的根節(jié)點(diǎn)上,并且被Vue實(shí)例DOM方法觸發(fā)(例如:vm.$appendTo(el))。大概就是說(shuō),把組件添加到某個(gè)根節(jié)點(diǎn)上去。

③CSS動(dòng)畫(huà):

【1】首先,需要有transition屬性,然后取得其值;

【2】其次,CSS里需要有以值為名的三個(gè)類名,分別是:

假設(shè)transition的值為mytran,則類名為

說(shuō)明

.mytran-transition

動(dòng)畫(huà)狀態(tài),css的transition屬性放在這里,他表示的類會(huì)始終存在于DOM之上;

另外這里的樣式會(huì)覆蓋標(biāo)簽的默認(rèn)class提供的樣式

.mytran-enter

進(jìn)入時(shí),組件從這個(gè)css狀態(tài)擴(kuò)展為當(dāng)前css狀態(tài),這個(gè)類只存在最開(kāi)始的一幀

.mytran-leave

退出時(shí),組件從原來(lái)的css狀態(tài)恢復(fù)為這個(gè)狀態(tài),這個(gè)類從退出開(kāi)始時(shí)生效,在退出結(jié)束時(shí)刪除。

如代碼:

<style> 
.box { 
width: 100px; 
height: 100px; 
border: 1px solid red; 
display: inline-block; 
} 

/*這個(gè)定義動(dòng)畫(huà)情況,以及存在時(shí)的樣式,這個(gè)樣式會(huì)覆蓋class里的樣式*/ 
.mytran-transition { 
transition: all 0.3s ease; 
background-color: greenyellow; 
} 

/* .mytran-enter 定義進(jìn)入的開(kāi)始狀態(tài) */ 
/* .mytran-leave 定義離開(kāi)的結(jié)束狀態(tài) */ 
.mytran-enter, .mytran-leave { 
height: 0; 
width: 0; 
} 
</style> 
<div id="app"> 
<button @click="change">點(diǎn)擊隨機(jī)隱藏和顯示</button> 
<br/> 
<div class="box" v-if="box_1" transition="mytran">1</div> 
<div class="box" v-if="box_2" transition="mytran">2</div> 
<div class="box" v-if="box_3" transition="mytran">3</div> 
</div> 
<script> 
var vm = new Vue({ 
el: '#app', 
data: { 
box_1: true, 
box_2: true, 
box_3: true 
}, 
methods: { 
change: function () { 
for (var i = 1; i < 4; i++) { 
this['box_' + i] = Math.random() > 0.5 ? true : false; 
} 
} 
} 
}) 
setInterval(vm.change, 300); 
</script>

點(diǎn)擊會(huì)隨機(jī)讓3個(gè)方塊隱藏或者顯示;

④JavaScript鉤子:

【1】簡(jiǎn)單來(lái)說(shuō),這個(gè)不影響CSS動(dòng)畫(huà)(依然是那三個(gè)類的變化);

【2】這個(gè)主要用于抓取進(jìn)入和離開(kāi)各四個(gè)時(shí)刻,用于做某些事情;

【3】這八個(gè)時(shí)刻分別為:

進(jìn)入:beforeEnter(進(jìn)入之前),enter(進(jìn)入動(dòng)畫(huà)剛開(kāi)始),afterEnter(進(jìn)入動(dòng)畫(huà)結(jié)束),enterCancelled(進(jìn)入被中斷);

退出:beforeLeave(退出之前),leave(退出動(dòng)畫(huà)剛開(kāi)始),afterLeave(退出動(dòng)畫(huà)結(jié)束),leaveCancelled(退出被中斷);

【4】對(duì)DOM的修改,部分情況下會(huì)恢復(fù),例如在leave這一步修改dom的textContent屬性,將在dom重新進(jìn)入時(shí)恢復(fù)原狀;但若在enter這一步修改,則不會(huì)恢復(fù)。

如代碼:

Vue.transition('mytran', { 
beforeEnter: function (el) { //進(jìn)入之前 
console.log("進(jìn)入動(dòng)畫(huà)開(kāi)始時(shí)間:" + new Date().getTime()); 
}, 
enter: function (el) { 
el.textContent = new Date(); 
}, 
afterEnter: function (el) { 
console.log("進(jìn)入結(jié)束時(shí)間:" + new Date().getTime()); 
}, 
beforeLeave: function (el) { 
console.log("離開(kāi)動(dòng)畫(huà)開(kāi)始時(shí)間:" + new Date().getTime()); 
}, 
leave: function (el) { 
$(el).text("離開(kāi)中..." + new Date()); 
}, 
afterLeave: function (el) { 
console.log("離開(kāi)結(jié)束時(shí)間:" + new Date().getTime()); 
} 
})

⑤自定義過(guò)渡類名:

之所以要自定義過(guò)渡類名,是因?yàn)槲覀儾豢赡芤竺總€(gè)css動(dòng)畫(huà)的樣式,都是按照Vuejs標(biāo)準(zhǔn)的寫(xiě)法來(lái)寫(xiě)的(比如我們下載別人寫(xiě)的代碼);

注:需要在聲明相關(guān)的Vue實(shí)例之前進(jìn)行定義。

首先,推薦一個(gè)Vuejs官方教程推薦的動(dòng)畫(huà)集合:(這個(gè)不是下載鏈接,需要打開(kāi)它去找到下載鏈接才能下載)

https://daneden.github.io/animate.css/

下載后,導(dǎo)入這個(gè)css文件,然后開(kāi)始自定義動(dòng)畫(huà);

<div id="app"> 
<button @click="change">點(diǎn)擊隨機(jī)隱藏和顯示</button> 
<br/> 
<div class="box animated" v-if="box" transition="bounce">1</div> 
</div> 
<script> 
Vue.transition("bounce", { 
enterClass: 'bounceInLeft', 
leaveClass: 'bounceOutRight' 
}) 
var vm = new Vue({ 
el: '#app', 
data: { 
box: true 
}, 
methods: { 
change: function () { 
this.box = !this.box; 
} 
} 
}); 
</script>

解釋:

【1】進(jìn)行動(dòng)畫(huà)的標(biāo)簽,需要有animated這個(gè)class;

【2】enterClass和leaveClass相當(dāng)于之前的xxx-enter和xxx-leave;

【3】效果是從左邊閃進(jìn)來(lái),從右邊閃出去。

【4】需要在聲明Vue實(shí)例前設(shè)置動(dòng)畫(huà),否則會(huì)無(wú)效;

⑥使用animation動(dòng)畫(huà)

在Vuejs中,animation動(dòng)畫(huà)和transition動(dòng)畫(huà)是不同的。

簡(jiǎn)單來(lái)說(shuō),transition動(dòng)畫(huà)分為三步:常駐類,進(jìn)入時(shí)觸發(fā)的類,退出時(shí)觸發(fā)的類;只有常駐類有transition動(dòng)畫(huà)屬性,其他兩步只有css狀態(tài);

而animation動(dòng)畫(huà)分為兩步:進(jìn)入時(shí)觸發(fā)的類,退出時(shí)觸發(fā)的類。當(dāng)然,還有xxx-transition這個(gè)類存在于dom之中(這個(gè)類可以用于設(shè)置動(dòng)畫(huà)原點(diǎn),或者干脆不設(shè)置這個(gè)類);

在animation動(dòng)畫(huà)中,進(jìn)入和退出時(shí)的class類,都應(yīng)該有動(dòng)畫(huà)效果,例如:

@keyframes fat { 
0% { 
width: 100px 
} 
50% { 
width: 200px 
} 
100% { 
width: 100px 
} 
} 
.fat-leave, .fat-enter { 
animation: fat 1s both; 
}

進(jìn)入和退出時(shí),執(zhí)行的類名和transition一樣,都是xxx-leave和xxx-enter這樣格式的;

當(dāng)然,也可以自定義類名。

示例代碼:

<style> 
.box { 
width: 100px; 
height: 100px; 
border: 1px solid red; 
display: inline-block; 
} 
@keyframes fat { 
0% { 
width: 100px 
} 
50% { 
width: 200px 
} 
100% { 
width: 100px 
} 
} 
.fat-leave, .fat-enter { 
animation: fat 1s both; 
} 
</style> 
<div id="app"> 
<button @click="change">點(diǎn)擊隨機(jī)隱藏和顯示</button> 
<br/> 
<div class="box animated" v-if="box" transition="fat">1</div> 
</div> 
<script> 
var vm = new Vue({ 
el: '#app', 
data: { 
box: true 
}, 
methods: { 
change: function () { 
this.box = !this.box; 
} 
} 
}); 
</script>

效果:

消失:先變寬,再恢復(fù),然后消失;

進(jìn)入:出現(xiàn),變寬,再恢復(fù),停留;

這里偷懶共用了同一個(gè)動(dòng)畫(huà)效果。

⑦除此之外,還有

【1】顯式聲明動(dòng)畫(huà)類型(假如動(dòng)畫(huà)同時(shí)存在transition和animation,且分情況執(zhí)行其中一種);

【2】過(guò)渡流程詳解(觸發(fā)動(dòng)畫(huà)時(shí),js鉤子執(zhí)行與css執(zhí)行的順序);

【3】CSS動(dòng)畫(huà)(就是animation,像上面那樣已經(jīng)寫(xiě)過(guò)了,具體略);

【4】JavaScript過(guò)渡(不是js鉤子,鉤子是指在某個(gè)階段會(huì)調(diào)用某個(gè)函數(shù),但這個(gè)鉤子跟動(dòng)畫(huà)無(wú)關(guān)),用JavaScript來(lái)控制動(dòng)畫(huà),比如jquery的animate方法;

【5】v-for使用的漸進(jìn)過(guò)渡;

由于暫時(shí)用不上,所以略掉,需要查看的請(qǐng)打開(kāi)連接:

http://cn.vuejs.org/guide/transitions.html

以上所述是小編給大家介紹的Vuejs第七篇之Vuejs過(guò)渡動(dòng)畫(huà)案例全面解析,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Vue3偵聽(tīng)器的實(shí)現(xiàn)原理詳情

    Vue3偵聽(tīng)器的實(shí)現(xiàn)原理詳情

    這篇文章主要介紹了Vue3偵聽(tīng)器的實(shí)現(xiàn)原理詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • 淺談vue中改elementUI默認(rèn)樣式引發(fā)的static與assets的區(qū)別

    淺談vue中改elementUI默認(rèn)樣式引發(fā)的static與assets的區(qū)別

    下面小編就為大家分享一篇淺談vue中改elementUI默認(rèn)樣式引發(fā)的static 與assets的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • Vue使用Axios進(jìn)行跨域請(qǐng)求的方法詳解

    Vue使用Axios進(jìn)行跨域請(qǐng)求的方法詳解

    在開(kāi)發(fā)現(xiàn)代?Web?應(yīng)用時(shí),前端和后端通常分離部署在不同的服務(wù)器上,這就會(huì)引發(fā)跨域請(qǐng)求問(wèn)題,所以本文將詳細(xì)介紹如何在?Vue?項(xiàng)目中使用?Axios?發(fā)起跨域請(qǐng)求時(shí)解決跨域問(wèn)題的相關(guān)資料,需要的朋友可以參考下
    2024-09-09
  • vue實(shí)現(xiàn)日歷表格(element-ui)

    vue實(shí)現(xiàn)日歷表格(element-ui)

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)日歷表格(element-ui),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • Vue2實(shí)現(xiàn)txt文件在線預(yù)覽的代碼示例

    Vue2實(shí)現(xiàn)txt文件在線預(yù)覽的代碼示例

    txt文件在線預(yù)覽不需要下載另外的插件,主要有兩種形式,一種是上傳完成后實(shí)現(xiàn)預(yù)覽;另一種是后端提供文件下載接口,獲取文件在線地址實(shí)現(xiàn)預(yù)覽;本文給大家介紹了Vue2實(shí)現(xiàn)txt文件在線預(yù)覽的代碼示例,需要的朋友可以參考下
    2025-01-01
  • vue3實(shí)現(xiàn)高德地圖天氣小組件

    vue3實(shí)現(xiàn)高德地圖天氣小組件

    這篇文章主要為大家詳細(xì)介紹了如何使用vue3實(shí)現(xiàn)一個(gè)高德地圖天氣小組件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-10-10
  • vue 基于abstract 路由模式 實(shí)現(xiàn)頁(yè)面內(nèi)嵌的示例代碼

    vue 基于abstract 路由模式 實(shí)現(xiàn)頁(yè)面內(nèi)嵌的示例代碼

    這篇文章主要介紹了vue 基于abstract 路由模式 實(shí)現(xiàn)頁(yè)面內(nèi)嵌的示例代碼,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2020-12-12
  • vue父組件與子組件之間的數(shù)據(jù)交互方式詳解

    vue父組件與子組件之間的數(shù)據(jù)交互方式詳解

    最近一直在做一個(gè)vue移動(dòng)端商城的實(shí)戰(zhàn),期間遇到一個(gè)小小的問(wèn)題,值得一說(shuō),下面這篇文章主要給大家介紹了關(guān)于vue父組件與子組件之間數(shù)據(jù)交互的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • vue element動(dòng)態(tài)渲染、移除表單并添加驗(yàn)證的實(shí)現(xiàn)

    vue element動(dòng)態(tài)渲染、移除表單并添加驗(yàn)證的實(shí)現(xiàn)

    這篇文章主要介紹了vue element動(dòng)態(tài)渲染、移除表單并添加驗(yàn)證的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • Vue中的Vux配置指南

    Vue中的Vux配置指南

    Vux是Vue.js的一個(gè)ui庫(kù),官網(wǎng)在這里,官方文檔的配置指南側(cè)重于技術(shù)的羅列,我這里簡(jiǎn)化一下Vux的配置流程。感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2017-12-12

最新評(píng)論

措勤县| 富宁县| 屏山县| 岳西县| 衡山县| 葵青区| 长子县| 宁武县| 沈丘县| 桂平市| 綦江县| 宁海县| 万安县| 客服| 宽城| 循化| 斗六市| 茶陵县| 抚松县| 徐汇区| 屏东县| 瑞金市| 桐庐县| 手游| 云林县| 宜章县| 兴城市| 白沙| 丹寨县| 永仁县| 长寿区| 三门县| 射阳县| 天祝| 平乐县| 安溪县| 法库县| 中江县| 婺源县| 建昌县| 嘉义县|