电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Vue實現路由過渡動效的4種方法

瀏覽:11日期:2022-09-29 14:35:48

Vue 路由過渡是對 Vue 程序一種快速簡便的增加個性化效果的的方法。 可以讓你在程序的不同頁面之間增加平滑的動畫和過渡。如果使用得當,可以使你的程序顯得更加專業,從而增強用戶體驗。

本文中會先介紹使用 Vue 路由過渡的基礎知識,然后在舉幾個例子,為你一些靈感。下面是其中的一個案例:

Vue實現路由過渡動效的4種方法

在 Vue 程序中添加路由

一般 Vue 路由設置如下所示:

<template> <router-view /></template>

在舊版本的 Vue 路由中,我們可以簡單地用 <transition> 組件包裝 <router-view>。

但是,在較新版本的 Vue 路由中則必須用 v-slot 來解構 props 并將它們傳遞到我們的內部 slot 中。 這將包含一個動態組件,該組件被過渡組件包圍。

<router-view v-slot='{ Component }'> <transition> <component :is='Component' /> </transition></router-view>為路由添加過渡

默認情況下,用 <transition> 包裹 <component> 會在你應用的每個路由上添加相同的過渡。可以通過兩種方式為每個路由自定義轉場效果。

將過渡移到每個組件中

首先,不用把我們的動態組件與過渡組件包裝在一起,可以將 <transition> 移動到每個單獨的組件中。 像這樣:

<template> <transition> <div class='wrapper'> <!-- --> </div> </transition></template>

依此類推,對要進行過渡的每條路由進行處理。 這樣就可以通過修改過渡名稱來自定義每條路由。

用 v-bind 進行動態過渡

另一個方法是將過渡的名稱綁定到變量。 然后就可以根據自己的路有動態地修改這個變量。這是 Vue 路由文檔中的例子。在當前路由上用觀察模式來動態設置 transitionName 變量。

<transition :name='transitionName'> <component :is='Component' /></transition>

watch: { ’$route’ (to, from) { const toDepth = to.path.split(’/’).length const fromDepth = from.path.split(’/’).length this.transitionName = toDepth < fromDepth ? ’slide-right’ : ’slide-left’ }}

現在我們了解了 Vue 路由過渡的基礎知識,下面讓來看一些例子。

#1 ? 漸變過渡

漸變頁面過渡應該是最直接的一種動效。可以通過修改元素的透明度來實現。首先,創建一個名為 fade 過渡。需要注意的是過渡模式設置為 out-in。

總共有 3 種過渡模式:

default:淡入和淡出過渡同時發生 in-out:新元素首先淡入。 然后當前元素淡出。 out-in:當前元素先淡出。 然后新元素開始淡入。

為了使新元素順利淡入,我們需要在開始新過渡之前將當前元素刪除。所以必須用 mode = 'out-in'。

<router-view v-slot='{ Component }'> <transition name='fade' mode='out-in'> <component :is='Component' /> </transition></router-view>

<transition> 為提供了幾個 CSS 類,它們能夠在動畫周期中被動態添加或刪除。有 6。個不同的過渡類(3 個用于淡入,3 個用于淡出)。

v-enter-from / v-leave-from: 過渡的初始狀態,過度開始后將其刪除 v-enter-active / v-leave-active: 過渡的激活狀態 v-enter-to / v-leave-to: 過渡的結束狀態

我們的淡入淡出過渡有一個名為 fade-enter-from 的類。

我們希望淡入和淡出狀態的透明度為 0。然后當過渡處于活動狀態時,希望對透明度進行動畫處理。

我們甚至不必將透明度設置為1,因為在動畫制作過程中會刪除 fade-enter-from 和 fade-leave-to 類。 這會使元素自己單獨設置為默認透明度為 1 的動畫。

.fade-enter-active,.fade-leave-active { transition: opacity 0.5s ease;}.fade-enter-from,.fade-leave-to { opacity: 0;}

配合一些虛擬組件,這就是最終過渡效果。

Vue實現路由過渡動效的4種方法

#2 ? 幻燈片過渡

下一個是頁面幻燈片過渡。

模板將如下。 由于希望淡入和淡出過渡同時發生,所以我們不想為過渡設置特殊的模式。

<router-view v-slot='{ Component }'> <transition name='slide'> <component :is='Component' /> </transition></router-view>

為了使例子更容易理解,我把每個組件的寬度都設為100%,并占用至少 1 vh,還分別設置了背景色。

.wrapper { width: 100%; min-height: 100vh;}

最后過渡樣式將為要滑動組件的絕對位置設置動畫。如果需要不同的滑動方向,只需更改要設置的CSS屬性( top, bottom, left, right)。

.slide-enter-active,.slide-leave-active { transition: all 0.75s ease-out;}.slide-enter-to { position: absolute; right: 0;}.slide-enter-from { position: absolute; right: -100%;}.slide-leave-to { position: absolute; left: -100%;}.slide-leave-from { position: absolute; left: 0;}

這是最終效果:

Vue實現路由過渡動效的4種方法

#3 ? 縮放過渡

縮放過渡與漸變過渡非常相似。同樣需要把模式設置為 out-in,這樣可以確保動畫的正確順序。

<router-view v-slot='{ Component }'> <transition name='scale' mode='out-in'> <component :is='Component' /> </transition></router-view>

然后用樣式改變元素的透明度和 transform: scale。

.scale-enter-active,.scale-leave-active { transition: all 0.5s ease;}.scale-enter-from,.scale-leave-to { opacity: 0; transform: scale(0.9);}

為了使這個過渡看上去更干凈,可以把整個網頁的背景色設置為黑色。

這是最終效果:

Vue實現路由過渡動效的4種方法

#4 ? 組合過渡

過渡的效果有很多很多,常用的做法是把一些基礎的過渡結合在一起,例如把幻燈片和縮放合并為一個過渡。

<router-view v-slot='{ Component }'> <transition name='scale-slide'> <component :is='Component' /> </transition></router-view>

.scale-slide-enter-active,.scale-slide-leave-active { position: absolute; transition: all 0.85s ease;}.scale-slide-enter-from { left: -100%;}.scale-slide-enter-to { left: 0%;}.scale-slide-leave-from { transform: scale(1);}.scale-slide-leave-to { transform: scale(0.8);}

這是最終效果

Vue實現路由過渡動效的4種方法

看上去還不錯吧。

#5 ? 寫在最后

近期在提升 Vue 的過程中,發現一個高逼格的 Vue3+TS 教程。

到此這篇關于Vue實現路由過渡動效的4種方法的文章就介紹到這了,更多相關Vue 路由過渡動效 內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Vue
相關文章:
主站蜘蛛池模板: 河南橡胶接头厂家,河南波纹补偿器厂家,河南可曲挠橡胶软连接,河南套筒补偿器厂家-河南正大阀门 | 阻垢剂-反渗透缓蚀阻垢剂厂家-山东鲁东环保科技有限公司 | 船用锚链|专业锚链生产厂家|安徽亚太锚链制造有限公司 | 酒吧霸屏软件_酒吧霸屏系统,酒吧微上墙,夜场霸屏软件,酒吧点歌软件,酒吧互动游戏,酒吧大屏幕软件系统下载 | 航空连接器,航空插头,航空插座,航空接插件,航插_深圳鸿万科 | 内窥镜-工业内窥镜厂家【上海修远仪器仪表有限公司】 | 美缝剂_美缝剂厂家_美缝剂加盟-地老板高端瓷砖美缝剂 | 合肥升降机-合肥升降货梯-安徽升降平台「厂家直销」-安徽鼎升自动化科技有限公司 | 防腐储罐_塑料储罐_PE储罐厂家_淄博富邦滚塑防腐设备科技有限公司 | 国际船舶网 - 船厂、船舶、造船、船舶设备、航运及海洋工程等相关行业综合信息平台 | 学生作文网_中小学生作文大全与写作指导| 彭世修脚_修脚加盟_彭世修脚加盟_彭世足疗加盟_足疗加盟连锁_彭世修脚技术培训_彭世足疗 | 杜康白酒加盟_杜康酒代理_杜康酒招商加盟官网_杜康酒厂加盟总代理—杜康酒神全国运营中心 | 嘉兴泰东园林景观工程有限公司_花箱护栏| 对辊破碎机-液压双辊式,强力双齿辊,四辊破碎机价格_巩义市金联机械设备生产厂家 | 小型玉石雕刻机_家用玉雕机_小型万能雕刻机_凡刻雕刻机官网 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 胶辊硫化罐_胶鞋硫化罐_硫化罐厂家-山东鑫泰鑫智能装备有限公司 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | EPDM密封胶条-EPDM密封垫片-EPDM生产厂家 | 流量检测仪-气密性检测装置-密封性试验仪-东莞市奥图自动化科技有限公司 | 行星齿轮减速机,减速机厂家,山东减速机-淄博兴江机械制造 | 网站建设,北京网站建设,北京网站建设公司,网站系统开发,北京网站制作公司,响应式网站,做网站公司,海淀做网站,朝阳做网站,昌平做网站,建站公司 | 亮化工程,亮化设计,城市亮化工程,亮化资质合作,长沙亮化照明,杰奥思【官网】 | 集装箱展厅-住人集装箱住宿|建筑|房屋|集装箱售楼处-山东锐嘉科技工程有限公司 | 昆山PCB加工_SMT贴片_PCB抄板_线路板焊接加工-昆山腾宸电子科技有限公司 | 自动化展_机器人展_机床展_工业互联网展_广东佛山工博会 | 高尔夫球杆_高尔夫果岭_高尔夫用品-深圳市新高品体育用品有限公司 | 植筋胶-粘钢胶-碳纤维布-碳纤维板-环氧砂浆-加固材料生产厂家-上海巧力建筑科技有限公司 | 闭端端子|弹簧螺式接线头|防水接线头|插线式接线头|端子台|电源线扣+护线套|印刷电路板型端子台|金笔电子代理商-上海拓胜电气有限公司 | 北京三友信电子科技有限公司-ETC高速自动栏杆机|ETC机柜|激光车辆轮廓测量仪|嵌入式车道控制器 | 无缝方管|无缝矩形管|无缝方矩管|无锡方管厂家 | 包装盒厂家_纸盒印刷_礼品盒定制-济南恒印包装有限公司 | 沈阳液压泵_沈阳液压阀_沈阳液压站-沈阳海德太科液压设备有限公司 | 万濠投影仪_瑞士TRIMOS高度仪_尼康投影仪V12BDC|量子仪器 | B2B网站_B2B免费发布信息网站_B2B企业贸易平台 - 企资网 | 胀套-锁紧盘-风电锁紧盘-蛇形联轴器「厂家」-瑞安市宝德隆机械配件有限公司 | 400电话_400电话申请_866元/年_【400电话官方业务办理】-俏号网 3dmax渲染-效果图渲染-影视动画渲染-北京快渲科技有限公司 | 金联宇电缆总代理-金联宇集团-广东金联宇电缆实业有限公司 | 京港视通报道-质量走进大江南北-京港视通传媒[北京]有限公司 | 沥青车辙成型机-车托式混凝土取芯机-混凝土塑料试模|鑫高仪器 | 寮步纸箱厂_东莞纸箱厂 _东莞纸箱加工厂-东莞市寮步恒辉纸制品厂 |