适用范围: vue、 v-if, v-show控制的模块切换

    效果:

    26e0m-rw4m7.gif

    屏幕录制 2019-09-09 下午4.43.10.mov

    1. <template>
    2. <div class="box">
    3. <div id="translate-demo" class="demo">
    4. <div class="translate-demo-wrapper">
    5. <transition :name="`${on}-translate-fade`">
    6. <div class="red" v-if="on === 'go'" key="on" v-swiperight="go" v-swipeleft="back">on</div>
    7. <div class="yellow" v-else key="off" v-swiperight="go" v-swipeleft="back">off</div>
    8. </transition>
    9. </div>
    10. </div>
    11. </div>
    12. </template>
    13. <script>
    14. export default {
    15. data() {
    16. return {
    17. on: "go"
    18. };
    19. },
    20. methods: {
    21. go() {
    22. this.on = "go";
    23. },
    24. back() {
    25. this.on = "back";
    26. console.log("后退");
    27. }
    28. },
    29. computed: {},
    30. components: {}
    31. };
    32. </script>
    33. <style lang='less' scoped>
    34. .translate-demo-wrapper {
    35. position: relative;
    36. height: 18px;
    37. }
    38. .translate-demo-wrapper div {
    39. position: absolute;
    40. width: 100vw;
    41. height: 100vh;
    42. }
    43. .red {
    44. background: red;
    45. }
    46. .yellow {
    47. background: yellow;
    48. }
    49. .btn {
    50. width: 50%;
    51. height: 100px;
    52. border: 1px solid red;
    53. font-size: 25px;
    54. margin: 0 auto;
    55. }
    56. .box {
    57. text-align: center;
    58. background: #e3e3e3;
    59. }
    60. // vue渐变前进
    61. .go-translate-fade-enter-active,
    62. .go-translate-fade-leave-active {
    63. transition: all 1s;
    64. }
    65. .go-translate-fade-enter-active {
    66. opacity: 1;
    67. transform: translateX(0);
    68. }
    69. .go-translate-fade-enter,
    70. .go-translate-fade-leave-active {
    71. opacity: 0.2;
    72. }
    73. .go-translate-fade-enter {
    74. transform: translateX(100vw);
    75. }
    76. .go-translate-fade-leave-active {
    77. transform: translateX(-100vw);
    78. }
    79. // 渐变后退
    80. .back-translate-fade-enter-active,
    81. .back-translate-fade-leave-active {
    82. transition: all 1s;
    83. }
    84. .back-translate-fade-enter-active {
    85. opacity: 1;
    86. transform: translateX(0);
    87. }
    88. .back-translate-fade-enter,
    89. .back-translate-fade-leave-active {
    90. opacity: 0.2;
    91. }
    92. .back-translate-fade-enter {
    93. transform: translateX(-100vw);
    94. }
    95. .back-translate-fade-leave-active {
    96. transform: translateX(100vw);
    97. }
    98. </style>

    vue官网源链接,代码需要去控制台看源码才能找到: