Skip to content

List 列表 ​

用于展示同类信息集合,可承载标题、描述与扩展操作。

基础用法 ​

带边框列表

迭代 v1.0 需求清单全部组件单测通过文档站已部署已发布

无边框 ​

默认分隔线

仅保留条目间分隔线不加整体边框

尺寸 ​

size 提供三档行密度:sm(紧凑)/ md(默认)/ lg(宽松),联动行内边距与标题字号。

尺寸 size

size="sm":紧凑列表适合设置项、通知摘要size="md":常规列表不加 size 即默认size="lg":宽松列表适合图文混排

内容形态 ​

多种内容形态

NEW 未提供 description 插槽时,内容走默认插槽。 等待负责人确认待处理

Meta 结构化(头像与描述) ​

oas-list-item 提供 Meta 结构化通道:

  • description 属性:描述文本快捷通道(与 slot="description" 二选一,插槽优先,可放富内容);
  • avatar 属性:头像 URL 快捷通道,渲染为首部圆形头像;
  • slot="avatar":头像富内容通道(可放 oas-avatar 或任意自定义内容),优先于 avatar 属性。

头像 + 描述(属性通道)

在线30 分钟前待确认

头像自定义(slot 通道放 oas-avatar)

周已加入吴邀请中

前置媒体(icon / image) ​

除圆形头像外,条目另有两个前置媒体插槽,三者各自判空显隐、可按需组合:

  • slot="icon":通用图标位(如 oas-icon),尺寸跟随内容;
  • slot="image":方形缩略图位,尺寸与头像同档联动(sm 24 / md 32 / lg 40),小圆角裁剪填充;
  • slot="avatar":圆形头像位(见上节)。

图标位与方形缩略图位

12 篇封面缩略图已同步规范缩略图

整行链接(href / target) ​

href 使条目成为整行链接:行内渲染覆盖整行的 <a>(可访问名称取行标题),点击任意空白处即导航,键盘 Tab 聚焦、Enter 触发;target 配置打开方式(设置后自动补 rel="noopener noreferrer",显式 rel 不覆盖)。

链接行

文档

约定:链接行的点击语义 = 导航,不再派发 oas-click(与 clickable 行分离,避免双触发歧义);行内操作控件请放 slot="extra"(操作区位于链接覆盖层之上,可正常交互)。

行交互(clickable / selected) ​

给 oas-list-item 设置 clickable 后整行可点:有 hover 反馈、可聚焦(Enter / Space 触发),点击派发 oas-click 事件;行内嵌按钮/开关等交互控件时,点这些控件不触发行点击(行与控件不双触发),行本身不挂交互角色以免把它们裹进交互元素。需要行级交互语义(如 role="button")时由宿主显式挂 role(组件不覆盖宿主显式角色,与 card 口径一致)。selected 标记选中行高亮。选中态由宿主维护,常用于成员列表、设置项列表。

可点行与选中态

邮件、站内信、桌面通知可见范围、数据授权两步验证、登录设备管理

点击行切换选中态(单选示例);点击右侧开关不影响行选中。

页头与页尾 ​

slot="header" / slot="footer" 在列表首尾渲染自定义区域,常用于分组标题、统计信息、操作按钮位。

header / footer 插槽

团队成员(3)+ 邀请
产品经理前端工程师测试工程师
共 3 名成员 · 每周一同步权限

加载与空态 ​

加载态

加载完成前显示骨架占位由 loading 属性统一接管占位

空态

设置 empty 强制空态;列表没有任何 oas-list-item 子项时也会自动显示空态,可通过 empty-text 自定义文案。

slot="empty" 可以完全替换内置空态(图标 + 文案),对齐数据类组件的空态插槽惯例。

自定义空态插槽

没有找到匹配的任务调整筛选条件

空态文案与分隔线 ​

empty-text 自定义空态文案(默认「暂无数据」)。

自定义空态文案

split 控制条目分隔线:默认(不设置 bordered)时自带分隔线;设置 bordered 后分隔线关闭,需要时用 split 重新开启。

分隔线 split

bordered 默认不绘制条目分隔线仅整体边框bordered + split 追加条目分隔线边框与分隔线并存

斑马纹 ​

stripe 为视觉偶数行(第 2、4… 条)铺浅色底,适合审计日志、长表对照阅读。

斑马纹 stripe

图文混排 ​

条目默认插槽可放缩略图,配合标题与描述形成富媒体列表。

图文列表(缩略图 + 标题 + 描述)

周报记录已发布

数据通道(data + 模板双通道) ​

除声明式 oas-list-item 子项外,oas-list 支持数据驱动:通过 data property(推荐)或 data 属性(JSON 字符串)传入数组。对象行开箱即用:未提供模板时,{ title, description, avatar } 同名字段自动渲染为 Meta 结构(原始值行则直接渲染文本),不会退化成 "[object Object]"。渲染自定义有两条通道(与 oas-tree 的惯例对齐):

  1. template[slot="item"]:每项克隆的静态骨架,配合 oas-item-render 事件(detail 带 { index, item, element })按数据绑定;
  2. 只监听 oas-item-render,不写模板,完全命令式填充每行。

监听器请先挂后赋值:data 赋值同步触发渲染与 oas-item-render,后挂的监听会错过首轮渲染。

有 data 走数据通道、无 data 回落声明式子项。数据行为 oas-list-item 承载(结构、头像、选中、点击与声明式一致),行上有 data-index 上下文。

数据通道 + oas-item-render

数据源为 5 条任务记录,点击行有 oas-click 反馈。

template[slot="item"] 骨架克隆

滚动加载(reach-bottom) ​

max-height 把列表体变成滚动容器;滚动至底部(距离阈值由 bottom-offset 调整,默认 0)派发 oas-reach-bottom,进入触底区只派发一次、滚离后重新武装。配合 slot="load-more" 尾区放「加载更多」按钮或加载中占位,拉取与停止逻辑由宿主掌控。

触底加载 + load-more 尾区

滚到底自动追加 5 条(模拟异步),加载 3 批后显示「没有更多了」;bottom-offset="40" 距底部 40px 即触发。

虚拟滚动 ​

height 设置视口高度即启用虚拟滚动(内嵌复用 oas-virtual-list),row-height 指定行高(默认 64,要求数据行定高)。虚拟模式要求走 data 通道,海量数据只渲染可视窗口。

万级数据虚拟列表

10000 条日志记录,视口内仅渲染窗口项 + 缓冲。

组合:分页(oas-pagination) ​

列表不内建分页——数据受控于宿主,分页即「宿主切片 + 更新 data」。配合 oas-pagination 一行搞定:

分页组合

组合:卡片墙(oas-grid + oas-card) ​

网格卡片墙由 oas-grid + oas-card 组合承担(卡片样式本身是内容,列表只负责渲染数据,网格布局归栅格组件):

卡片墙组合

组合:分组列表 ​

data 通道的条目可带 group 字段(同组连续项归一段),列表自动为每组插入组头;group 值即组头文案,也支持用 groupLabel 字段自定义(缺省回落 group)。普通渲染模式下组头在列表滚动容器内吸顶(配 max-height 让列表体自身滚动):滚动时当前组组头钉在容器顶部,下一组组头到达顶部时顶走上一个组头。虚拟滚动(height)下组头不吸顶——分组数据自动回退全量渲染,组头以普通块随内容滚动,超大分组数据不建议配 height 使用:

分组列表(data 通道 · 组头吸顶)

多组连续条目、容器限高滚动——向下滚动观察:组头吸顶、新组头到顶顶走上一组头。

分组标题也可以用 slot="header" 分段或多个 oas-list 组合(声明式场景,与数据通道分组正交):

分组列表(header 分段)

进行中
list / timeline 重构进行中数据类组件复核进行中
已完成
variant 语义统一已完成

行 hover 反馈(hoverable) ​

hoverable 让不可点行也有 hover 底色反馈(默认关闭——现状仅 clickable 行自带 hover)。适合大量只读行的浏览定位;选中行保持 primary 底色不被压盖。数据通道行、声明式行与虚拟滚动行三通道一致生效。

hoverable 不可点行 hover

鼠标移入任意行:整行出现浅色底(行本身不可点)。

拖拽排序(sortable) ​

sortable 开启行拖拽排序(HTML5 DnD):把行拖到目标行上放置,列表派发 oas-reorder(detail: { from, to, item }——from / to 为行索引,item 为数据通道下的原数据项或声明式下的行元素),由宿主据事件重排数据(组件不自动移动行)。拖到自身不派发;虚拟滚动行不支持。支持数据通道与声明式两种行通道。

拖拽排序(sortable)

拖动任意行到另一行上松手试试。

API ​

oas-list ​

属性 ​

属性说明类型默认值
bordered是否显示整体边框boolean—
bottom-offset触底阈值(px):距底部剩余距离 ≤ 该值即视为触底,默认 0string0
data数据通道(JSON 字符串;property data / dataItems 优先),有 data 走数据通道、无 data 回落声明式子项。条目对象可带 group(分组名,同组连续项归一段并自动插组头)与可选 groupLabel(组头文案自定义,缺省回落 group);普通渲染模式组头吸顶(配 max-height 滚动容器),虚拟滚动下不吸顶unknown[]—
empty强制空态;无子项时自动空态boolean—
empty-text空态文案——
height虚拟滚动视口高度(px,设置即启用虚拟模式,要求 data 通道;数据带 group 时自动回退全量渲染、组头不吸顶)string320
hoverable不可点行的 hover 底色反馈(选中行排除)boolean—
loading加载态,显示骨架占位boolean—
max-height列表体最大高度(px 或 CSS 长度),设置后列表体成为滚动容器(配合 oas-reach-bottom 滚动加载;分组组头在此容器内吸顶)string—
row-height虚拟滚动行高(px,默认 64,要求数据行定高)string64
size行密度:sm / md(默认)/ lgstring—
sortable行拖拽排序(数据通道 + 声明式)boolean—
split是否显示条目分隔线boolean—
stripe斑马纹:视觉偶数行铺浅色底boolean—

事件 ​

事件说明
oas-click条目点击(数据/虚拟行),detail 带
oas-item-render数据通道每行渲染后派发,detail 带
oas-reach-bottom滚动触底(进入触底区派发一次,滚离后重新武装),detail 带
oas-reorder行拖放重排时派发,detail: { from, to, item }

插槽 ​

名称说明
默认默认(oas-list-item 声明式子项)
empty自定义空态,完全替换内置图标+文案
footer列表尾区域(统计信息、操作位)
header列表头区域(分组标题、操作位)
load-more列表尾「加载更多」区(按钮/加载中占位)
template[slot="item"]数据通道每项克隆的静态骨架,配合 oas-item-render 绑定数据

oas-list-item ​

属性 ​

属性说明类型默认值
avatar头像 URL 快捷通道(渲染首部圆形头像;slot="avatar" 优先)string—
clickable整行可点:hover 反馈、可聚焦(Enter/Space 触发)、点击派发 oas-click——
description描述文本快捷通道(slot="description" 优先,可放富内容)string—
href整行链接:行内渲染覆盖整行的 <a>(可访问名称取行标题),点击任意空白处即导航;链接行不再派发 oas-click(与 clickable 语义分离)string—
rel链接 rel(配合 href);显式设置时不自动补默认值string—
selected选中行高亮(视觉态,选中态由宿主维护)——
size行密度:sm / md(默认)/ lg(oas-list 下发的 data-size 优先于本属性之外的默认)——
target链接打开方式(配合 href);设置后自动补 rel="noopener noreferrer",显式 rel 不覆盖string—
title条目标题(渲染进可见标题区;读取后即从宿主移除,不残留原生悬浮提示;清空传空串);富内容用 slot="title"string—

事件 ​

事件说明
oas-click行点击,detail 带 { index, item }(数据行由 oas-list 注入上下文)

插槽 ​

名称说明
默认默认内容:渲染在描述区(未提供 description 插槽时作为其兜底)
avatar头像富内容(oas-avatar 或任意内容),优先于 avatar 属性
description描述区(不提供时回退默认插槽)
extra条目右侧扩展区
icon前置图标位(如 oas-icon),尺寸跟随内容;无内容时隐藏
image方形缩略图位(尺寸与头像同档联动 sm 24 / md 32 / lg 40,小圆角裁剪填充);无内容时隐藏
title标题富内容插槽,有内容时覆盖 title 属性文案

基于 MIT OR Apache-2.0 双许可发布