跳转至

用户体验优化(UX Optimization)

目标与原则

  • 快速可见:优先首屏关键内容与可感知速度(FCP/LCP)。
  • 清晰反馈:操作有响应,过程可预期,结果可确认。
  • 一致与可学习:交互与视觉一致,减少认知负担。
  • 可达性(a11y):人人可用,键盘可达,语义清晰。

可感知性能(Perceived Performance)

  • 骨架屏/占位符:减少“空白等待”,让布局稳定(避免 CLS)。
  • 渐进式加载:先文案与骨干,再图像/非关键脚本。
  • 优先级管理:<link rel="preload"> 关键资源,延后非关键任务。
  • 图像策略:LQIP/BlurHash 占位,loading="lazy" 惰加载。

输入与反馈

  • 输入即时校验:本地规则先行,错误信息就近且具体。
  • 按钮状态:禁用/加载中/成功/失败四态明确,避免重复提交。
  • 进度反馈:>500ms 操作显示 spinner;>2s 显示进度与预估。
  • 可撤销与恢复:危险操作提供撤销,失败给出可行动指引。

动画与过渡

  • 以“意义”为先:强调层级与动线(进入/退出/焦点)。
  • 性能友好:使用 transform/opacity,避免触发布局回流。
  • 速度曲线:采用 ease-in-out,200–300ms 区间更自然。
  • 无障碍:尊重“减少动态效果(prefers-reduced-motion)”。

信息架构与可读性

  • 文案:短句+动宾结构;按钮用动词;错误信息可执行。
  • 层级:每屏 1 个主要行动;视觉层级与 DOM 层级一致。
  • 语义:使用语义元素(nav/main/section/button),利于可达。

移动端专项

  • 触控尺寸:可点击区域 ≥ 44×44px;留出安全区域。
  • 键盘与视口:input 类型合理化,避免视口跳动与遮挡。
  • 滚动体验:禁用滚动链 overscroll-behavior,回弹与吸附自然。

度量与监控

  • 指标:FCP/LCP/CLS/INP/TTI;业务自定义 DAU、转化、流失。
  • 采集:Performance API、RUM,上报与抽样,异常聚合(Sentry)。

示例:骨架屏与“加载中”

<div class="card is-loading">
  <div class="avatar"></div>
  <div class="lines">
    <div class="line"></div>
    <div class="line short"></div>
  </div>
  </div>
.card.is-loading .avatar, .card.is-loading .line{background:linear-gradient(90deg,#eee,#f5f5f5 50%,#eee) 0 0/200% 100%;animation:shimmer 1.2s infinite}
.card .avatar{width:40px;height:40px;border-radius:50%}
.card .line{height:12px;margin:6px 0}
.card .line.short{width:60%}
@keyframes shimmer{to{background-position:-200% 0}}

延伸阅读

  • ../performance/README.md
  • ../foundations/browser.md
  • ../visualization/README.md