perf(motion): 第三批入场动效时长收敛至 300ms(9 文件 20 处)

承接前两批,继续清理 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,全站零引用)
This commit is contained in:
2026-09-03 19:12:38 +08:00
parent 8117dba865
commit ceeb88aca3
9 changed files with 20 additions and 20 deletions
@@ -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"
>
<div className="flex items-center gap-3 mb-6">
@@ -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"
>
<div className="mb-12">
+1 -1
View File
@@ -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"
>
<div className="flex items-center gap-3 mb-6">
+3 -3
View File
@@ -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"
>
<div className="flex items-center gap-3 mb-6">
@@ -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 }}
>
<div className="mb-12">
<div className="flex items-center gap-3 mb-6">
@@ -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"
>
<div className="mb-12">