【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 都非常简单直观,上手容易。
相关文章
|
3天前
|
JavaScript API
vue 批量自动引入并注册组件或路由等等
【10月更文挑战第12天】 vue 批量自动引入并注册组件或路由等等
|
3天前
|
JavaScript 前端开发 API
vue3中常用插件的使用方法:按需引入自定义组件,自动导入依赖包,自动生成路由,自动生成模拟数据
vue3中常用插件的使用方法:按需引入自定义组件,自动导入依赖包,自动生成路由,自动生成模拟数据
75 0
|
4天前
|
JavaScript
vue 组件中的 data 为什么是一个函数 ?
【10月更文挑战第8天】 在 Vue 组件中,`data` 被定义为一个函数而非普通对象,以确保每个组件实例拥有独立的数据空间,避免数据混乱。这种方式还支持数据的响应式更新、组件的继承与扩展,并有助于避免潜在问题,提升应用的可靠性和性能。
12 2
|
4天前
|
JavaScript 前端开发 UED
Vue 组件设计:构建生动多彩的树形结构组件
本文介绍了如何使用 Vue 构建一个功能强大的树形结构组件。该组件支持递归渲染节点及其子节点,提供了自定义节点颜色、文本和布局的功能。通过独特的样式处理不同层级的节点,展示出丰富的视觉效果。组件还支持动态布局和缩放,确保灵活的界面展示和用户体验。文章提供了详细的代码实现,包括 HTML、JavaScript 和 SCSS,帮助开发者快速集成和定制自己的树形结构组件。
25 0
Vue 组件设计:构建生动多彩的树形结构组件
|
5天前
|
JavaScript 搜索推荐
Vue 插槽全攻略:重塑组件灵活性
【10月更文挑战第7天】 Vue 的插槽(Slots)是一个强大的特性,用于增强组件的灵活性和可扩展性。插槽允许父组件向子组件传递内容,实现组件的复用和个性化展示。主要包括默认插槽、具名插槽和作用域插槽三种类型,分别适用于不同场景。通过插槽,可以提高组件的复用性、实现灵活的布局,并促进团队协作。
16 1
|
6天前
|
JavaScript
vue 函数化组件
【10月更文挑战第1天】 Vue.js 的函数化组件通过设置 `functional: true`,使其无状态和无实例,从而减少渲染开销。通过 `render` 函数的 `context` 参数传递数据。示例中,`smart-item` 组件根据 `data.type` 动态选择并渲染 `ImgItem`、`VideoItem` 或 `TextItem` 组件。根实例 `app` 通过按钮切换不同类型的组件数据。函数化组件适用于程序化选择组件和操作传递数据的场景。
|
10天前
|
前端开发 JavaScript API
Vue3商品SKU多规格编辑组件
Vue3商品SKU多规格编辑组件
31 5
|
7天前
|
JavaScript 前端开发
VUE学习三:双向绑定指令(v-mode)、组件化开发(全局组件/局部组卷/组件通信)、组件化高级(slot插槽使用)
这篇文章是关于Vue.js框架中的v-model指令和组件化开发的详细教程,涵盖了从基础使用到高级功能的多个方面。
19 1
|
7天前
|
JavaScript 程序员 开发者
你真的完全了解vue组件的概念吗?
【10月更文挑战第7天】你真的完全了解vue组件的概念吗?
|
9天前
|
缓存 JavaScript UED
vue的动态组件 keep-alive
【10月更文挑战第6天】
25 3