UI Design System
build dev

List

纵向展示同类对象集合。中文惯用名:列表。
稳定本期新增已接入

元信息

字段值
规范 IDcomponent.list
名称List
二级分类数据展示(data-display)
用途纵向展示同类对象集合
描述中文惯用名:列表。

预览

静态结构:List 渲染为 <ul> 根节点(data-slot="list"),每行 <li> 为 flex 三段式——左侧可选圆形 avatar(avatar 值匹配 http(s):/data:/路径协议时渲染 36px 圆形 <img>,否则渲染同尺寸圆形占位文本块)、中部 title(font-medium)与可选 description(弱化色,均单行 truncate 截断)、右侧可选 extra 弱化文本。split(缺省 true)以 divide-y 实现行间分隔线,bordered 为根节点外边框与圆角;items 为空时复用 Empty 原语渲染「暂无数据」空态(bordered 仍生效)。

DSL 结构

DslNode
{
  "type": "List",
  "props": {
    "items": [
      {
        "key": "1",
        "title": "订单 #PO20260922001",
        "description": "金额 ¥1,280.00 · 已支付"
      },
      {
        "key": "2",
        "title": "订单 #PO20260922002",
        "description": "金额 ¥356.00 · 待审核"
      }
    ],
    "split": true
  }
}

何时用

何时使用

  • 纵向展示同类对象集合:成员、文件、动态、消息摘要等结构一致的条目。
  • 条目以浏览、识别为主:标题 + 辅助描述 + 头像 / 缩略图 + 行尾元信息。
  • 内容区或卡片内的轻量列表,行数有限、无复杂行内操作。

何时不用

  • 承载一个独立主题或对象摘要:使用 Card;List 表达的是集合而非单个对象。
  • 需要按行列对齐、排序、筛选或行内密集操作结构化数据:使用 Table;高密度编辑与虚拟化使用 DataTable。
  • 展示层级数据:使用 Tree;按时间顺序展示事件:使用 Timeline。
  • 超大数据量的连续滚动:List 不分页不虚拟化,应使用带加载策略的专业列表方案。

变体

变体视觉形态适用场景
默认(split)行间细分隔线的纵向列表常规对象集合,缺省形态
split=false 无分隔无分隔线的紧凑行行数少或依靠留白分组的轻量列表
bordered 带边框外边框 + 圆角容器独立成块的列表区,需与页面背景区分边界
带头像(图片)36px 圆形图片成员、联系人等有人格化头像的条目
带头像(占位文本)36px 圆形灰底文本块无图时用首字 / 缩写占位(如「张」「API」)
空态Empty 原语「暂无数据」items 为空或数据未返回时的兜底呈现

API 属性

属性类型默认值说明
itemsListItemData[][]列表数据(可含表达式解析后的数组);项结构 { key?, title, description?, avatar?, extra? };为空时渲染空态
splitbooleantrue行间分隔线
borderedbooleanfalse外边框(含圆角);空态同样生效
classNamestring—通用:根节点 class(与内置样式合并)
styleCSSProperties—通用:根节点内联样式

使用规范

  • 行结构固定为三段:avatar(可选)→ title + description → extra(可选);title 为主文本、description 与 extra 为弱化辅文本,均单行截断,长内容靠详情页承载。
  • avatar 按值形态判定:图片地址(http(s):/data:/相对路径)渲染图片,其余文本渲染圆形占位块;同列表内保持一致形态。
  • extra 仅承载字符串元信息(时间、数量、状态短文案),不放操作按钮;行内操作场景改用 Table。
  • items 为空时必须呈现空态,不留空白区域;空态下 bordered 边框保留,避免容器塌陷。
  • List 无内置分页 / 加载更多 / 虚拟化,数据量受控(建议数十行内);行间分隔(split)缺省开启,密集列表保持默认。

正例

  • ✓ 成员列表:avatar 传头像图片地址,title 姓名,description 角色,extra 展示加入时间。
  • ✓ 接口资源列表:avatar 传「API」占位文本,split + bordered 组成独立资源区块。
  • ✓ 数据未返回:items 传空数组,自动呈现「暂无数据」空态,容器边框不塌。

反例

  • ✕ 在 extra 中塞入操作按钮或长段文本(extra 仅字符串元信息;操作列表改用 Table)。
  • ✕ 用 List 展示层级数据或时间线(应分别使用 Tree / Timeline)。
  • ✕ 同列表内混用图片头像与文本占位头像,或关闭 split 后条目过密无法分辨行边界。

Design Token 映射

不适用:组件 tokenRefs 为空:样式 Token 数据尚未接入,三层映射(Primitive → Semantic → Component)待样式 Token 接入后回填。