css动画水球图

ops/2025/1/24 17:12:40/

由于echarts水球图动画会导致ios卡顿,所以纯css模拟

展示效果

组件

<template><div class="water-box"><div class="water"><div class="progress" :style="{ '--newProgress': newProgress + '%' }"></div><div class="num">{{ parseFloat(text).toFixed(2) + '%' }}</div></div></div>
</template>
<script>
export default {name: 'Water',props: {progress: {type: Number,default: 0},text: {type: Number,default: 0}},data() {return {newProgress: 0}},mounted() {this.newProgress = this.progress > 100 ? 100 : this.progress},watch: {progress(val) {this.newProgress = val > 100 ? 100 : val}}
}
</script><style scoped lang="scss">
.water-box {width: 100px;height: 100px;border-radius: 50%;border: 1px solid #4c5259;background: linear-gradient(180deg, #171c25 0%, #313741 49.79%, #171c25 100%);box-shadow: 0 2px 10px 0 rgba(255, 255, 255, 0.25);display: flex;align-items: center;justify-content: center;.water {position: relative;display: flex;justify-content: center;align-items: center;width: 87.5px;height: 87.5px;border-radius: 50%;&::after {content: '';position: absolute;left: 0;right: 0;bottom: 0;border: 1px solid #313741;background: linear-gradient(135deg, #04bdf8 30.52%, #01e7af 100%, #01e4b4 100%);border-radius: 50%;top: 0;}.progress {width: 100%;height: 100%;text-align: center;color: #fff;line-height: 125px;position: absolute;left: 0;top: 0;border-radius: 50%;z-index: 1;overflow: hidden;&::before,&::after {content: '';position: absolute;left: -50%;width: 200px;height: 200px;}&::before {background-color: #313741;opacity: 0.8;border-radius: 40% 30%;animation: rotate1 10s linear infinite;}&::after {background-color: #313741;opacity: 0.7;border-radius: 42% 40%;animation: rotate2 10s linear infinite;}}@keyframes rotate1 {0% {transform: rotate(0deg);bottom: var(--newProgress); /*控制进度*/}100% {transform: rotate(360deg);bottom: var(--newProgress);}}@keyframes rotate2 {0% {transform: rotate(45deg);bottom: var(--newProgress);}100% {transform: rotate(360deg);bottom: var(--newProgress);}}.num {z-index: 2;color: #fff;font-size: 18px;font-weight: 500;}}
}
</style>

引用

<water:progress="66":text="66"
/>


http://www.ppmy.cn/ops/152794.html

相关文章

防火墙安全策略

目录 一.拓扑信息 二.需求分析 三.命令行详细配置信息 1.配置IP 2.交换机配置 3.修改安全区域 4.安全策略 四.web界面详细配置 1.配置IP和设置安全区域 2.交换机配置 3.安全策略 五.测试 一.拓扑信息 二.需求分析 1.VLAN 2属于办公区域&#xff1b;VLAN 3属于生…

一文了解 DeepSeek R1 模型:AI 推理领域的革命性突破

网址&#xff1a;DeepSeek 官方网站 2025 年 1 月 20 日&#xff0c;DeepSeek 发布了全新的开源推理大模型 DeepSeek-R1。 这一模型在数学、编程和推理等多个任务上达到了与 OpenAI o1 相当的表现水平&#xff0c;同时将 API 调用成本降低了 90-95%。 这一发布不仅引发了 AI …

【wiki知识库】08.添加用户登录功能--后端SpringBoot部分

目录 一、今日目标? 二、SpringBoot后端实现 2.1 新增UserLoginParam 2.2 修改UserController 2.3 UserServiceImpl代码 2.4 创建用户上下文工具类 2.5?通过token校验用户&#xff08;重要&#xff09; 2.6 创建WebMvcConfig 2.7 用户权限校验拦截器 一、今日目标 上…

从63 秒到 0.482 秒:深入剖析 MySQL 分页查询优化

在日常开发中&#xff0c;数据库查询性能问题就像潜伏的“地雷”&#xff0c;总在高并发或数据量庞大的场景下引爆。尤其是当你运行一条简单的分页查询时&#xff0c;结果却让用户苦苦等待&#xff0c;甚至拖垮了系统。这种情况你是否遇到过&#xff1f; 你可能会想&#xff1…

【动态规划】--- 斐波那契数模型

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; 算法Journey &#x1f3e0; 第N个泰波那契数模型 &#x1f4cc; 题目解析 第N个泰波那契数 题目要求的是泰波那契数&#xff0c;并非斐波那契数。 &…

23. C语言 文件操作详解

本章目录: 前言文件操作概览1. 打开文件fopen() 函数二进制文件模式 2. 写入文件fputc() 写单个字符fputs() 写字符串fprintf() 格式化输出 3. 读取文件fgetc() 读取单个字符fgets() 读取一行fscanf() 格式化读取 4. 关闭文件5. 文件指针控制&#xff1a;fseek() 与 ftell()fse…

Sklearn机器学习第十五天|机器学习算法原理

第3章 机器学习算法原理 3.1 感知机算法 感知机算法&#xff1a;找到一条直线把二分类问题分开 3.1.1 决策函数 3.1.1.1 sign函数 3.1.2 损失函数 3.1.3 目标函数 3.1.4 目标函数优化算法 3.2 线性回归 3.2.1 决策函数 3.2.2 目标函数 3.2.3 目标函数优化问题 3.2 逻辑回归…

【C++图论 并集查找】2492. 两个城市间路径的最小分数|1679

本文涉及知识点 C图论 并集查找&#xff08;并查集) LeetCode2492. 两个城市间路径的最小分数 给你一个正整数 n &#xff0c;表示总共有 n 个城市&#xff0c;城市从 1 到 n 编号。给你一个二维数组 roads &#xff0c;其中 roads[i] [ai, bi, distancei] 表示城市 ai 和 …