跳到正文
misoto22 design

数据

BarList

一个排行榜——条形在名字**后面**,而不是旁边。

什么时候用它

来源排行、最慢的接口、最大的客户。横向柱状图会把三分之一的宽度花在一根重复标签的坐标轴上,而这些标签本来就可以直接写在行里。

示例

default

Top referrers
NameValue
google.com42.1K
github.com18.8K
news.ycombinator.com9,400
x.com6,120
reddit.com3,280
lobste.rs1,940
bsky.app1,100
linkedin.com640

limit

Top referrers
NameValue
google.com42.1K
github.com18.8K
news.ycombinator.com9,400
Other13.1K

说明

一个排行榜——条形在名字后面,而不是旁边。

它回答的是「来源排行」「最慢的接口」「最大的客户」,而且比横向柱状图答得更好:横向柱状图会把三分之一的宽度花在一根重复标签的分类轴上,而这些标签本来就可以写进行里。从坐标轴上读一个名字再去对应一根柱子是两步;直接在柱子上读它是零步。

它是一个 <table>,因为它本来就是:两列、一行表头、一个条目一行。条形是名字那一格的背景,所以它永远不会变成读屏软件还要多走一遍的第二个元素。

当分类少而固定、坐标轴确实在干活时——读者需要照着刻度读数值,而不是扫一眼排名——改用 <BarChart orientation="horizontal">

属性

BarList props
属性类型默认值说明
items必填BarListItem[]
label必填string这个榜排的是什么。必填:它就是这张表对读屏软件的名字。
classNamestring
formatValue(value: number) => stringdefaultTick格式化每个值。默认沿用坐标轴那套紧凑写法。
limitnumber只保留前 N 项,其余折进一行「Other」。
maxnumber刻度的上限。不传就取最大的那一行。 两个榜要并排比较时一定要把它固定下来——各自独立取刻度的话,两边的第一名都会填满整条轨道,两个差得很远的数字看起来一模一样。
showLabelbooleanfalse把标签印在列表上方,而不是藏起来。
sortbooleantrue渲染前先按降序排序。

无障碍

  • 是真正的 <table>,两列、一行一个条目——因为排行榜本来就是这个结构。条形是名字那一格的**背景**,所以它不会变成读屏软件还要多走一遍的第二个元素。
  • limit 会把尾巴**加总**成一行「Other」,而不是丢掉——一个悄悄扔掉另外四十项的「前五」是在错误陈述整体,而读者根本看不出来。
  • 两个榜要并排比较时一定要固定 max:各自独立取刻度的话,两边的第一名都会填满整条轨道,两个差得很远的数字看起来一模一样。