仪表盘 Svelte 组件

Framework7 提供了仪表盘组件。它生成外观精美、完全响应式的 SVG 仪表盘。

仪表盘组件

包含以下组件:

仪表盘属性

属性类型默认值描述
id字符串仪表盘元素 ID 属性
type字符串circle仪表盘类型。可以是 circlesemicircle
value数字0仪表盘值/百分比。必须是 01 之间的数字
size数字200生成的 SVG 图片大小(以像素为单位)
bgColor字符串transparent仪表盘背景颜色。可以是任何有效的颜色字符串,例如 #ff00ffrgb(0,0,255) 等。
borderBgColor字符串#eeeeee主边框/描边背景颜色
borderColor字符串#000000主边框/描边颜色
borderWidth字符串10主边框/描边宽度
valueText字符串null仪表盘值文本(仪表盘中心的较大文本)
valueTextColor字符串#000000值文本颜色
valueFontSize字符串31值文本字体大小
valueFontWeight字符串500值文本字体粗细
labelText字符串null仪表盘附加标签文本
labelTextColor字符串#888888标签文本颜色
labelFontSize字符串14标签文本字体大小
labelFontWeight字符串400标签文本字体粗细

示例

gauge.svelte
<script>
  import { Navbar, Page, BlockTitle, Block, Segmented, Button, Gauge } from 'framework7-svelte';

  let gaugeValue = 0.5;
</script>

<Page>
  <Navbar title="Gauge" />
  <Block strongIos outlineIos>
    <p>
      Framework7 comes with Gauge component. It produces nice looking fully responsive SVG gauges.
    </p>
  </Block>
  <Block strongIos outlineIos class="text-align-center">
    <Gauge
      type="circle"
      value={gaugeValue}
      size={250}
      borderColor="#2196f3"
      borderWidth={10}
      valueText={`${gaugeValue * 100}%`}
      valueFontSize={41}
      valueTextColor="#2196f3"
      labelText="amount of something"
    />
    <Segmented tag="p" raised>
      <Button active={gaugeValue === 0} onClick={() => (gaugeValue = 0)}>0%</Button>
      <Button active={gaugeValue === 0.25} onClick={() => (gaugeValue = 0.25)}>25%</Button>
      <Button active={gaugeValue === 0.5} onClick={() => (gaugeValue = 0.5)}>50%</Button>
      <Button active={gaugeValue === 0.75} onClick={() => (gaugeValue = 0.75)}>75%</Button>
      <Button active={gaugeValue === 1} onClick={() => (gaugeValue = 1)}>100%</Button>
    </Segmented>
  </Block>

  <BlockTitle>Circle Gauges</BlockTitle>
  <Block strongIos outlineIos>
    <div class="grid grid-cols-2 grid-gap">
      <div class="text-align-center">
        <Gauge
          type="circle"
          value={0.44}
          valueText="44%"
          valueTextColor="#ff9800"
          borderColor="#ff9800"
        />
      </div>
      <div class="text-align-center">
        <Gauge
          type="circle"
          value={0.12}
          valueText="$120"
          valueTextColor="#4caf50"
          borderColor="#4caf50"
          labelText="of $1000 budget"
          labelTextColor="#f44336"
          labelFontWeight={700}
        />
      </div>
    </div>
  </Block>
  <BlockTitle>Semicircle Gauges</BlockTitle>
  <Block strongIos outlineIos>
    <div class="grid grid-cols-2 grid-gap">
      <div class="text-align-center">
        <Gauge
          type="semicircle"
          value={0.3}
          valueText="30%"
          valueTextColor="#f44336"
          borderColor="#f44336"
        />
      </div>
      <div class="text-align-center">
        <Gauge
          type="semicircle"
          value={0.5}
          valueText="30kg"
          valueTextColor="#e91e63"
          borderColor="#e91e63"
          labelText="of 60kg total"
          labelTextColor="#333"
        />
      </div>
    </div>
  </Block>
  <BlockTitle>Customization</BlockTitle>
  <Block strongIos outlineIos>
    <div class="grid grid-cols-2 grid-gap">
      <div class="text-align-center">
        <Gauge
          type="circle"
          value={0.35}
          valueText="35%"
          valueTextColor="#4caf50"
          valueFontSize={51}
          valueFontWeight={700}
          borderWidth={20}
          borderColor="#4caf50"
          borderBgColor="#ffeb3b"
          bgColor="#ffeb3b"
        />
      </div>
      <div class="text-align-center">
        <Gauge
          type="circle"
          value={0.67}
          valueText="$670"
          valueTextColor="#000"
          borderColor="#ff9800"
          labelText="of $1000 spent"
          labelTextColor="#4caf50"
          labelFontWeight={800}
          labelFontSize={12}
          borderWidth={30}
        />
      </div>
    </div>
    <br />
    <div class="grid grid-cols-2 grid-gap">
      <div class="text-align-center">
        <Gauge
          type="semicircle"
          value={0.5}
          valueText="50%"
          valueTextColor="#ffeb3b"
          valueFontSize={41}
          valueFontWeight={700}
          borderWidth={10}
          borderColor="#ffeb3b"
          borderBgColor="transparent"
        />
      </div>
      <div class="text-align-center">
        <Gauge
          type="semicircle"
          value={0.77}
          borderColor="#ff9800"
          labelText="$770 spent so far"
          labelTextColor="#ff9800"
          labelFontWeight={800}
          labelFontSize={12}
          borderWidth={10}
        />
      </div>
    </div>
  </Block>
</Page>