GaugeChart 使用手册
v1.7.5 · @snowui-design-system/components
许可阅读:首次阅读组件文档、源码或 npm 使用流程,先读完整 LICENSE;同任务同版本去重。公开 API 配置与内部实现修改分别按许可处理;全部组件使用统一运行包,源码权益以许可为准。
组件介绍
用半环或半饼展示多项数据占比,支持分段、渐变、环厚与出现动效,适合比例概览。
使用选择
用于半环形比例数据展示。当前数据模型与 CircularChart 一样以各项之和计算占比;任务完成进度使用 Progress。
当前组件展示半环形比例数据,并非 min/max 单指标仪表;data 每项使用 name 和正 value,占比按有效显示项之和计算。
省略 data 会显示示例数据,空数组展示空图;中心文案与内容用 centerTitle、centerSubtitle 或公开角色配置。
根默认可访问名称随 LocaleProvider 切换,使用
gaugeChart.name;显式aria-label优先。业务名称、数据值与数字格式保持调用方内容。
快速开始
以下示例展示推荐的基本组合。更多场景与组合限制见后文。
API
未重新声明的继承能力请查所属基础组件文档;本表只列本组件源码具名公开属性。
使用边界与详细说明
HoverPanel 使用共享三列布局;圆点—名称优先 --gap-1,名称—数值优先 --gap-2,两处均至少保留 4 CSS px,并跟随 LTR / RTL 逻辑方向。默认 16px 根字号下仍为 4px / 8px,较大 Token 保留;面板纵向分区和图表中心注释不套用此下限。
设计原则
专业图表组件:当前维护位置为
components/src/components/;该目录是迁移期技术位置。运行包使用与原始源码交付按 LICENSE 执行,不再以高级功能划分付费运行权益。默认 10 项,最多 28 项:默认
maxItems=10。显式提高maxItems时最多显示 28 项,颜色序列与 CircularChart 完全一致,10 项后仍按序循环。颜色优先级:
data[i].color → colors[i] → colorMode 对应回退色。单项颜色只影响当前扇区,不会传递给后续扇区。尺寸基准:
cornerRadius与separatorWidth都表示 320px 宽仪表图下的设计基准值。组件内部统一按width / 320等比缩放,数字和字符串数字都按基准值理解。透明间隔:扇区间隔在 path 几何阶段通过
padAngle + padRadius生成,贯穿内外圆弧并透出真实背景;不绘制固定白色 stroke,也不使用后置 gap mask。图层结构:base layer 由
showBaseLayer控制,默认关闭,开启时绘制 4% 同色占位层;fill layer 负责真实填充与出现动效;hit layer 使用完整扇区 path 负责 hover / focus / aria。Hover 强调:每个扇区从当前几何立即转向最新 hover / focus 目标,取消未完成的旧动画,不积压重播;hover / focus 时扇区不位移,仅外半径缓动增加
hoverThicknessGrowth;中心标签上方显示百分比,下方显示当前项名称。
共享纯逻辑位于 components/src/lib/chart/:颜色、渐变、几何基准缩放、圆环扇区 path 与出现时间轴。GaugeChart 自身保留半圆圆心、起始方向、中心标签和 hover 状态管理。
2.1 Props
其余未声明属性透传到根 Frame。根使用 role="group" 和 aria-label="仪表图"(zh-CN 默认,随 locale 切换);SVG 不隐藏可聚焦扇区,每个扇区命中项以 role="button" 和包含名称、百分比的独立 aria-label 暴露给辅助技术。
2.2 方法
2.3 数据结构
百分比数字格式优先级:labelFormatter(中心标签)→ item.percentFormat → 组件 percentFormat → NumberFormatContext → NumberFormats 默认值。扇区命中层 aria-label 不使用 labelFormatter,但会消费 percentFormat。
value <= 0 或非数字项会被过滤;显式空数组或全部无效时渲染空图表,省略 data 才使用内置示例数据。不支持直接传入 .bg-gradient-blue 这类背景工具类名,因为 SVG path 消费的是 fill。
布局模型
主布局模型:内禀原子布局。
根层为
Frame,内部本体层统一承载 SVG 绘图区与中心标签,负责等比缩放;HoverPanel 与本体层并列,保持原有尺寸。图表尺寸由
width/height与 SVG 几何算法决定;作为外部布局子项时表现为 Hug。不接入三槽位协议,不承担通用子元素排列。
根层显式传入
enableResponsive/enableContext/enableScaleObserver/enableDefaultMotion,并透传class、style与未声明属性。
详见 LayoutProtocol.md §12.7(源码参考:specs/maintainers/LayoutProtocol.md)。
动效
使用示例
GaugeChart 样式覆盖
先阅读 完整 LICENSE;同任务、同版本、同范围去重。
优先用组件公开 Props 匹配合适样式,尽可能保留原有视觉。确需改写时按 样式选择与改写顺序 使用自己的 class(含项目已有 Tailwind)或实例 style。以下名称来自源码实际消费的公开 override;先核对目标作用域,不修改私有 DOM。采用 SnowUI Token 时选择正确类别,外部应用不被要求安装一方 utilities。
GaugeChart 类型与状态
必填属性:无具名必填属性。
可双向绑定:本组件未声明具名双向绑定属性;状态更新通过公开回调或所属宿主处理。
继承声明:无接口继承。继承能力以基类公开文档为准;Omit 中的字段已排除,不能按基类原样使用。
以下为公开属性实际引用的类型声明,来自源码;Svelte Snippet 表示内容片段,ComponentProps 表示对应组件的 Props。
GaugeChartItem
来源:components/src/components/GaugeChart.svelte
GaugeChartColor
来源:components/src/components/GaugeChart.svelte
ChartColor
来源:components/src/lib/chart/colors.ts
SnowUIColor
来源:components/src/lib/color.ts
ChartGradient
来源:components/src/lib/chart/colors.ts
ChartGradientStop
来源:components/src/lib/chart/colors.ts
NumberFormatOptions
来源:components/src/lib/number-format.ts
NumberNotation
来源:components/src/lib/number-format.ts
GaugeChartColorMode
来源:components/src/components/GaugeChart.svelte
ChartColorMode
来源:components/src/lib/chart/colors.ts
StartDirection
来源:components/src/components/GaugeChart.svelte
AnchorPoint
来源:components/src/components/GaugeChart.svelte
ChartHoverMode
来源:components/src/components/GaugeChart.svelte
ChartHoverPanelVariant
来源:components/src/lib/chart/hover-panel.ts
ChartHoverPanelPlacement
来源:components/src/lib/chart/hover-panel.ts