petstore-docs/前端UI规范.md
2026-04-12 23:24:40 +08:00

3.4 KiB
Raw Blame History

前端 UI 规范petstore

目标

  • 统一视觉风格,避免页面“各写各的”。
  • 保证移动端可读性和可点击性。
  • 降低后续新增页面的设计与维护成本。

设计基线

  • 主色:#16a34a
  • 页面背景:var(--pet-bg)
  • 主文案:var(--pet-text)
  • 次级文案:var(--pet-subtext)
  • 分割/边框:var(--pet-border)
  • 卡片阴影:var(--pet-card-shadow)

以上变量统一在 src/assets/global.css 维护,页面中不要写死同类颜色。

字体与层级

  • 页面标题18px / 700.text-title
  • 正文14px / 400~500.text-body
  • 说明/辅助12px / 400.text-sub
  • 避免 11px 及以下文本,移动端可读性较差。

间距规范

  • 统一间距标尺8 / 12 / 16 / 24优先使用全局变量
  • 页面左右基础边距16px.page-section
  • 模块间距12px.section-gap
  • 卡片圆角12~18px
  • 表单项垂直间距8~12px
  • 底部保留区:至少 120rpx(避免被底栏遮挡)

推荐使用:

  • 页面容器:.page-shell
  • 模块容器:.page-section
  • 模块间隔:.section-gap
  • 表单项包装:.form-field-wrap
  • 模块标题:.module-title

组件规范

顶部导航

  • 使用绿色渐变背景 + 轻阴影(.nav-gradient)。
  • 标题使用 18/700。
  • 左侧返回统一使用 AppIcon(back)
  • 返回按钮触达区保持足够(建议 40px 以上),并使用统一按压反馈(.nav-back:active)。

按钮

  • 主按钮绿色渐变白字12px 圆角,高度 44px。
  • 次按钮:浅底 + 边框,颜色低于主按钮一个层级。
  • 同区域最多一个高强调按钮,避免视觉噪音。

输入框

  • 使用统一 .van-field 样式。
  • 聚焦态有明显边框和光晕反馈。
  • 文本域最小高度 84~96px行高 1.45+。

卡片

  • 白底 + 细边框 + 轻阴影。
  • 不要叠加过多投影层。
  • 卡片内信息按“标题 > 关键值 > 说明”组织。
  • 卡片点击态统一轻微下沉 + 透明度变化,避免“有的会动有的不会动”。

图标

  • 全站优先使用统一 AppIcon,避免 emoji 与图标混用。
  • 新增图标时先补充到 src/components/AppIcon.vue,再在页面内复用。
  • 空态/占位图(如图片占位、头像角标)也使用同一套图标风格(如 camera)。

空状态

  • 用统一 .empty,文案简短明确。
  • 避免裸文本直接贴在背景上。

交互与可用性

  • 可点击区域建议不小于 40x40。
  • 反馈闭环完整:点击后要有 loading / toast / 状态变化。
  • 关键操作(删除、取消)保持二次确认。
  • 统一微交互:按钮、卡片、列表项按压反馈节奏一致(约 160ms

禁止项

  • 禁止在模板里堆叠大量内联 style
  • 禁止同一功能页使用多个不同风格按钮。
  • 禁止页面之间同类元素样式明显不一致(例如顶部导航、卡片、输入框)。
  • 禁止在业务页面重复定义全局已有的间距/标题样式(如 .module-title.form-field-wrap)。
  • 禁止新增 emoji 图标作为主视觉元素。

新页面接入清单

  • 引入并复用全局样式,不重复造轮子。
  • 先搭框架:page-shell -> nav -> sections -> bottom safe area
  • 自检 4 项:
    • 视觉是否与已有页一致
    • 小屏是否可读
    • 点击区域是否足够
    • 是否存在硬编码颜色/间距