【Vue 3】一个小巧玲珑的 Vue 组件切换动画库,开源且免费!!

简介: 【Vue 3】一个小巧玲珑的 Vue 组件切换动画库,开源且免费!!

TransX 是一个基于 Vue 3 的组件切换动画库,支持多种动画效果,包括淡入淡出、翻转、缩放等。

它的特点是 轻量级高性能易于使用,非常适合在项目中实现复杂的组件切换效果。

下面,我将详细介绍如何在项目中集成和使用这个强大的动画库。

技术栈

  • Vue 3
  • Vite
  • JavaScript

搭建步骤

1. 创建 Vue 3 项目

首先,我们需要创建一个 Vue 3 项目。如果你还没有安装 Vue CLI,可以使用以下命令进行安装:

npm install -g @vue/cli

安装完成后,创建一个新的 Vue 项目:

vue create my-transx-app

在选择配置时,选择默认配置即可。

2. 安装 TransX

进入项目目录,并安装 TransX:

cd my-transx-app
npm install transx

3. 配置 TransX

main.js 文件中引入并注册 TransX:

import { createApp } from 'vue';
import App from './App.vue';
import TransX from 'transx';
const app = createApp(App);
app.use(TransX);
app.mount('#app');

4. 使用 TransX

在组件中使用 TransX 提供的动画效果。以下是一个简单的示例:

<template>
  <div>
    <button @click="prev">Previous</button>
    <button @click="next">Next</button>
    <TransX ref="transx" :defaultIndex="currentIndex" :time="0.6">
      <div v-for="(item, index) in items" :key="index" class="item">
        {{ item }}
      </div>
    </TransX>
  </div>
</template>
<script setup>
import { ref } from 'vue';
const currentIndex = ref(0);
const items = ref(['Page 1', 'Page 2', 'Page 3']);
const transx = ref(null);
const prev = () => {
  currentIndex.value = (currentIndex.value - 1 + items.value.length) % items.value.length;
  transx.value.prev();
};
const next = () => {
  currentIndex.value = (currentIndex.value + 1) % items.value.length;
  transx.value.next();
};
</script>
<style>
.item {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 200px;
  background-color: #f0f0f0;
  margin: 10px 0;
}
</style>

支持的参数

参数 说明 类型 默认值 备注
time 动画时长 number 0.6 单位秒
loop 是否循环展现 boolean true
autoplay 是否自动循环 boolean, number false autoplay 传递为 true 时,会赋予默认值1000,单位毫秒
delay 动画间隔 number -1
defaultIndex 默认显示第几张 number 0
nextTransition 下一个的动画 string moveLeftBack 动画种类见下方
prevTransition 上一个的动画 string moveRightBack 动画种类见下方

支持的事件

事件 说明 回调参数
over 跳转到了边界后的回调 isEnd:边界状态,false 表示第一页,true 表示最后一页
transitionend 动画结束时的回调 currentIndex:当前的索引,值从 0 开始

示例代码

<template>
  <TransX ref="transx" @over="onOver" @transitionend="onTransitionEnd" :time="0.6">
    <div v-for="(item, index) in items" :key="index" class="item">
      {{ item }}
    </div>
  </TransX>
</template>
<script setup>
import { ref } from 'vue';
const items = ref(['Page 1', 'Page 2', 'Page 3']);
const onOver = (isEnd) => {
  console.log('边界到了', isEnd);
};
const onTransitionEnd = (currentIndex) => {
  console.log('当前到第几页了: ', currentIndex);
};
</script>

支持的 API

API 说明 示例代码
goto 跳转到第几页 this.$refs.transx.goto(3);
prev 跳转到上一页 this.$refs.transx.prev();
next 跳转到下一页 this.$refs.transx.next();

支持的动画种类

  • fadeIn: 淡入
  • fadeOut: 淡出
  • flip: 翻转
  • moveLeftQuart
  • moveRightQuart
  • moveLeftBack
  • moveRightBack
  • zoomOutBack
  • zoomInBack
  • rotateLeftBack
  • rotateRightBack
  • rotateLeftTop
  • rotateRightTop
  • zoomRotateIn
  • zoomRotateOut
  • shuttleLeft
  • shuttleRight
  • shuttleDown
  • shuttleUp
  • rollLeft
  • rollRight
  • scaleXLeft
  • scaleXRight

github地址

https://github.com/tnfe/transx

在线演示

https://codesandbox.io/s/practical-sid-0ubim

结语

我特别喜欢 TransX 的几个方面:

  1. 1. 轻量级:相比其他庞大的动画库,TransX 非常轻量,几乎不会对项目性能造成影响。
  2. 2. 多样性:TransX 提供了丰富的动画种类,几乎能够满足我们所有的动画需求。
  3. 3. 易用性:无论是参数配置还是事件处理,TransX 都非常简单直观,上手容易。
相关文章
|
12月前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
872 2
|
11月前
|
缓存 JavaScript
vue中的keep-alive问题(2)
vue中的keep-alive问题(2)
745 137
|
人工智能 JavaScript 算法
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
1617 0
|
JavaScript
vue实现任务周期cron表达式选择组件
vue实现任务周期cron表达式选择组件
1621 4
|
JavaScript UED
用组件懒加载优化Vue应用性能
用组件懒加载优化Vue应用性能
|
JavaScript 数据可视化 前端开发
基于 Vue 与 D3 的可拖拽拓扑图技术方案及应用案例解析
本文介绍了基于Vue和D3实现可拖拽拓扑图的技术方案与应用实例。通过Vue构建用户界面和交互逻辑,结合D3强大的数据可视化能力,实现了力导向布局、节点拖拽、交互事件等功能。文章详细讲解了数据模型设计、拖拽功能实现、组件封装及高级扩展(如节点类型定制、连接样式优化等),并提供了性能优化方案以应对大数据量场景。最终,展示了基础网络拓扑、实时更新拓扑等应用实例,为开发者提供了一套完整的实现思路和实践经验。
1933 78
|
缓存 JavaScript 前端开发
Vue 基础语法介绍
Vue 基础语法介绍
|
JavaScript 前端开发 开发者
Vue 自定义进度条组件封装及使用方法详解
这是一篇关于自定义进度条组件的使用指南和开发文档。文章详细介绍了如何在Vue项目中引入、注册并使用该组件,包括基础与高级示例。组件支持分段配置(如颜色、文本)、动画效果及超出进度提示等功能。同时提供了完整的代码实现,支持全局注册,并提出了优化建议,如主题支持、响应式设计等,帮助开发者更灵活地集成和定制进度条组件。资源链接已提供,适合前端开发者参考学习。
880 17
|
人工智能 JSON JavaScript
VTJ.PRO 首发 MasterGo 设计智能识别引擎,秒级生成 Vue 代码
VTJ.PRO发布「AI MasterGo设计稿识别引擎」,成为全球首个支持解析MasterGo原生JSON文件并自动生成Vue组件的AI工具。通过双引擎架构,实现设计到代码全流程自动化,效率提升300%,助力企业降本增效,引领“设计即生产”新时代。
963 1