Skip to content

Transition

Transition 给单个子节点提供 enter/leave 过渡。

html
<Transition name="fade">
  <div v-if="open">内容</div>
</Transition>

默认 class:

css
.fade-enter-from,
.fade-leave-to {
  opacity: 0;
}

.fade-enter-active,
.fade-leave-active {
  transition: opacity 0.2s ease;
}

自定义 name

name 就是 class 前缀,可写静态值或动态绑定:

ts
import { defineHtml, useRef } from "@elfui/core";

const open = useRef(true);
const transitionName = useRef("slide");

export const SlidingAside = defineHtml(`
  <Transition :name=${transitionName} :duration=${{ enter: 180, leave: 260 }}>
    <aside v-if=${open}>内容</aside>
  </Transition>
`);

上例会使用 slide-enter-fromslide-enter-activeslide-leave-to 等 class。未提供 name 时前缀为 v

JavaScript hooks

css=${false} 可以关闭 class 管理,改用 @enter@leave 等 hook,并在异步动画结束时调用 done()

appear

html
<Transition name="fade" appear>
  <div>首次挂载也过渡</div>
</Transition>

TIP

复杂动画建议用 CSS 变量控制持续时间和 easing。