优化展开动画与趋势控制布局

This commit is contained in:
2026-07-10 15:54:03 +08:00
parent 2cb36c5bbf
commit bfc114659d
2 changed files with 65 additions and 17 deletions
+52 -8
View File
@@ -67,7 +67,8 @@
</div>
</div>
<div v-show="filterBodyVisible" class="mt-4 grid gap-4">
<Transition name="fcb-expand-120">
<div v-if="filterBodyVisible" class="fcb-expand-content mt-4 grid gap-4">
<div class="flex flex-col gap-3 lg:flex-row lg:items-center">
<label class="min-w-0 flex-1">
<span class="sr-only">{{ t('fileManage.searchPlaceholder') }}</span>
@@ -253,6 +254,7 @@
</BaseButton>
</div>
</div>
</Transition>
</section>
<section
@@ -1107,12 +1109,13 @@
class="rounded-[30px] border px-4 py-4 shadow-md"
:class="[isDarkMode ? 'border-gray-700 bg-gray-700/30' : 'border-gray-200 bg-white']"
>
<div
v-for="(item, index) in visibleDetailTimeline"
:key="`${item.key}-${index}`"
class="grid grid-cols-[auto_minmax(0,1fr)] gap-3"
>
<div class="flex flex-col items-center">
<TransitionGroup name="fcb-expand-120" tag="div">
<div
v-for="(item, index) in visibleDetailTimeline"
:key="`${item.key}-${index}`"
class="fcb-expand-content grid grid-cols-[auto_minmax(0,1fr)] gap-3"
>
<div class="flex flex-col items-center">
<span
class="mt-1 h-3 w-3 rounded-full"
:class="getTimelineDotClass(item.severity)"
@@ -1141,7 +1144,8 @@
{{ item.displayDescription }}
</p>
</div>
</div>
</div>
</TransitionGroup>
</div>
</section>
@@ -2197,3 +2201,43 @@ onMounted(() => {
void loadHistoryFiles()
})
</script>
<style scoped>
.fcb-expand-content {
overflow: clip;
will-change: grid-template-rows, opacity, transform;
}
.fcb-expand-120-enter-active,
.fcb-expand-120-leave-active {
overflow: clip;
transition:
opacity 300ms cubic-bezier(0.22, 1, 0.36, 1),
transform 300ms cubic-bezier(0.22, 1, 0.36, 1),
max-height 300ms cubic-bezier(0.22, 1, 0.36, 1),
margin 300ms cubic-bezier(0.22, 1, 0.36, 1);
}
.fcb-expand-120-enter-from,
.fcb-expand-120-leave-to {
max-height: 0;
margin-top: 0;
margin-bottom: 0;
opacity: 0;
transform: translateY(-0.35rem);
}
.fcb-expand-120-enter-to,
.fcb-expand-120-leave-from {
max-height: 96rem;
opacity: 1;
transform: translateY(0);
}
@media (prefers-reduced-motion: reduce) {
.fcb-expand-120-enter-active,
.fcb-expand-120-leave-active {
transition-duration: 1ms;
}
}
</style>