sparkline · 迷你趋势图

在一行里显示"最近走势"。它是辅助不是图表 —— 读屏读不出路径,所以旁边必须有数字。

真实语境(数字 + 涨跌 + 走势)

600519 1,684.20 +2.31%
000001 11.87 −0.84%
688981 86.40 +5.12%

每行都有名字 + 当前值 + 涨跌,走势图是第四层信息。 这就是为什么不能只有 sparkline。

三种形态

折线(默认)

面积(fill=yes)

柱状

换主题会自动跟着变

颜色默认是 var(--accent),不是写死的蓝 —— 切到暗色它会跟着变。

上面这条是 var(--danger)(本库的涨红)。

点击更新数据

更新只需改 data-spark 再调 Chart.emit(el)。

🔴 无障碍:它没有可读的文本等价物

纯 SVG 路径对读屏没有意义 —— 读屏只会说"图像",不会说"最近上涨 2.3%"。

⇒ 所以本组件刻意不加 role="img" (那会让人以为它有可读的替代文本,而它没有)。 ⇒ 要给出可读的值:在旁边放数字, 或用上面那种「名字 + 当前值 + 涨跌」的组合。 ⇒ 什么时候必须配文字:数值重要时 (例如"营收 128 万,同比 +3.2%")。纯装饰的小图可以不配。

反例

反例:只放 sparkline,没有数字

视觉上"很有信息",但读屏用户什么都不知道 —— 这是把视觉当成了唯一通道。

反例:动画不管 reduced-motion

前庭功能障碍者会因动画眩晕(WCAG 2.3.3)。 本组件在 @media (prefers-reduced-motion: reduce) 下 完全关掉动画,且打印时也不动。