<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Vue提供了這個transition元件,可以使得在v-if條件渲染、v-show條件顯示、動態元件的時候可以給到任意元素和元件新增了進入或離開元素過渡。
在應用css過渡的時候,transition元件會在恰當的時候新增、刪除元素。我們的transition元件包含了一下6類過渡類別;
我們總結的這6個過渡類,前三個是進入過渡的類,後面三個是離開過渡的類,在進入或者離開的過程中,這裡6個過渡類之間相互切換。
在transition元件中只會包含一個元素,在這個元素插入或者刪除的時候定義過渡。我們可以通過一行程式碼段進行了解一下:
範例程式碼:
<!DOCTYPE html> <html lang="en"> <head> <title>動態</title> </head> <body> <div id="app"> <input type="checkbox" v-model="guodu" id="game"/> <label for="game">我已經知曉未成年人遊戲時間公告</label> <transition name="fade"> <p v-if="guodu"><button>開始遊戲</button></p> </transition> </div> <script src="http://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script> <script> var vm = new Vue({ el:"#app", data:{guodu:false} }); </script> <style> .fade-enter, .fade-leave-to { opacity: 0; transform: translateX(100px); } .fade-enter-active, .fade-leave-active { transition: all 2s; } </style> </body> </html>
執行結果:我們可以看到但單擊選中“我已知曉王者未成年人遊戲時間公告”的核取方塊,然後就會在頁面上淡出我們的“開始遊戲”,但我們在取消勾選的時候,“開始遊戲”就會淡出我們的頁面。
因為我們的元件設定了name=“fade”,然後可以在定義樣式的時候用到fade的字首,如程式碼中的.fade-enter等等,這樣定義好樣式以後,就不用進行手動引入了,transition元件就可以將我們“開始遊戲”按鈕的元素恰到好處的新增以及刪除操作。
transition元件包含多個元素,這一些元素在插入或者刪除的時候就可以定義過渡。我們還是通過程式碼瞭解一下,不用大肆修改,其他的程式碼就不用修改了,我們只要在前面的單個元素部分的章節上面進行修改就可以了。
範例程式碼:
<!DOCTYPE html> <html lang="en"> <head> <title>動態</title> </head> <body> <div id="app"> <input type="checkbox" v-model="DGguodu" id="game"/> <label for="game">我已經知曉未成年人遊戲時間公告</label> <transition name="fade" appear mode="out-in"> <p v-if="DGguodu" key="1"><button>開始遊戲</button></p> <p v-else key="2">先閱讀公告後進行遊戲</p> </transition> </div> <script src="http://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script> <script> var vm = new Vue({ el:"#app", data:{DGguodu:false} }); </script> <style> .fade-enter, .fade-leave-to { opacity: 0; transform: translateX(100px); } .fade-enter-active, .fade-leave-active { transition: all 2s; } </style> </body> </html>
執行結果:
我們看到上面結果,我們可以理解一下,為什麼會出現上面這樣的結果呢,因為我們將transition設定成了appear模式屬性,這個屬性用於設定節點在初始渲染的時候也應用過渡的效果。當我們選擇複用框的時候,“先閱讀.....”這一段話就會淡出,“開始遊戲”就會淡入。這是因為我們給mode設定成了out-in,mode屬性用來設定過渡模式。
多個元件的過渡比多個元素過渡更加的簡單,因為他不像元素過渡的時候使用到key屬性,只需要使用動態元件即可。我們還是通過範例程式碼的結果來加深瞭解一下:
範例程式碼:
列表過渡使用的是transition-group元件,不同於transition這個元件的是,transition-group這個元件含有更多的屬性特性,比如:mode屬性不可用、內部只能含有一個key屬性、css過渡得嘞將會應用在內部元素、渲染的時候以一個真實的元素呈現。我們通過程式碼進行了解一下這個列表過渡:
範例程式碼:
<!DOCTYPE html> <html lang="en"> <head> <title>列表過渡</title> </head> <body> <div id="app"> <h1>2022屆大學生新生入學登記:</h1> <form> <p><label for="name">姓名:</label> <input type="text" v-model="stuInfo.name" id="name"></p> <p><label for="xuehao">學號:</label> <input type="xuehao" v-model="stuInfo.xuehao" id="xuehao"></p> <p><button @click="add" type="button">新增</button></p> </form> <transition-group tag="ul" name="fade"> <li v-for="(item,index) in students" :key="item.xuehao">{{index+1}}--{{item.name}}--{{item.xuehao}}<button @click="del(index)">刪除</button> </li> </transition-group> </div> <script src="http://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script> <script> var vm = new Vue({ el:"#app", data:{ stuInfo:{xuehao:" "}, students:[] }, methods:{ add(){ this.students.push(this.stuInfo); this.stuInfo={}; }, del(index){this.students.splice(index,1);} } }); </script> <style> .fade-enter, .fade-leave-to { opacity: 0; transform: translateX(100px); } .fade-enter-active, .fade-leave-active { transition: all 2s; } </style> </body> </html>
執行結果:
我們這裡已經將-group的元件設定成了tag='ul',這樣使得每列表項li元素的key屬性值資料中的xuehao的屬性值,確保它的屬性值是唯一的屬性。結果如上,效果就不多說了,大家觀看即可。
JavaScript的勾點函數可以使用transition元件裡面的v-on指令繫結,transition過渡的週期可以有以下勾點函數:
<transition v-on:before-enter="beforeEnter" v-on:enter="enter" v-on:after-enter="afterenter" v-on:enter-cancelled="entercanclled" v-on:before-leave="beforeLeave" v-on:leave="leave" v-on:after-leave="afterLeave" v-on:leave-cancelled="leaveCancelled" > </transition>
範例程式碼:
<!DOCTYPE html> <html lang="en"> <head> <title>勾點函數實現動畫</title> </head> <body> <div id="app"> <input type="checkbox" v-model="already" id="ck"/> <label for="ck">我已經閱讀了相關的報名需求</label> <transition @before-enter="beforeEnter" @enter="enter" @after-enter="after-enter" > <p class="show" v-if="already"><button>確定報名</button></p></transition> </div> <script src="http://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script> <script> var vm = new Vue({ el:"#app", data:{ already:false }, methods:{ beforeEnter:function(el){ el.style="opacity:0";console.log("beforeEnter"); }, enter:function(el,done) { el.offsetHeight; el.style = "opacity:1"; console.log("enter"); done(); }, afterEnter:function(el){ console.log("afterEnter"); } } }); </script> <style> .show { transition: all 2s; } </style> </body> </html>
執行結果:
我們可以看到單擊核取方塊的時候,“確認報名”就會慢慢的顯示出啦,而且取消勾選不會淡出!
到此這篇關於Vue transition過渡元件詳解的文章就介紹到這了,更多相關Vue transition內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45