From f6e1dff60069cd8e02d9610bc3a65cbae656d7b0 Mon Sep 17 00:00:00 2001 From: xfy Date: Mon, 27 Jul 2026 14:56:00 +0800 Subject: [PATCH] =?UTF-8?q?perf(admin):=20=E6=94=BE=E6=85=A2=E4=BB=AA?= =?UTF-8?q?=E8=A1=A8=E7=9B=98=E5=8A=A8=E7=94=BB=E8=8A=82=E5=A5=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 卡片入场 400→600ms(内联 animation-duration 覆盖),阶梯延迟 0/60/120/180→0/120/240/360ms - 近期文章行 row-enter 300→450ms,stagger 步进 50→80ms - CountUp 滚动时长 500→900ms --- input.css | 2 +- src/pages/admin/dashboard.rs | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/input.css b/input.css index 4ba5ed1..171c796 100644 --- a/input.css +++ b/input.css @@ -97,7 +97,7 @@ } .animate-row-enter { - animation: row-enter 300ms cubic-bezier(0.22, 1, 0.36, 1) both; + animation: row-enter 450ms cubic-bezier(0.22, 1, 0.36, 1) both; } /* Minimalist custom scrollbars */ diff --git a/src/pages/admin/dashboard.rs b/src/pages/admin/dashboard.rs index c7546d3..416e85f 100644 --- a/src/pages/admin/dashboard.rs +++ b/src/pages/admin/dashboard.rs @@ -90,13 +90,13 @@ pub fn Admin() -> Element { value: s.published, label: "已发布".to_string(), trend: "活跃".to_string(), - delay_ms: 60, + delay_ms: 120, } StatCard { value: s.drafts, label: "草稿".to_string(), trend: "待处理".to_string(), - delay_ms: 120, + delay_ms: 240, } } } @@ -117,7 +117,7 @@ pub fn Admin() -> Element { // 骨架屏阶段不播(避免动画被骨架屏截断,见 yggdrasil-ui-design-taste 规范)。 Link { class: "block {ADMIN_CARD_CLASS} p-8 bg-[var(--color-paper-entry)] hover:bg-[var(--color-paper-border)]/20 transition-all h-36 flex flex-col justify-between group hover:-translate-y-1 hover:shadow-md duration-300 {pending_enter_class}", - style: "animation-delay: 180ms", + style: "animation-delay: 360ms; animation-duration: 600ms", to: Route::AdminComments {}, match pending_count() { Some(count) => { @@ -182,7 +182,7 @@ pub fn Admin() -> Element { RecentPostItem { key: "{post.id}", post: post.clone(), - delay_ms: (i as i32) * 50, + delay_ms: (i as i32) * 80, } } } @@ -215,7 +215,7 @@ fn StatCard(value: i64, label: String, trend: String, delay_ms: i32) -> Element rsx! { div { class: "{ADMIN_CARD_CLASS} p-8 flex flex-col justify-between h-36 relative group hover:-translate-y-1 hover:shadow-md transition-all duration-300 animate-page-enter", - style: "animation-delay: {delay_ms}ms", + style: "animation-delay: {delay_ms}ms; animation-duration: 600ms", div { class: "flex justify-between items-start", div { class: "text-sm font-medium text-[var(--color-paper-secondary)]", "{label}" @@ -232,7 +232,7 @@ fn StatCard(value: i64, label: String, trend: String, delay_ms: i32) -> Element } } -/// 数字滚动组件:值从 0 以 easeOutQuint 缓动递增到 `target`(约 500ms)。 +/// 数字滚动组件:值从 0 以 easeOutQuint 缓动递增到 `target`(约 900ms)。 /// /// 命中 `prefers-reduced-motion` 时直接显示终值。动画在 `use_effect` 内驱动, /// 渲染体保持纯净(见 dioxus-render-purity 规范);数据仅 WASM 端加载,SSR 不挂载本组件。 @@ -251,7 +251,7 @@ fn CountUp(target: i64, class: String) -> Element { display.set(target); return; } - const DURATION_MS: i64 = 500; + const DURATION_MS: i64 = 900; let start = crate::utils::time::now_millis(); loop { crate::utils::time::sleep_ms(16).await;