当前位置:首页 > VUE

vue实现水球图

2026-03-29 17:47:50VUE

实现水球图的方法

在Vue中实现水波球图(水球图)可以通过第三方库或手动绘制实现。以下是两种常见方法:

使用第三方库(如echarts-liquidfill

echarts-liquidfill是基于ECharts的水波球图插件,专为展示百分比数据设计。

vue实现水球图

安装依赖:

vue实现水球图

npm install echarts echarts-liquidfill --save

Vue组件示例:

<template>
  <div ref="liquidChart" style="width: 400px; height: 400px"></div>
</template>

<script>
import * as echarts from 'echarts';
import 'echarts-liquidfill';

export default {
  mounted() {
    this.initChart();
  },
  methods: {
    initChart() {
      const chart = echarts.init(this.$refs.liquidChart);
      chart.setOption({
        series: [{
          type: 'liquidFill',
          data: [0.6, 0.5, 0.4], // 水波高度(0-1)
          radius: '80%',
          outline: {
            show: false
          },
          backgroundStyle: {
            color: '#E6F7FF'
          },
          label: {
            fontSize: 28,
            color: '#1890FF'
          }
        }]
      });
    }
  }
};
</script>

使用SVG手动绘制

通过SVG和CSS动画实现基础水波效果:

<template>
  <div class="liquid-container">
    <svg viewBox="0 0 100 100" class="liquid-svg">
      <path :d="wavePath" fill="#1890FF" class="liquid-wave" />
      <circle cx="50" cy="50" r="45" fill="none" stroke="#E6F7FF" stroke-width="2"/>
    </svg>
    <div class="liquid-value">{{ percentage }}%</div>
  </div>
</template>

<script>
export default {
  props: {
    percentage: { type: Number, default: 60 }
  },
  computed: {
    wavePath() {
      const y = 50 - (this.percentage / 100 * 40);
      return `M0,${y} Q25,${y-10} 50,${y} T100,${y} L100,100 L0,100 Z`;
    }
  }
};
</script>

<style>
.liquid-container {
  position: relative;
  width: 200px;
  height: 200px;
}
.liquid-svg {
  width: 100%;
  height: 100%;
}
.liquid-wave {
  animation: wave 3s linear infinite;
}
.liquid-value {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 24px;
  color: #1890FF;
}
@keyframes wave {
  0% { transform: translateX(0); }
  100% { transform: translateX(-50px); }
}
</style>

关键参数说明

  1. 数据范围:水波高度应为0-1之间的值,对应0%-100%
  2. 样式配置
    • radius 控制水球大小
    • outline 设置边框样式
    • backgroundStyle 定义背景色
  3. 动画效果:可通过CSS或ECharts内置动画调整波动速度

两种方法分别适用于快速集成和自定义需求场景,根据项目复杂度选择即可。

标签: 水球vue
分享给朋友:

相关文章

vue实现tag

vue实现tag

Vue 实现标签(Tag)功能 在 Vue 中实现标签(Tag)功能可以通过多种方式完成,以下是一些常见的方法和实现步骤: 使用动态组件和 v-for 通过 v-for 指令动态渲染标签列表,结合样…

vue 实现打印

vue 实现打印

Vue 实现打印功能的方法 在Vue项目中实现打印功能,可以通过以下几种方式实现: 使用window.print()方法 通过调用浏览器的原生打印API实现基础打印功能,适用于简单内容打印。 //…

vue 实现fadeout

vue 实现fadeout

Vue 实现淡出效果 在 Vue 中实现淡出(fade-out)效果可以通过 CSS 过渡或动画结合 Vue 的动态渲染功能完成。以下是几种常见方法: 使用 Vue 过渡(Transition)组件…

vue 实现excel

vue 实现excel

Vue 实现 Excel 功能 前端导出 Excel 使用 xlsx 库可以轻松实现前端 Excel 导出功能。安装依赖: npm install xlsx 导出 Excel 示例代码: impo…

vue实现树形

vue实现树形

Vue 实现树形组件 在 Vue 中实现树形结构通常需要递归组件和动态数据绑定。以下是实现树形组件的几种常见方法。 递归组件实现 递归组件是 Vue 中实现树形结构的核心方法。通过组件调用自身,可以…

vue 实现 confirm

vue 实现 confirm

实现确认对话框的方法 在Vue中实现确认对话框可以通过多种方式完成,包括使用内置组件、第三方库或自定义组件。 使用浏览器原生confirm 最简单的实现方式是直接调用浏览器原生的confirm方法。…