From a1f636b67cb05d903592b2232fbec8c4dc6fef9d Mon Sep 17 00:00:00 2001 From: zhangxiang Date: Thu, 3 Sep 2026 19:12:38 +0800 Subject: [PATCH] =?UTF-8?q?perf(motion):=20=E7=AC=AC=E4=B8=89=E6=89=B9?= =?UTF-8?q?=E5=85=A5=E5=9C=BA=E5=8A=A8=E6=95=88=E6=97=B6=E9=95=BF=E6=94=B6?= =?UTF-8?q?=E6=95=9B=E8=87=B3=20300ms=EF=BC=889=20=E6=96=87=E4=BB=B6=2020?= =?UTF-8?q?=20=E5=A4=84=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 承接前两批,继续清理 Task #16 的 P0 硬违规: - brand-content (1) / methodology-content (3) / products-content-v3 (4) / solution-detail-content-v3 (4) / team-content-v3 (1) / detail-product-value (2) / service-value (1) / solution-value (3) / brand-visuals 入场处 (1) - 审计:P0 33 → 13,P1 163 / P2 28 持平 - 只改 duration,保留原 delay(与首批先例一致) 验证: - tsc --noEmit 0 error;eslint 9 文件 0 error(仅 methodology 既有 `any` 警告,非本次引入) - 视觉基线不变:前两批已证明时长改动在 reducedMotion+animations disabled 下不改变最终像素 剩余 13 处 P0 均为决策点,未在本批处理: - 3 处循环动画(detail-hero ×2、brand-visuals ×1,repeat:Infinity,违反「禁循环动画」) - 10 处死代码(src/lib/animations.tsx,全站零引用) --- src/app/(marketing)/about/brand/brand-content.tsx | 2 +- src/app/(marketing)/methodology/methodology-content.tsx | 6 +++--- src/app/(marketing)/products/products-content-v3.tsx | 8 ++++---- .../(marketing)/solutions/solution-detail-content-v3.tsx | 8 ++++---- src/app/(marketing)/team/team-content-v3.tsx | 2 +- src/components/detail/detail-product-value.tsx | 4 ++-- src/components/detail/service-value.tsx | 2 +- src/components/detail/solution-value.tsx | 6 +++--- src/components/ui/brand-visuals.tsx | 2 +- 9 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/app/(marketing)/about/brand/brand-content.tsx b/src/app/(marketing)/about/brand/brand-content.tsx index cda6b26..58addb4 100644 --- a/src/app/(marketing)/about/brand/brand-content.tsx +++ b/src/app/(marketing)/about/brand/brand-content.tsx @@ -90,7 +90,7 @@ export default function BrandContent() { 睿新致遠 diff --git a/src/app/(marketing)/methodology/methodology-content.tsx b/src/app/(marketing)/methodology/methodology-content.tsx index 2dd7c61..2eb8b27 100644 --- a/src/app/(marketing)/methodology/methodology-content.tsx +++ b/src/app/(marketing)/methodology/methodology-content.tsx @@ -34,7 +34,7 @@ export function MethodologyContent({ data }: MethodologyContentProps) { {heroSubtitle} @@ -42,7 +42,7 @@ export function MethodologyContent({ data }: MethodologyContentProps) { {heroTitle} @@ -50,7 +50,7 @@ export function MethodologyContent({ data }: MethodologyContentProps) { {heroDescription} diff --git a/src/app/(marketing)/products/products-content-v3.tsx b/src/app/(marketing)/products/products-content-v3.tsx index a8939a5..c2e761e 100644 --- a/src/app/(marketing)/products/products-content-v3.tsx +++ b/src/app/(marketing)/products/products-content-v3.tsx @@ -96,7 +96,7 @@ function HeroSection({ pageCopy }: { pageCopy?: PageCopy | null }) {
{heroTitle1}
@@ -108,7 +108,7 @@ function HeroSection({ pageCopy }: { pageCopy?: PageCopy | null }) { style={{ transformOrigin: 'left' }} initial={{ scaleX: 0 }} animate={{ scaleX: 1 }} - transition={{ duration: 0.8, delay: 1.2, ease: EASE_OUT }} + transition={{ duration: 0.3, delay: 1.2, ease: EASE_OUT }} /> @@ -118,7 +118,7 @@ function HeroSection({ pageCopy }: { pageCopy?: PageCopy | null }) { {heroDescriptionLines.map((line, i) => ( @@ -132,7 +132,7 @@ function HeroSection({ pageCopy }: { pageCopy?: PageCopy | null }) { diff --git a/src/app/(marketing)/solutions/solution-detail-content-v3.tsx b/src/app/(marketing)/solutions/solution-detail-content-v3.tsx index 64dcf7d..d48c399 100644 --- a/src/app/(marketing)/solutions/solution-detail-content-v3.tsx +++ b/src/app/(marketing)/solutions/solution-detail-content-v3.tsx @@ -45,7 +45,7 @@ function DetailHero({ solution }: DetailHeroProps) {
@@ -62,7 +62,7 @@ function DetailHero({ solution }: DetailHeroProps) { {solution.title} @@ -71,7 +71,7 @@ function DetailHero({ solution }: DetailHeroProps) { {solution.description} @@ -80,7 +80,7 @@ function DetailHero({ solution }: DetailHeroProps) { diff --git a/src/app/(marketing)/team/team-content-v3.tsx b/src/app/(marketing)/team/team-content-v3.tsx index ad40540..3b9ead9 100644 --- a/src/app/(marketing)/team/team-content-v3.tsx +++ b/src/app/(marketing)/team/team-content-v3.tsx @@ -167,7 +167,7 @@ export default function TeamContentV3({ data }: { data: Record {(teamData.heroTitle || '').split('\n').map((line, i) => ( diff --git a/src/components/detail/detail-product-value.tsx b/src/components/detail/detail-product-value.tsx index f67f3f9..871370e 100644 --- a/src/components/detail/detail-product-value.tsx +++ b/src/components/detail/detail-product-value.tsx @@ -118,7 +118,7 @@ export function ProductValueSection({ product }: ProductValueSectionProps) { initial={{ opacity: 0, y: 32 }} whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true, margin: '-120px' }} - transition={{ duration: 0.8, ease: [0.22, 1, 0.36, 1] }} + transition={{ duration: 0.3, ease: [0.22, 1, 0.36, 1] }} className="mb-16 sm:mb-20" >
@@ -243,7 +243,7 @@ export function ProductValueSection({ product }: ProductValueSectionProps) { initial={{ opacity: 0, y: 32 }} whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true, margin: '-80px' }} - transition={{ duration: 0.75, delay: 0.2 }} + transition={{ duration: 0.3, delay: 0.2 }} className="mt-24" >
diff --git a/src/components/detail/service-value.tsx b/src/components/detail/service-value.tsx index ec51e2e..8caf89a 100644 --- a/src/components/detail/service-value.tsx +++ b/src/components/detail/service-value.tsx @@ -26,7 +26,7 @@ export function ServiceValueSection({ service }: ServiceValueSectionProps) { initial={{ opacity: 0, y: 32 }} whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true, margin: '-120px' }} - transition={{ duration: 0.8, ease: [0.22, 1, 0.36, 1] }} + transition={{ duration: 0.3, ease: [0.22, 1, 0.36, 1] }} className="mb-16 sm:mb-20" >
diff --git a/src/components/detail/solution-value.tsx b/src/components/detail/solution-value.tsx index cc322e7..65f3168 100644 --- a/src/components/detail/solution-value.tsx +++ b/src/components/detail/solution-value.tsx @@ -21,7 +21,7 @@ export function SolutionValueSection({ solution }: SolutionValueSectionProps) { initial={{ opacity: 0, y: 32 }} whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true, margin: '-120px' }} - transition={{ duration: 0.8, ease: [0.22, 1, 0.36, 1] }} + transition={{ duration: 0.3, ease: [0.22, 1, 0.36, 1] }} className="mb-16 sm:mb-20" >
@@ -119,7 +119,7 @@ export function SolutionValueSection({ solution }: SolutionValueSectionProps) { initial={{ opacity: 0, y: 32 }} whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true, margin: '-80px' }} - transition={{ duration: 0.75, delay: 0.3 }} + transition={{ duration: 0.3, delay: 0.3 }} >
@@ -164,7 +164,7 @@ export function SolutionValueSection({ solution }: SolutionValueSectionProps) { initial={{ opacity: 0, y: 32 }} whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true, margin: '-80px' }} - transition={{ duration: 0.75, delay: 0.4 }} + transition={{ duration: 0.3, delay: 0.4 }} className="mt-20" >
diff --git a/src/components/ui/brand-visuals.tsx b/src/components/ui/brand-visuals.tsx index 4cb6700..a68cf4d 100644 --- a/src/components/ui/brand-visuals.tsx +++ b/src/components/ui/brand-visuals.tsx @@ -69,7 +69,7 @@ export function DataBar({ value, max = 100, label, color = 'brand' }: { value: n initial={{ width: 0 }} whileInView={{ width: `${percentage}%` }} viewport={{ once: true }} - transition={{ duration: 1, ease: [0.16, 1, 0.3, 1], delay: 0.2 }} + transition={{ duration: 0.3, ease: [0.16, 1, 0.3, 1], delay: 0.2 }} className="h-full rounded-full" style={{ backgroundColor: colorMap[color] }} />