index.vue 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <template>
  2. <div id="pages">
  3. <transition :name="transitionName">
  4. <keep-alive>
  5. <router-view></router-view>
  6. </keep-alive>
  7. </transition>
  8. <mt-tabbar v-model="selected" @click="mt_tab(selected)">
  9. <mt-tab-item id="main">
  10. <img slot="icon" src="../assets/images/100x100.png">
  11. 首页
  12. </mt-tab-item>
  13. <mt-tab-item id="order">
  14. <img slot="icon" src="../assets/images/100x100.png">
  15. 订单
  16. </mt-tab-item>
  17. <mt-tab-item id="mine">
  18. <img slot="icon" src="../assets/images/100x100.png">
  19. 我的
  20. </mt-tab-item>
  21. </mt-tabbar>
  22. </div>
  23. </template>
  24. <script>
  25. import axios from 'axios';
  26. let qs = require('qs');
  27. import Global from '../Global.js'
  28. export default {
  29. data() {
  30. return {
  31. selected: 'main',
  32. transitionName:''
  33. }
  34. },
  35. mounted() {
  36. },
  37. watch: {
  38. selected: function (val, oldVal) {
  39. // 这里就可以通过 val 的值变更来确定
  40. this.$router.push({path: '/' + val});
  41. },
  42. $route(to, from) {
  43. //如果to索引大于from索引,判断为前进状态,反之则为后退状态
  44. if(to.meta.index > from.meta.index){
  45. //设置动画名称
  46. this.transitionName = 'slide-left';
  47. }else{
  48. this.transitionName = 'slide-right';
  49. }
  50. }
  51. },
  52. components: {}
  53. }
  54. </script>
  55. <!-- Add "scoped" attribute to limit CSS to this component only -->
  56. <style scoped>
  57. @import "../assets/css/comm.css";
  58. .mint-tabbar a {
  59. width: 33%;
  60. float: left;
  61. }
  62. .slide-right-enter-active,
  63. .slide-right-leave-active,
  64. .slide-left-enter-active,
  65. .slide-left-leave-active {
  66. will-change: transform;
  67. transition: all 500ms;
  68. position: absolute;
  69. }
  70. .slide-right-enter {
  71. opacity: 0;
  72. transform: translate3d(-100%, 0, 0);
  73. }
  74. .slide-right-leave-active {
  75. opacity: 0;
  76. transform: translate3d(100%, 0, 0);
  77. }
  78. .slide-left-enter {
  79. opacity: 0;
  80. transform: translate3d(100%, 0, 0);
  81. }
  82. .slide-left-leave-active {
  83. opacity: 0;
  84. transform: translate3d(-100%, 0, 0);
  85. }
  86. </style>