Skip to content

过渡动画(useTransition)

useTransition 是一个动画状态机 Hook,管理 CSS 进入/离开过渡的 6 状态生命周期,自动生成对应的 CSS 类名。

此 API 源码:GitHub

使用方式

vue
<template>
  <view v-if="isVisible" :class="transitionClass">
    过渡内容
  </view>
</template>

<script setup>
import { ref } from 'vue'
import { useTransition } from 'see-u-ui'

const show = ref(false)
const { isVisible, transitionClass, enter, leave } = useTransition({
  show,
  duration: 300,
  name: 'fade',
  onAfterEnter: () => console.log('进入动画完成'),
  onAfterLeave: () => console.log('离开动画完成')
})
</script>

<style>
.fade-enter-active, .fade-leave-active {
  transition: opacity 0.3s ease;
}
.fade-enter-from, .fade-leave-to {
  opacity: 0;
}
</style>

状态流转

enter → entering → entered     (进入动画)
leave → leaving  → left        (离开动画)

API

useTransition(options)

参数类型默认值说明
options.showRef<boolean>控制显示/隐藏的响应式状态
options.durationnumber300动画时长(ms)
options.namestring'see'CSS 类名前缀
options.onBeforeEnter() => voidundefined进入动画开始前回调
options.onAfterEnter() => voidundefined进入动画完成后回调
options.onBeforeLeave() => voidundefined离开动画开始前回调
options.onAfterLeave() => voidundefined离开动画完成后回调

返回值:

属性/方法类型说明
isVisibleRef<boolean>是否可见(动画结束后才变为 false)
isAnimatingRef<boolean>是否正在动画中
stateRef<TransitionState>当前动画状态
transitionClassComputedRef<string>当前应应用的 CSS 类名
enter() => void手动触发进入动画
leave() => void手动触发离开动画
cleanup() => void清理定时器

TransitionState

ts
type TransitionState = 'enter' | 'entering' | 'entered' | 'leave' | 'leaving' | 'left'

辽 ICP 备 2025070134 号