Vue实现table左右切换平滑过渡效果

页面结构

<div>
      <span @click="checkBtn = '1'">1111</span> |
      <span @click="checkBtn = '2'">2222</span>
    </div>

    <div >
      <transition :name="transitionName" appear>
        <ContractTrade v-if="checkBtn === '1'" key="1" @traded="$emit('traded')" />
        <ContractTrade v-else key="2" @traded="$emit('traded')" />
      </transition>
    </div>

实现

const checkBtn = ref('1');
    const transitionName = computed(() => {
      if (checkBtn.value == '1') {
        return 'slide-left';
      } else {
        return 'slide-right';
      }
    });
.contract-trade-wrap {
  position: relative;
  overflow: hidden;
}

// .slide-right-enter-active,
// .slide-right-leave-active,
// .slide-left-enter-active,
// .slide-left-leave-active {
//   transition: all 0.2s linear;
// }

// .slide-right-enter {
//   transform: translateX(100%);
//   opacity: 1;
// }

// .slide-right-leave-to {
//   transform: translateX(-100%);
//   opacity: 0;
// }

// .slide-left-enter {
//   transform: translateX(-100%);
//   opacity: 0;
// }

// .slide-left-leave-to {
//   transform: translateX(100%);
//   opacity: 1;
// }

// ======
// .slide-right-enter {
//   transform: rotateY(-90deg);
//   transform-origin: top right;
// }
// .slide-right-leave-to {
//   transform: rotateY(90deg);
//   transform-origin: top right;
// }

// .slide-left-enter {
//   transform: rotateY(-90deg);
//   transform-origin: top left;
// }
// .slide-left-leave-to {
//   transform: rotateY(90deg);
//   transform-origin: top left;
// }

// .slide-enter-active,
// .slide-leave-active {
//   transition: opacity 0.5s;
// }

// .slide-enter,
// .slide-leave-to {
//   opacity: 0;
// }

// ====
// .slide-right-enter-active,
// .slide-left-leave-active {
//   animation: fade 0.6s;
// }

// .slide-right-enter,
// .slide-left-leave-to {
//   transform: translateX(100%);
//   opacity: 0;
// }

// @keyframes fade {
//   from {
//     transform: translateX(100%);
//     opacity: 0;
//   }
//   to {
//     transform: translateX(0);
//     opacity: 1;
//   }
// }

.nested-enter-active,
.nested-leave-active {
  transition: all 0.3s ease-in-out;
}
.nested-leave-active {
  transition-delay: 0.25s;
}

.nested-enter-from,
.nested-leave-to {
  transform: translateY(30px);
  opacity: 0;
}

.nested-enter-active,
.nested-leave-active {
  transition: all 0.3s ease-in-out;
}
.nested-enter-active {
  transition-delay: 0.25s;
}

.nested-enter-from,
.nested-leave-to {
  transform: translateX(30px);
  opacity: 0.001;
}

参考

Transition | Vue.js (vuejs.org)

相关推荐

  1. Vue实现table左右切换平滑过渡效果

    2024-06-06 12:16:03       11 阅读
  2. vue + element 实现鼠标左右滑动效果

    2024-06-06 12:16:03       39 阅读
  3. tab切换 vue

    2024-06-06 12:16:03       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-06 12:16:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-06 12:16:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-06 12:16:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-06 12:16:03       20 阅读

热门阅读

  1. Idea可以运行Python!

    2024-06-06 12:16:03       9 阅读
  2. TCL编程

    TCL编程

    2024-06-06 12:16:03      10 阅读
  3. 大数据平台技术选型

    2024-06-06 12:16:03       10 阅读
  4. Flutter_Android上架GooglePlay_问题

    2024-06-06 12:16:03       11 阅读
  5. 设计模式之命令模式

    2024-06-06 12:16:03       9 阅读
  6. C# Math.Round() 四舍六入五取偶

    2024-06-06 12:16:03       9 阅读
  7. C#一些高级语法

    2024-06-06 12:16:03       7 阅读
  8. 物联网的应用——环境监测

    2024-06-06 12:16:03       8 阅读
  9. 使用packstack快速部署OpenStack

    2024-06-06 12:16:03       8 阅读
  10. 动态规划:打家劫舍 II

    2024-06-06 12:16:03       9 阅读
  11. 前端 、Python 扁平化嵌套数组和应用场景

    2024-06-06 12:16:03       9 阅读
  12. 如何搭建开发一款看广告赚钱软件?

    2024-06-06 12:16:03       9 阅读