日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > vue >内容正文

vue

Vue.js 相关知识(动画)

發(fā)布時(shí)間:2023/12/2 vue 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Vue.js 相关知识(动画) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 簡(jiǎn)介

Vue 在插入、更新或移除 DOM 時(shí),提供多種不同方式的過(guò)渡效果,并提供 transition 組件來(lái)實(shí)現(xiàn)動(dòng)畫效果(用 transition 組件將需執(zhí)行過(guò)渡效果的元素包裹)

語(yǔ)法:<transition name=””>元素或組件(進(jìn)入或離開(kāi)時(shí)會(huì)有動(dòng)畫效果)</transition>

name?屬性是執(zhí)行動(dòng)畫效果的 css 類名,與6個(gè) css 類產(chǎn)生關(guān)聯(lián):

假設(shè) transition 的 name為v,transition 組件會(huì)自動(dòng)在不同時(shí)機(jī)添加如下6個(gè)類:

  • v-enter:定義過(guò)渡開(kāi)始狀態(tài)的樣式
  • v-enter-active:定義過(guò)渡的狀態(tài),該類常被用來(lái)定義過(guò)渡的過(guò)程時(shí)間、延遲、曲線函數(shù)。
  • v-enter-to:定義過(guò)渡結(jié)束狀態(tài)的樣式(vue 2.1.8以上版本)
  • v-leave:定義離開(kāi)之前的樣式
  • v-leave-active:定義從0到1過(guò)程中的樣式
  • v-leave-to:定義到達(dá)目的地之后的效果

2. 執(zhí)行動(dòng)畫的情況

動(dòng)畫只在2個(gè)節(jié)點(diǎn)發(fā)生:

  • 進(jìn)入:從不顯示到顯示(v-show),從無(wú)到有。
  • 離開(kāi):從顯示到不顯示(v-show),從有到無(wú)。

條件渲染(使用v-if):根據(jù)條件控制元素添加、刪除

條件展示(使用v-show):根據(jù)條件控制元素顯示、隱藏

動(dòng)態(tài)組件(使用:is):多個(gè)組件切換(涉及到組件顯示、隱藏)

<!DOCTYPE html> <html> <head><meta charset="utf-8"><title></title><script type="text/javascript" src="vue.js"></script> <style type="text/css">.v-enter{opacity: 0}.v-enter-to{opacity: 1}.v-enter-active{transition: all 1s}.v-leave{opacity: 1}.v-leave-to{opacity: 0}.v-leave-active{transition:all 1s}</style> </head> <body><div id="app"><div class="title"><h3 @click="isshow=!isshow">標(biāo)題</h3></div><transition name="v"><div class="content" v-show="isshow"><p>內(nèi)容</p></div></transition></div><script type="text/javascript">let app = new Vue({el:"#app",data:{isshow:true}}) app.$mount('#app')</script> </body> </html>

可將<style>中的內(nèi)容簡(jiǎn)化為:

<style type="text/css">.v-enter,.v-leave-to{opacity: 0}.v-enter-active,.v-leave-active{transition: all 1s} </style>

3. transition-group

  • 若給一個(gè)元素綁定動(dòng)畫效果,使用<transition>組件
  • 若給多個(gè)元素綁定動(dòng)畫效果,使用<transition-group>組件

為了區(qū)分元素列表,需要給子元素增加:key屬性,表示每個(gè)子元素的索引

語(yǔ)法:<transition-group name=””> <元素1 :key=””></元素1> <元素2 :key=””></元素2> </transition-group>

4. 內(nèi)置 css 類實(shí)現(xiàn)過(guò)渡

除在?transition?組件上增加?name?屬性,來(lái)實(shí)現(xiàn)動(dòng)畫效果外,Vue還提供6個(gè)內(nèi)置的類,可直接在transition組件上使用(為了兼容 animate.css 框架)

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

  • enter-class:相當(dāng)于.v-enter
  • enter-active-class:相當(dāng)于.v-enter-active
  • enter-to-class:(2.1.8之后)
  • leave-class
  • leave-active-class
  • leave-to-class:(2.1.8之后)

例:結(jié)合vue.js和animate.css動(dòng)畫框架實(shí)現(xiàn)一些動(dòng)態(tài)效果

注:無(wú)需指定開(kāi)始、結(jié)束狀態(tài)時(shí)的css樣式(animate.css中已指定)

<!DOCTYPE html> <html> <head><meta charset="utf-8"><title></title><link rel="stylesheet" type="text/css" href="animate.css"><script type="text/javascript" src="vue.js"></script> <style type="text/css">.dialog{width: 300px;height: 300px;background: #333;color: #fff;}</style> </head> <body><div id="app"><button @click="isshow=!isshow">按鈕</button><transition enter-active-class="animated bounceInDown" leave-active-class="animated bounceOutUp"><div class="dialog" v-show="isshow">內(nèi)容</div></transition></div><script type="text/javascript">let app = new Vue({el:"#app",data:{isshow:false}}) </script> </body> </html>

5. 鉤子函數(shù)實(shí)現(xiàn)過(guò)渡

先指定不同階段執(zhí)行的js函數(shù),在該函數(shù)中實(shí)現(xiàn)該階段的css動(dòng)畫(通常結(jié)合 velocity.js、move.js 等JavaScript動(dòng)畫框架實(shí)現(xiàn))。在鉤子函數(shù)中,會(huì)自動(dòng)將執(zhí)行過(guò)渡效果的元素傳遞到鉤子函數(shù)中。

語(yǔ)法:

<transitionv-on:before-enter=”beforeEnter”v-on:enter=”enter”v-on:after-enter=”afterEnter”v-on:enter-cancelled=”enterCancelled”v-on:before-leave=”beforeLeave”v-on:leave=”leave”v-on:after-leave=”afterLeave”v-on:leave-cancelled=”leaveCancelled”> </transition>

例子:

<!DOCTYPE html> <html> <head><meta charset="utf-8"><title></title><script src="https://cdn.jsdelivr.net/npm/velocity-animate@1.5.0/velocity.min.js"></script><script type="text/javascript" src="vue.js"></script> <style type="text/css">.dialog{width: 300px;height: 300px;background: #333;color: #fff;}</style> </head> <body><div id="app"><button @click="isshow=!isshow">按鈕</button><transition v-on:before-enter="beforeEnter" v-on:enter="Enter"><div class="dialog" v-show="isshow">內(nèi)容</div></transition></div><script type="text/javascript">let app = new Vue({el:"#app",data:{isshow:false},methods:{beforeEnter(el){el.style.opacity = 0;},Enter(el){Velocity(el,{opacity:1,fontSize:"2em"},{duration:1000})Velocity(el,{backgroundColor:"#666"})}}}) </script> </body> </html>
更多專業(yè)前端知識(shí),請(qǐng)上 【猿2048】www.mk2048.com

總結(jié)

以上是生活随笔為你收集整理的Vue.js 相关知识(动画)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。