【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 都非常简单直观,上手容易。
相关文章
|
JavaScript 前端开发 UED
Vue 表情包输入组件的实现代码:支持自定义表情库、快捷键发送和输入框联动的聊天表情解决方案
本文详细介绍了在 Vue 项目中实现一个功能完善、交互友好的表情包输入组件的方法,并提供了具体的应用实例。组件设计包含表情分类展示、响应式布局、与输入框的交互及样式定制等功能。通过核心技术实现,如将表情插入输入框光标位置和点击外部关闭选择器,确保用户体验流畅。同时探讨了性能优化策略,如懒加载和虚拟滚动,以及扩展性方案,如自定义主题和国际化支持。最终,展示了如何在聊天界面中集成该组件,为用户提供丰富的表情输入体验。
876 8
|
Web App开发 JavaScript 数据可视化
vue3扩展echart封装为组件库-快速复用
vue3扩展echart封装为组件库-快速复用
1046 7
|
JavaScript 前端开发 Java
vue2知识点:Vue封装的过度与动画
vue2知识点:Vue封装的过度与动画
176 0
|
JavaScript
vue尚品汇商城项目-day02【14.vuex状态管理库】
vue尚品汇商城项目-day02【14.vuex状态管理库】
117 0
|
JavaScript
vue尚品汇商城项目-day03【16.开发Search组件模块中的TypeNav商品分类菜单(过渡动画效果)+17.(优化)针对三级菜单联动进行优化,优化方向为减少查询】
vue尚品汇商城项目-day03【16.开发Search组件模块中的TypeNav商品分类菜单(过渡动画效果)+17.(优化)针对三级菜单联动进行优化,优化方向为减少查询】
255 0
|
JavaScript 前端开发 UED
组件库实战 | 用vue3+ts实现全局Header和列表数据渲染ColumnList
该文章详细介绍了如何使用Vue3结合TypeScript来开发全局Header组件和列表数据渲染组件ColumnList,并提供了从设计到实现的完整步骤指导。
|
前端开发 JavaScript
初识 Vue(24)---(Vue 中同时使用过渡和动画)
Vue 中同时使用过渡和动画 在上篇博客 《Vue 中使用 animate.css 库》基础上开始这篇博客 在上篇博客中,完成了 引入 animate.
1354 0
|
前端开发 内存技术
Vue_同时使用过渡和动画
在上一节我们用animate动画库,在刷新页面时没有动画 如何解决第一次就显示动画内容呢? 在transform 上加上appear 和appear-active-class <transition name='fade' appear enter-active-class='animate.
1762 0
|
9月前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
743 2