基于Vue、Vuex、Vue-router實(shí)現(xiàn)的購物商城(原生切換動(dòng)畫)效果
效果圖如下所示:
在線地址: github.czero.cn/fancy
點(diǎn)擊下載安卓apk安裝包
源碼地址: github.com/czero1995/f…
項(xiàng)目主架構(gòu)
使用的庫
- vue-cli (vue+webpack腳手架)
- vue-router(路由跳轉(zhuǎn))
- vuex(狀態(tài)管理)
- axios(數(shù)據(jù)請求)
- mock.js(模擬后臺(tái)數(shù)據(jù))
- vue-touch(手勢判斷)
- fastclick(解決移動(dòng)端瀏覽器 300 毫秒點(diǎn)擊延遲問題)
- vue-lazyload(圖片懶加載)
- swiper(輪播)
設(shè)計(jì)布局:
將頁面的固定布局 position:fixed (比如Header,Footer)全部改為絕對布 局position:absolute ;
因?yàn)閒ixed會(huì)出現(xiàn)莫名其妙的兼容性問題,比如在ios11或ios8下會(huì)失效,輸入框軟鍵盤激活之后會(huì)把底部的固定定位彈出去,導(dǎo)致布局錯(cuò)亂。
用absolute實(shí)現(xiàn)fixed細(xì)節(jié)可以參考這篇
- HTML5
- CSS3
- Less
- rem(阿里用的那套rem算法)
- Flex(彈性布局)
- vue-touch(用于實(shí)現(xiàn)購物車左滑刪除功能) *動(dòng)畫(vue原生transition實(shí)現(xiàn)原生app的效果)
數(shù)據(jù)請求:
- Mock(模擬后臺(tái)數(shù)據(jù))
- Axios(請求數(shù)據(jù))
邏輯交互:
- vue(數(shù)據(jù)渲染,各個(gè)組件間的數(shù)值傳遞)
- vue-router(組件間的路由跳轉(zhuǎn))
- vuex(全局狀態(tài)的管理)
優(yōu)化方案:
- 騰訊智圖(壓縮圖片,減少圖片的體積)
- vue-lazyload(圖片懶加載,緩解加載數(shù)據(jù),提高網(wǎng)頁性能)
- fastclick(解決移動(dòng)端300ms延遲,提高頁面交互流暢度)
- vue-rouer(路由懶加載,分離app的js為多個(gè)js文件,到對應(yīng)的頁面再執(zhí)行對應(yīng)的js)
- webpack(config/index.js文件內(nèi)的productionSourceMap改為false,這樣打包出來的文件可以沒有.map結(jié)尾的js文件,且文件體積減少至少一半)
實(shí)現(xiàn)細(xì)節(jié)
媲美原生的頁面前進(jìn)和后退的動(dòng)畫實(shí)現(xiàn):
指定transition:name
在data中聲明默認(rèn)的進(jìn)出動(dòng)畫
在mounted()數(shù)據(jù)渲染初始化完成之后進(jìn)行判斷
拿到vuex的狀態(tài)值
然后進(jìn)行判斷
最后將當(dāng)前的組件名字傳給vuex,實(shí)現(xiàn)不同的組件進(jìn)去就有不同的切換動(dòng)畫。
下一頁動(dòng)畫
.slide-go-enter-active,
.slide-go-leave-active {
transition: all .5s;
opacity: .8;
}
.slide-go-enter,
.slide-go-leave-to {
transition: all .5s;
transform: translate3d(100%, 0, 0);
opacity: .8;
}
返回上一頁動(dòng)畫
.slide-back-enter-active,
.slide-back-leave-active {
transition: all .5s;
}
.slide-back-enter,
.slide-back-leave-to {
transition: all .5s;
transform: translate3d(-100%, 0, 0);
}
購物車左滑刪除
v-touch
在css中設(shè)置好刪除按鈕的偏移量
-webkit-transform: translate(-12%, 0); -webkit-transition: all 0.3s linear;
左右滑方法
滑動(dòng)的時(shí)候觸發(fā)select樣式,進(jìn)行綁定
讓當(dāng)前的列表項(xiàng)==購物車的列表,樣式會(huì)被激活,出現(xiàn)左滑刪除

注意頁面的盒子使用盒子之后會(huì)和原生頁面出現(xiàn)沖突,導(dǎo)致滑動(dòng)不流暢
因此,需要在main.js指定默認(rèn)的滑動(dòng)方式為橫向滑動(dòng)觸發(fā)
訂單頁面,點(diǎn)擊頂部導(dǎo)航和左右滑動(dòng)進(jìn)行組件的切換以及動(dòng)畫樣式的判斷
也是使用的v-touch組件,實(shí)現(xiàn)方式和組件切換類似。 我給每個(gè)訂單狀態(tài)的組件一個(gè)不同的數(shù)字,根據(jù)這個(gè)數(shù)字,判斷組件是左滑動(dòng)的動(dòng)畫還是又滑動(dòng)的動(dòng)畫

總結(jié)
以上所述是小編給大家介紹的基于Vue、Vuex、Vue-router實(shí)現(xiàn)的購物商城(原生切換動(dòng)畫),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- vue-router結(jié)合vuex實(shí)現(xiàn)用戶權(quán)限控制功能
- vue router+vuex實(shí)現(xiàn)首頁登錄驗(yàn)證判斷邏輯
- 基于vue,vue-router, vuex及addRoutes進(jìn)行權(quán)限控制問題
- vue-router+vuex addRoutes實(shí)現(xiàn)路由動(dòng)態(tài)加載及菜單動(dòng)態(tài)加載
- Vue-router 類似Vuex實(shí)現(xiàn)組件化開發(fā)的示例
- 詳解使用Vue Router導(dǎo)航鉤子與Vuex來實(shí)現(xiàn)后退狀態(tài)保存
- Vuex與Vue router的使用詳細(xì)講解
相關(guān)文章
vue-cli如何修改打包項(xiàng)目結(jié)構(gòu)及前綴
這篇文章主要介紹了vue-cli如何修改打包項(xiàng)目結(jié)構(gòu)及前綴問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07
使用Vue3實(shí)現(xiàn)一個(gè)穿梭框效果的示例代碼
這篇文章主要給大家介紹了如何使用?Vue3?實(shí)現(xiàn)一個(gè)穿梭框效果,當(dāng)選中數(shù)據(jù),并且點(diǎn)擊相對應(yīng)的方向箭頭時(shí),選中的數(shù)據(jù)會(huì)發(fā)送到對面,并且數(shù)據(jù)會(huì)保持正確的順序進(jìn)行排列,文中有詳細(xì)的代碼講解,具有一定的參考價(jià)值,需要的朋友可以參考下2023-12-12
vue實(shí)現(xiàn)搜索關(guān)鍵詞高亮的詳細(xì)教程
這篇文章主要為大家介紹了vue實(shí)現(xiàn)搜索關(guān)鍵詞高亮的詳細(xì)教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
15 分鐘掌握vue-next函數(shù)式api(小結(jié))
這篇文章主要介紹了15 分鐘掌握vue-next函數(shù)式api(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Vue實(shí)現(xiàn)登錄記住賬號密碼功能的思路與過程
最近在學(xué)習(xí)vue,發(fā)現(xiàn)了vue的好多坑,下面這篇文章主要給大家介紹了關(guān)于Vue實(shí)現(xiàn)登錄記住賬號密碼功能的思路與過程,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-11-11

