詳解vue中使用transition和animation的實(shí)例代碼
以前寫頁面注重在功能上,對(duì)于transition和animation是只聞其聲,不見其人,對(duì)于頁面動(dòng)畫效果心理一直癢癢的。最近做活動(dòng)頁面,要求頁面比較酷炫,終于有機(jī)會(huì)認(rèn)真了解了。
transition:英文過渡的意思,作用是過渡效果;animation:英文活潑、生氣、激勵(lì),動(dòng)畫片就是animation film,作用是動(dòng)畫效果。
transition在w3school的實(shí)例:
//將鼠標(biāo)懸停在一個(gè) div 元素上,逐步改變表格的寬度從 100px 到 300px: div { width:100px; transition: width 2s; -webkit-transition: width 2s; /* Safari */ } div:hover {width:300px;} //transition 屬性是一個(gè)簡(jiǎn)寫屬性,用于設(shè)置四個(gè)過渡屬性: //指定CSS屬性的name,transition效果 transition-property //transition效果需要指定多少秒或毫秒才能完成 transition-duration //指定transition效果的轉(zhuǎn)速曲線 transition-timing-function //定義transition效果開始的時(shí)候 transition-delay
animation在w3school的實(shí)例:
//使用簡(jiǎn)寫屬性,將動(dòng)畫與 div 元素綁定 div { animation:mymove 5s infinite; -webkit-animation:mymove 5s infinite; /* Safari 和 Chrome */ } //animation 屬性是一個(gè)簡(jiǎn)寫屬性,用于設(shè)置六個(gè)動(dòng)畫屬性: //規(guī)定需要綁定到選擇器的 keyframe 名稱。。 animation-name //規(guī)定完成動(dòng)畫所花費(fèi)的時(shí)間,以秒或毫秒計(jì)。 animation-duration //規(guī)定動(dòng)畫的速度曲線。 animation-timing-function //規(guī)定在動(dòng)畫開始之前的延遲。 animation-delay //規(guī)定動(dòng)畫應(yīng)該播放的次數(shù)。 animation-iteration-count //規(guī)定是否應(yīng)該輪流反向播放動(dòng)畫。 animation-direction
animation使用@keyframes規(guī)定動(dòng)畫
@keyframes animationname { keyframes-selector { css-styles; } } //必需。定義動(dòng)畫的名稱。 animationname //必需。動(dòng)畫時(shí)長(zhǎng)的百分比。 //合法的值: //0-100% //from(與 0% 相同) //to(與 100% 相同) keyframes-selector //必需。一個(gè)或多個(gè)合法的 CSS 樣式屬性。 css-styles
以上是transition和animation的基礎(chǔ)知識(shí),最項(xiàng)目使用vue這樣主流框架,就用vue使用下transition和animation
1.第一步就是要安裝依賴,只安裝animation動(dòng)畫庫,transiton是直接可以使用的標(biāo)簽,不用去下載依賴
npm install animate.css –save
2.全局引用一下animation動(dòng)畫庫
import animate from 'animate.css' Vue.use(animate);
3.簡(jiǎn)單使用一下animation動(dòng)畫庫,只要在class加上規(guī)定的動(dòng)畫效果名稱就可以
<div class="rotateIn" style="animation-duration:2s; animation-delay:1s; animation-iteration-count:1; animation-fill-mode:both;"> </div> <div class="fadeInLeft" style="opacity:0; animation-duration:3s; animation-delay:2s; animation-iteration-count:1; animation-fill-mode:both;"> </div> <div class="fadeInUp" style="opacity:0; animation-duration:3s; animation-delay:3s; animation-iteration-count:1; animation-fill-mode:both;"> </div>
4.正式使用transiton和animation,把知識(shí)進(jìn)階一下,使用transition標(biāo)簽
1、使用基礎(chǔ)的transiton和animation動(dòng)畫
/*v是默認(rèn)的,在transition中定義name屬性 <transition name=fade> v-enter-from就要改成fade-enter-from */ <transition> <div>hello world</div> </transition> //使用transition標(biāo)簽時(shí),直接在css中控制 /*元素進(jìn)入前效果*/ .v-enter-from{ opacity: 0; } /*元素進(jìn)入時(shí)效果*/ .v-enter-active{ /*使用定義的動(dòng)畫*/ animation: shake 0.3s; } /*元素進(jìn)入后效果*/ .v-enter-to{ opacity: 1; } /*元素離開前效果*/ .v-leave-from{ opacity: 1; } /*元素離開時(shí)效果*/ .v-leave-active{ /*使用定義的動(dòng)畫*/ animation: shake 0.3s; } /*元素離開后效果*/ .v-leave-to{ opacity: 0; } /*定義一個(gè)動(dòng)畫效果*/ @keyframes shake { 0%{ transform: translateX(-100px); } 50%{ transform: translateX(-50px); } 0%{ transform: translateX(50px); } }
2、使用trnasition標(biāo)簽的屬性,結(jié)合animation的動(dòng)畫庫
<transition transition :duration="{enter:1500,leave:600}" enter-from-class="animated" enter-active-class="animated" enter-to-class="animated" leave-from-class="animated fadeOut" leave-active-class="animated fadeOut" leave-to-class="animated fadeOut" v-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" mode="out-in" appear > /*enter-from-class就是v-enter-from元素進(jìn)入前 animated就是使用animation動(dòng)畫庫,fadeOut就是動(dòng)畫效果 */ /*before-enter這些就是鉤子函數(shù),是滑動(dòng)進(jìn)入狀態(tài) mode="out-in"是設(shè)定動(dòng)畫是先入后出,還是先出后入 appear 是設(shè)置加載時(shí)就要開始動(dòng)畫 */ // 進(jìn)入中 //動(dòng)畫進(jìn)入前 // -------- beforeEnter: function (el) { //el就是dom元素 // ... }, // 此回調(diào)函數(shù)是可選項(xiàng)的設(shè)置 // 與 CSS 結(jié)合時(shí)使用 //動(dòng)畫進(jìn)入時(shí) enter: function (el, done) { // ... done() }, //動(dòng)畫進(jìn)入后 afterEnter: function (el) { // ... }, //動(dòng)畫進(jìn)入完成 enterCancelled: function (el) { // ... }, // -------- // 離開時(shí) // -------- beforeLeave: function (el) { // ... }, // 此回調(diào)函數(shù)是可選項(xiàng)的設(shè)置 // 與 CSS 結(jié)合時(shí)使用 leave: function (el, done) { // ... done() }, afterLeave: function (el) { // ... }, // leaveCancelled 只用于 v-show 中 leaveCancelled: function (el) { // ... }
下面是animation常用的動(dòng)畫效果
fade: { title: '淡入淡出', fadeIn: '淡入', fadeInDown: '向下淡入', fadeInDownBig: '向下快速淡入', fadeInLeft: '向右淡入', fadeInLeftBig: '向右快速淡入', fadeInRight: '向左淡入', fadeInRightBig: '向左快速淡入', fadeInUp: '向上淡入', fadeInUpBig: '向上快速淡入', fadeOut: '淡出', fadeOutDown: '向下淡出', fadeOutDownBig: '向下快速淡出', fadeOutLeft: '向左淡出', fadeOutLeftBig: '向左快速淡出', adeOutRight: '向右淡出', fadeOutRightBig: '向右快速淡出', fadeOutUp: '向上淡出', fadeOutUpBig: '向上快速淡出' }, bounce: { title: '彈跳類', bounceIn: '彈跳進(jìn)入', bounceInDown: '向下彈跳進(jìn)入', bounceInLeft: '向右彈跳進(jìn)入', bounceInRight: '向左彈跳進(jìn)入', bounceInUp: '向上彈跳進(jìn)入', bounceOut: '彈跳退出', bounceOutDown: '向下彈跳退出', bounceOutLeft: '向左彈跳退出', bounceOutRight: '向右彈跳退出', bounceOutUp: '向上彈跳退出' }, zoom: { title: '縮放類', zoomIn: '放大進(jìn)入', zoomInDown: '向下放大進(jìn)入', zoomInLeft: '向右放大進(jìn)入', zoomInRight: '向左放大進(jìn)入', zoomInUp: '向上放大進(jìn)入', zoomOut: '縮小退出', zoomOutDown: '向下縮小退出', zoomOutLeft: '向左縮小退出', zoomOutRight: '向右縮小退出', zoomOutUp: '向上縮小退出' }, rotate: { title: '旋轉(zhuǎn)類', rotateIn: '順時(shí)針旋轉(zhuǎn)進(jìn)入', rotateInDownLeft: '從左往下旋入', rotateInDownRight: '從右往下旋入', rotateInUpLeft: '從左往上旋入', rotateInUpRight: '從右往上旋入', rotateOut: '順時(shí)針旋轉(zhuǎn)退出', rotateOutDownLeft: '向左下旋出', rotateOutDownRight: '向右下旋出', rotateOutUpLeft: '向左上旋出', rotateOutUpRight: '向右上旋出' }, flip: { title: '翻轉(zhuǎn)類', flipInX: '水平翻轉(zhuǎn)進(jìn)入', flipInY: '垂直翻轉(zhuǎn)進(jìn)入', flipOutX: '水平翻轉(zhuǎn)退出', flipOutY: '垂直翻轉(zhuǎn)退出' }, strong: { title: '強(qiáng)調(diào)類', bounce: '彈跳', flash: '閃爍', pulse: '脈沖', rubberBand: '橡皮筋', shake: '左右弱晃動(dòng)', swing: '上下擺動(dòng)', tada: '縮放擺動(dòng)', wobble: '左右強(qiáng)晃動(dòng)', jello: '拉伸抖動(dòng)' }
結(jié)尾,學(xué)習(xí)用些transition和animation肯定能增加用戶體驗(yàn)感,做出一些高大上的網(wǎng)頁。
到此這篇關(guān)于詳解vue中使用transition和animation的實(shí)例代碼的文章就介紹到這了,更多相關(guān)vue使用transition和animation內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
前端利用vue實(shí)現(xiàn)導(dǎo)入和導(dǎo)出功能詳細(xì)代碼
最近項(xiàng)目中讓實(shí)現(xiàn)一個(gè)導(dǎo)入導(dǎo)出Excel的功能,下面這篇文章主要給大家介紹了關(guān)于前端利用vue實(shí)現(xiàn)導(dǎo)入和導(dǎo)出功能的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-09-09Vue組件設(shè)計(jì)之多列表拖拽交換排序功能實(shí)現(xiàn)
這篇文章主要介紹了Vue組件設(shè)計(jì)之多列表拖拽交換排序,常見的場(chǎng)景有單列表拖拽排序,多列表拖拽交換排序,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05基于element-ui封裝可搜索的懶加載tree組件的實(shí)現(xiàn)
這篇文章主要介紹了基于element-ui封裝可搜索的懶加載tree組件的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05javascript中Set、Map、WeakSet、WeakMap區(qū)別
這篇文章主要介紹了javascript中Set、Map、WeakSet、WeakMap區(qū)別,需要的朋友可以參考下2022-12-12VUE3.2項(xiàng)目使用Echarts5.4詳細(xì)步驟總結(jié)
Vue3.2是一款非常流行的JavaScript框架,它讓在前端領(lǐng)域開發(fā)變得更加的便捷,下面這篇文章主要給大家介紹了關(guān)于VUE3.2項(xiàng)目使用Echarts5.4的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06vue-resource 攔截器(interceptor)的使用詳解
本篇文章主要介紹了vue-resource 攔截器(interceptor)的使用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07vue3?父控件遠(yuǎn)程獲取數(shù)據(jù)在子組件上顯示不出來的解決方案
這篇文章主要介紹了vue3?父控件遠(yuǎn)程獲取數(shù)據(jù),在子組件上顯示不出來,本文給大家分享兩種解決方案幫助大家解決這個(gè)問題,需要的朋友可以參考下2023-08-08vue如何在style標(biāo)簽中使用變量(數(shù)據(jù))詳解
在我們編寫css樣式中是不能直接使用vue data中的變量的,下面這篇文章主要給大家介紹了關(guān)于vue如何在style標(biāo)簽中使用變量(數(shù)據(jù))的相關(guān)資料,需要的朋友可以參考下2022-09-09