最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Vue實現(xiàn)頁面切換左右滑動效果

 更新時間:2021年09月09日 14:46:59   作者:嘉爺  
這篇文章主要為大家詳細介紹了基于Vue實現(xiàn)頁面切換左右滑動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

基于Vue的頁面切換左右滑動效果,具體內容如下

HTML文本頁面:

<template>
 <div id="app>
 <transition :name="direction" mode="out-in"> <!--動態(tài)獲得transition 的name值-->
  <router-view class="app-view" wechat-title></router-view>
 </transition>
 </div>
</template>

JS定義代碼:定義在全局js文件里面

router.beforeEach((to, from, next) => {
 const list = ['home', 'group', 'user'] // 將需要切換效果的路由名稱組成一個數(shù)組
 const toName = to.name // 即將進入的路由名字
 const fromName = from.name // 即將離開的路由名字
 const toIndex = list.indexOf(toName) // 進入下標
 const fromIndex = list.indexOf(fromName) // 離開下標
 let direction = ''

 if (toIndex > -1 && fromIndex > -1) { // 如果下標都存在
  if (toIndex < fromIndex) {   // 如果進入的下標小于離開的下標,那么是左滑
  direction = 'left'
  } else {
  direction = 'right'   // 如果進入的下標大于離開的下標,那么是右滑
  }
 }

 store.state.viewDirection = direction //這里使用vuex進行賦值

 return next()
 })

在App.vue文件中,進行計算屬性:

computed: {

  direction () {
  const viewDir = this.$store.state.viewDirection
  let tranName = ''

  if (viewDir === 'left') {
   tranName = 'view-out'
  } else if (viewDir === 'right') {
   tranName = 'view-in'
  } else {
   tranName = 'fade'
  }

  return tranName
  },
 },

css3進行動畫效果定義:使用sass

待定義引入樣式文件:

// Variables
$AnimateHook: "animated";
$AnimateDuration: 0.8s;

// Mixins

// Base Style
.#{$AnimateHook} {
 -webkit-animation-duration: $AnimateDuration;
 animation-duration: $AnimateDuration;
 -webkit-animation-fill-mode: both;
 animation-fill-mode: both;

 // Modifier for infinite repetition
 &.infinite {
 -webkit-animation-iteration-count: infinite;
 animation-iteration-count: infinite;
 }

}

// Slide
@-webkit-keyframes slideInLeft {
 from {
 -webkit-transform: translate3d(-100%, 0, 0);
 transform: translate3d(-100%, 0, 0);
 visibility: visible;
 }

 to {
 -webkit-transform: translate3d(0, 0, 0);
 transform: translate3d(0, 0, 0);
 }

}

@keyframes slideInLeft {
 from {
 -webkit-transform: translate3d(-100%, 0, 0);
 transform: translate3d(-100%, 0, 0);
 visibility: visible;
 }

 to {
 -webkit-transform: translate3d(0, 0, 0);
 transform: translate3d(0, 0, 0);
 }

}

.slideInLeft {
 -webkit-animation-name: slideInLeft;
 animation-name: slideInLeft;
}

@-webkit-keyframes slideInRight {
 from {
 -webkit-transform: translate3d(100%, 0, 0);
 transform: translate3d(100%, 0, 0);
 visibility: visible;
 }

 to {
 -webkit-transform: translate3d(0, 0, 0);
 transform: translate3d(0, 0, 0);
 }

}

@keyframes slideInRight {
 from {
 -webkit-transform: translate3d(100%, 0, 0);
 transform: translate3d(100%, 0, 0);
 visibility: visible;
 }

 to {
 -webkit-transform: translate3d(0, 0, 0);
 transform: translate3d(0, 0, 0);
 }

}

.slideInRight {
 -webkit-animation-name: slideInRight;
 animation-name: slideInRight;
}

@-webkit-keyframes slideOutLeft {
 from {
 -webkit-transform: translate3d(0, 0, 0);
 transform: translate3d(0, 0, 0);
 }

 to {
 visibility: hidden;
 -webkit-transform: translate3d(-100%, 0, 0);
 transform: translate3d(-100%, 0, 0);
 }

}

@keyframes slideOutLeft {
 from {
 -webkit-transform: translate3d(0, 0, 0);
 transform: translate3d(0, 0, 0);
 }

 to {
 visibility: hidden;
 -webkit-transform: translate3d(-100%, 0, 0);
 transform: translate3d(-100%, 0, 0);
 }

}

.slideOutLeft {
 -webkit-animation-name: slideOutLeft;
 animation-name: slideOutLeft;
}

@-webkit-keyframes slideOutRight {
 from {
 -webkit-transform: translate3d(0, 0, 0);
 transform: translate3d(0, 0, 0);
 }

 to {
 visibility: hidden;
 -webkit-transform: translate3d(100%, 0, 0);
 transform: translate3d(100%, 0, 0);
 }

}

@keyframes slideOutRight {
 from {
 -webkit-transform: translate3d(0, 0, 0);
 transform: translate3d(0, 0, 0);
 }

 to {
 visibility: hidden;
 -webkit-transform: translate3d(100%, 0, 0);
 transform: translate3d(100%, 0, 0);
 }

}

.slideOutRight {
 -webkit-animation-name: slideOutRight;
 animation-name: slideOutRight;
}

@-webkit-keyframes inRight {
 0% {
 -webkit-transform: translate3d(100%, 0, 0);
 transform: translate3d(100%, 0, 0)
 }

 to {
 -webkit-transform: translateZ(0);
 transform: translateZ(0)
 }

}

@keyframes inRight {
 0% {
 -webkit-transform: translate3d(100%, 0, 0);
 transform: translate3d(100%, 0, 0)
 }

 to {
 -webkit-transform: translateZ(0);
 transform: translateZ(0)
 }

}

@-webkit-keyframes outLeft {
 0% {
 -webkit-transform: translateZ(0);
 transform: translateZ(0)
 }

 to {
 -webkit-transform: translate3d(100%, 0, 0);
 transform: translate3d(100%, 0, 0)
 }

}

@keyframes outLeft {
 0% {
 -webkit-transform: translateZ(0);
 transform: translateZ(0)
 }

 to {
 -webkit-transform: translate3d(100%, 0, 0);
 transform: translate3d(100%, 0, 0)
 }

}

定義進入與離開的動畫過渡:

.fade-enter-active,
.fade-leave-active {
 transition: all .2s ease;
}

.fade-enter,
.fade-leave-active {
 opacity: 0;
}

.view-in-enter-active,
.view-out-leave-active {
 position: absolute;
 top: 0;
 width: 100%;
 padding-top: px2rem($titbarHeight);
 -webkit-animation-duration: .3s;
 animation-duration: .3s;
 -webkit-animation-fill-mode: both;
 animation-fill-mode: both;
 -webkit-backface-visibility: hidden;
 backface-visibility: hidden;
}

.view-in-enter-active {
 -webkit-animation-name: inRight;
 animation-name: inRight;
}

.view-out-leave-active {
 -webkit-animation-name: outLeft;
 animation-name: outLeft;
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • vue實現(xiàn)帶小數(shù)點的星星評分

    vue實現(xiàn)帶小數(shù)點的星星評分

    這篇文章主要為大家詳細介紹了vue實現(xiàn)帶小數(shù)點的星星評分,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • vue 2.0封裝model組件的方法

    vue 2.0封裝model組件的方法

    本篇文章主要介紹了vue 2.0封裝model組件的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Vue實現(xiàn)多圖添加顯示和刪除

    Vue實現(xiàn)多圖添加顯示和刪除

    這篇文章主要為大家詳細介紹了Vue實現(xiàn)多圖添加顯示和刪除,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • vue實現(xiàn)codemirror代碼編輯器中的SQL代碼格式化功能

    vue實現(xiàn)codemirror代碼編輯器中的SQL代碼格式化功能

    這篇文章主要介紹了vue實現(xiàn)codemirror代碼編輯器中的SQL代碼格式化功能,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • Vue項目業(yè)務邏輯模塊介紹

    Vue項目業(yè)務邏輯模塊介紹

    這篇文章主要介紹了Vue項目業(yè)務邏輯,不同的項目有不同的功能,不同的功能需要不同的實現(xiàn),實現(xiàn)這些核心功能的代碼就叫業(yè)務邏輯。所以說業(yè)務邏輯是指一個實體單元為了向另一個實體單元提供服務,應該具備的規(guī)則與流程
    2022-11-11
  • vue.js-div滾動條隱藏但有滾動效果的實現(xiàn)方法

    vue.js-div滾動條隱藏但有滾動效果的實現(xiàn)方法

    下面小編就為大家分享一篇vue.js-div滾動條隱藏但有滾動效果的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • vue.js 輸入框輸入值自動過濾特殊字符替換中問標點操作

    vue.js 輸入框輸入值自動過濾特殊字符替換中問標點操作

    這篇文章主要介紹了vue.js 輸入框輸入值自動過濾特殊字符替換中問標點操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Vue如何獲取數(shù)據(jù)列表展示

    Vue如何獲取數(shù)據(jù)列表展示

    這篇文章主要為大家詳細介紹了Vue如何獲取數(shù)據(jù)列表展示,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • 實例教學如何寫vue插件

    實例教學如何寫vue插件

    本次小編通過一個簡單的實例來教給大家如何寫一個vue插件,以及需要注意的地方,如果有需要的讀者跟著學習一下吧。
    2017-11-11
  • vue項目實現(xiàn)頁面跳轉的方法

    vue項目實現(xiàn)頁面跳轉的方法

    這篇文章主要給大家分享的是vue項目實現(xiàn)頁面跳轉的方法,vue-router是前端開發(fā)中用來實現(xiàn)路由頁面跳轉的一個模塊。下面小編將帶來如何在已經(jīng)創(chuàng)建好的vue-router項目基礎下實現(xiàn)頁面跳轉,需要的朋友可以參考一下
    2021-11-11

最新評論

三河市| 行唐县| 高碑店市| 嵊泗县| 正宁县| 满城县| 兰西县| 新田县| 宜城市| 那坡县| 鄢陵县| 长葛市| 晋江市| 农安县| 右玉县| 台东市| 贡觉县| 淳化县| 夏河县| 吴川市| 龙游县| 屯门区| 吉隆县| 双桥区| 兴山县| 泽州县| 扶绥县| 明水县| 瓮安县| 灌阳县| 建瓯市| 塔城市| 华容县| 海门市| 介休市| 潼南县| 涞源县| 安陆市| 连山| 永修县| 准格尔旗|