FxCollapseTransition 折叠过渡
FxCollapseTransition 属于 @fx/components,不依赖任何 UI 框架。被
FxCollapse/FxTree等组件内部复用,也可单独用于任意需要展开/收起过渡的内容。
基于 max-height + requestAnimationFrame 实现高度自适应的展开/收起过渡:无需提前知道内容高度,过渡过程中内容高度变化(如动态增删行)也会被正确计算。过渡时长由 @fx/styles 全局样式(.fx-collapse-transition-enter-active / -leave-active)提供。
基础用法
用 v-show(或 v-if)控制子节点显隐,外层包一个 FxCollapseTransition 即可获得平滑的高度过渡。
TIP
子节点应当是单个根元素。过渡通过读取该元素的 scrollHeight 计算目标高度,因此内容高度可任意变化。
API
Attributes
无。FxCollapseTransition 是纯过渡包裹组件,不接受任何属性。
Slots
| 插槽名 | 说明 | 类型 |
|---|---|---|
| default | 需要应用展开/收起过渡的内容(建议为单个根元素,配合 v-show 控制显隐) | — |
局部引入
ts
import { FxCollapseTransition } from "@fx/components"vue
<script setup lang="ts">
import { ref } from "vue"
import { FxCollapseTransition } from "@fx/components"
const show = ref(true)
</script>
<template>
<FxCollapseTransition>
<div v-show="show">展开 / 收起的内容</div>
</FxCollapseTransition>
</template>注意事项
- 必须引入
@fx/styles的全局样式,过渡时长类(.fx-collapse-transition-enter-active等)才能生效。 - 子节点用
v-show比v-if更合适:v-show仅切换显隐、节点始终在 DOM 中,过渡钩子能稳定读取scrollHeight;v-if在首次渲染时元素尚未挂载,可能出现无过渡的情况。 - 同一实例在快速 open→close→open 切换时会自动取消上一个未触发的
requestAnimationFrame,避免重复回调导致闪烁。
