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) 下
完全关掉动画,且打印时也不动。