开发预览 更新于 2026-05-10

Gauge 仪表盘

圆环型当前值仪表,4 种 tone。

基础用法

数据通过 props 传入,纯 SVG 渲染,无第三方图表库依赖。 配色取自 --viz-1..8 token,色盲友好。

背景 视口
42%CPU78%Memory92%Disk
src/App.vue
<script setup lang="ts">
import { CfGauge } from '@chufix-design/vue';
</script>
<template>
  <div class="demo-row" style="gap: 32px;">
    <CfGauge :value="42" label="CPU" unit="%" tone="success" />
    <CfGauge :value="78" label="Memory" unit="%" tone="warning" />
    <CfGauge :value="92" label="Disk" unit="%" tone="error" />
  </div>
</template>
<script setup>
import { CfGauge } from '@chufix-design/vue';
</script>
<template>
  <div class="demo-row" style="gap: 32px;">
    <CfGauge :value="42" label="CPU" unit="%" tone="success" />
    <CfGauge :value="78" label="Memory" unit="%" tone="warning" />
    <CfGauge :value="92" label="Disk" unit="%" tone="error" />
  </div>
</template>
import { CfGauge } from '@chufix-design/react';

export default function Demo() {
  return (
    <>
      <div className="demo-row" style={{ gap: 32 }}>
          <CfGauge value={42} label="CPU" unit="%" tone="success" />
          <CfGauge value={78} label="Memory" unit="%" tone="warning" />
          <CfGauge value={92} label="Disk" unit="%" tone="error" />
        </div>
    </>
  );
}
import { CfGauge } from '@chufix-design/react';

export default function Demo() {
  return (
    <>
      <div className="demo-row" style={{ gap: 32 }}>
          <CfGauge value={42} label="CPU" unit="%" tone="success" />
          <CfGauge value={78} label="Memory" unit="%" tone="warning" />
          <CfGauge value={92} label="Disk" unit="%" tone="error" />
        </div>
    </>
  );
}

扫角度

sweep 决定圆环开口大小(180=半圆 270=三分之三 360=整圆)。

背景 视口
42%180°60%270°(默认)78%360°
src/App.vue
<script setup lang="ts">
import { CfGauge } from '@chufix-design/vue';
</script>
<template>
  <div class="demo-row" style="gap: 24px;">
    <CfGauge :value="42" label="180°" unit="%" :sweep="180" />
    <CfGauge :value="60" label="270°(默认)" unit="%" :sweep="270" />
    <CfGauge :value="78" label="360°" unit="%" :sweep="360" />
  </div>
</template>
<script setup>
import { CfGauge } from '@chufix-design/vue';
</script>
<template>
  <div class="demo-row" style="gap: 24px;">
    <CfGauge :value="42" label="180°" unit="%" :sweep="180" />
    <CfGauge :value="60" label="270°(默认)" unit="%" :sweep="270" />
    <CfGauge :value="78" label="360°" unit="%" :sweep="360" />
  </div>
</template>
import { CfGauge } from '@chufix-design/react';

export default function Demo() {
  return (
    <>
      <CfGauge value={42} sweep={180} label="180°" unit="%" />
      <CfGauge value={60} sweep={270} label="270°" unit="%" />
      <CfGauge value={78} sweep={360} label="360°" unit="%" />
    </>
  );
}
import { CfGauge } from '@chufix-design/react';

export default function Demo() {
  return (
    <>
      <CfGauge value={42} sweep={180} label="180°" unit="%" />
      <CfGauge value={60} sweep={270} label="270°" unit="%" />
      <CfGauge value={78} sweep={360} label="360°" unit="%" />
    </>
  );
}

API

属性类型默认值说明
valuenumber当前值
min / maxnumber0 / 100
sizenumber160直径
thicknessnumber10圆环厚
sweepnumber270扫角度(180=半圆 270=三分之三 360=整圆)
tone'accent' | 'success' | 'warning' | 'error''accent'
unitstring数值右侧的单位(如 %
labelstring数值下方的小字标签
ariaLabelstring透传给根 <svg>aria-label

Events

Vue 事件React 回调载荷类型说明
clickonClickGaugeClickPayload点击 gauge 区域

类型

interface GaugeClickPayload {
  value: number;
  /** value 在 min..max 区间的归一比例(0..1)。 */
  ratio: number;
  nativeEvent?: PointerEvent | MouseEvent;
}

反馈与讨论

Gauge 仪表盘 的讨论

0
0 / 600
正在加载评论...