当前位置:首页 > 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 全景实现

vue 全景实现

Vue 全景实现方案 在Vue中实现全景效果,通常需要结合WebGL或第三方库来处理3D场景渲染。以下是几种常见方法: 使用Three.js库 Three.js是一个强大的WebGL库,适合创建3D…

vue 实现音乐

vue 实现音乐

Vue 实现音乐播放功能 在 Vue 中实现音乐播放功能,可以通过 HTML5 的 <audio> 元素或第三方库如 howler.js 来实现。以下是两种方法的详细步骤: 使用 HTM…

vue实现循环

vue实现循环

Vue 实现循环的方法 在 Vue 中,可以通过 v-for 指令实现循环渲染列表或对象。以下是几种常见的用法: 遍历数组 使用 v-for 遍历数组时,可以同时获取当前项和索引: <ul&…

vue ui实现创建vue项目

vue ui实现创建vue项目

使用 Vue UI 创建 Vue 项目 Vue UI 是 Vue CLI 提供的图形化界面工具,可以通过可视化操作创建和管理 Vue 项目。 安装 Vue CLI 确保已安装 Node.js(建议版…

vue实现左右菜单联动实现

vue实现左右菜单联动实现

Vue 实现左右菜单联动 使用事件总线通信 在 Vue 中可以通过事件总线实现左右菜单的通信。创建一个中央事件总线实例,让左右菜单通过事件监听和触发实现联动。 // eventBus.js impo…

vue实现移动端

vue实现移动端

Vue 实现移动端开发 Vue 适合移动端开发,结合相关框架和工具可以高效构建跨平台或原生应用。以下是常见实现方式及关键步骤: 使用 Vue 开发移动端网页(H5) 响应式设计 在 public/…