神奇的进度条!水缸进度动画效果怎么实现的?

news2024/11/15 10:58:07

最近看到一个非常有趣的动画效果:水波进度动画,想了一下实现思路,分享给大家~

效果如下

图片

图片

图片

图片

基本组件代码

先把最基础的组件代码样式写出来,其实无非就是四个部分:

1、圆形水缸

2、水波

2、百分比数字

3、进度条

我们先把圆形水缸、百分比数字、进度条画出来,水波待会再画

图片

图片

可以看到初步效果已经出来了!

图片

图片

水波效果

最重点的就是水波,其实这个水波就是个障眼法罢了,我画张图你们就懂了,其实就是一个圆角正方形,一直在旋转和上升下降,让用户有一种水波的视觉感~

图片

图片

所以我们可以画一个圆角正方形,并且让他一直旋转即可

图片

图片

图片

图片

并且我们要让这个水波效果,随着百分比的增加而上升,随着百分比的减少而下降,所以得监听百分比

图片

图片

图片

图片

现在可以发现已经有水波效果了!

图片

图片

但是感觉水溢出来了,所以需要给水缸设置一下溢出隐藏!

图片

图片

最终实现效果:

图片

完整代码

<template>
  <div class="wave-container">
    <!-- 水缸 -->
    <div class="main">
      <!-- 百分比数字 -->
      <div class="main-number">{{ percent }}</div>
      <!-- 水波效果 -->
      <div ref="wave" class="wave"></div>
    </div>
    <!-- 进度条 -->
    <Slider v-model:value="percent" class="percent-bar" :tipFormatter="null" />
  </div>
</template>

<script setup lang="ts">
import { ref, watch } from 'vue';
import { Slider } from 'ant-design-vue';

const percent = ref(0);

const wave = ref<HTMLDivElement | null>(null);

// 监听百分比,计算 top
watch(
  percent,
  v => {
    const waveEle = wave.value;
    if (waveEle) {
      waveEle.style.top = `${200 * (1 - v / 100)}px`;
    }
  },
  {
    immediate: true,
  },
);
</script>

<style scoped lang="less">
.wave-container {
  display: flex;
  flex-direction: column;
  align-items: center;

  .main {
    position: relative;
    width: 200px;
    height: 200px;
    border-radius: 50%;
    background: #fff;
    border: #fff solid 5px;
    display: flex;
    justify-content: center;
    align-items: center;
    // 增加样式隐藏溢出
    overflow: hidden;

    .main-number {
      font-size: 100px;
      z-index: 1;
      user-select: none;
    }
  }

  @keyframes rotateAnimation {
    from {
      transform: rotate(0deg);
    }
    to {
      transform: rotate(360deg);
    }
  }

  .wave {
    position: absolute;
    top: 200px;
    width: 400px;
    height: 400px;
    background: rgb(168, 168, 231);
    border-radius: 40%;
    animation: rotateAnimation 2s linear infinite;
  }

  .percent-bar {
    width: 200px;
    background: #fff;
  }
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1970868.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NRK3301识别语音芯片在智能按摩椅中的应用与体验提升

在健康与舒适日益受到关注的今天&#xff0c;按摩椅作为缓解疲劳、舒缓压力的设备受到了广大消费者的喜爱。然而&#xff0c;传统的按摩椅操作方式往往繁琐且不直观。在这一背景下&#xff0c;NRK3301语音识别芯片的应用为按摩椅带来了新的变革。‌ 一、高识别准确率和快速响应…

智能巡检机器人怎么选?

随着科技的快速发展&#xff0c;巡检机器人在工业、能源、交通和安防等领域的应用越来越广泛。选择合适的巡检机器人不仅能显著提高巡检效率和质量&#xff0c;还能有效减少人力成本和安全风险。那么&#xff0c;如何根据具体需求选择适合的巡检机器人呢&#xff1f; 一、明确应…

PC用串口连接开发板进行通讯的底层原理

标题 PC用串口连接开发板进行通讯的底层原理pc端的命令窗口为什么可以看到字符&#xff1f;为什么按下回车后&#xff0c;就有目录信息的显示&#xff1f; PC用串口连接开发板进行通讯的底层原理 小编我开始往驱动开发方向转了&#xff0c;最近在学b站韦东山老师的驱动开发入门…

NET 定时器 Timer和线程Thread

是否可以更新UI线程的内容 》》》资源占用&#xff1a;‌ 》定时器可以的&#xff0c;不存在跨线程问题 》Thread创建的线程&#xff0c;不能更新UI线程的内容&#xff0c; 存在跨线程 Control.CheckForIllegalCrossThreadCalls false;//默认是True 》》执行方式&#xff…

超有用的数据恢复方法!你一定不要错过!

无论我们当下所使用的是何种设备&#xff0c;例如电脑、U 盘、硬盘、相机、行车记录仪&#xff0c;都难以避免出现误删文件的情况。那么&#xff0c;这些被误删的数据究竟应当通过何种方式找回&#xff1f; 今日&#xff0c;为大家分享若干极为实用的数据恢复方法&#xff0c;望…

THS6011容器版docker使用说明(by why+lqw)

THS6011容器版有分x86和arrch64两种安装包&#xff0c;主要是针对ths节点&#xff0c;本身并没有控制台的安装包&#xff0c;请根据自己的系统的cpu架构进行选择&#xff0c;本次使用的是x86的安装包作为演示。 下图是arrch64的镜像&#xff08;PDMP-4980&#xff09;&#xf…

大模型书籍分享(附PDF)大模型时代:ChatGPT开启通用人工智能浪潮

近期工作中有一些涉及到大模型等的应用&#xff0c;刚好在微信读书上看到了这本 《大模型时代&#xff1a;ChatGPT开启通用人工智能浪潮》&#xff0c; 本月看完了这本书与大家分享下。 ChatGPT火爆全球&#xff0c;但大语言模型&#xff08;Large Language Model&#xff09;…

DeepViT 论文与代码解析

paper&#xff1a;DeepViT: Towards Deeper Vision Transformer official implementation&#xff1a;https://github.com/zhoudaquan/dvit_repo 出发点 尽管浅层ViTs在视觉任务中表现优异&#xff0c;但随着网络深度增加&#xff0c;性能提升变得困难。研究发现&#xff0c…

共享打印机0x0000011b错误解决方法

日打印机故障一直是一个热门话题&#xff0c;特别是共享打印机0x0000011b错误特别头疼&#xff0c;有很多网友经常遇到共享打印机0x0000011b错误。0x0000011b有更新补丁导致的、有访问共享打印机服务异常、有访问共享打印机驱动异常等问题导致的&#xff0c;针对共享打印机0x00…

问题易如反掌?5个常用的AI人工智能助手推荐

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 如今的人工智能技术正以惊人的速度改变着我们的生活方式和工作方式。作为这一变革的关键驱动力&#xff0c;人工智能不仅在科技…

一个方法解决看世界时区 做外贸和跨境电商的必备小工具

一个方法解决看世界时区 做外贸和跨境电商的必备小工具。做过外贸或跨境电商的伙伴们都知道&#xff0c;看世界各地时区是一个比较繁琐的事情。 很多公司都有自己专注的几个地区业务&#xff0c;经常要看业务地区的时间&#xff0c;这样方便和客户沟通。做生意的人都知道&…

uniapp - APP分享到微信,通过h5页面跳转至对应的app页面

目录 项目场景&#xff1a; 效果展示&#xff1a; 解决方案&#xff1a; 第一步&#xff1a; 第二步 &#xff1a; 1、微信跳转APP&#xff1a;wx-open-launch-app 第三步&#xff1a; 总结&#xff1a; 项目场景&#xff1a; uniapp框架开发的app(Android和ios)&…

Zilliz 2025届校园招聘正式启动,寻找向量数据库内核开发工程师

为了解决非结构化数据处理问题&#xff0c;我们构建了向量数据库-Milvus! Milvus 数据库不仅是顶级开源基金会 LF AI&Data 的毕业项目&#xff0c;还曾登上数据库顶会SIGMOD、VLDB&#xff0c;在全球首届向量检索比赛中夺冠。目前&#xff0c;Milvus 项目已获得超过 2.8w s…

算法工程师必知必会的数学基础之线性代数

1. 线性代数 线性代数是机器学习和深度学习中一个非常重要的数学基础。下面我将详细介绍线性代数中的一些基本概念&#xff0c;并使用 Python 的 NumPy 库来演示这些概念的应用。 1.1 向量&#xff08;Vectors&#xff09;与 矩阵&#xff08;Matrices&#xff09; 向量&…

Qt 登录界面

本文代码效果如下&#xff1a; 本文代码&#xff1a; https://download.csdn.net/download/Sakuya__/89607657https://download.csdn.net/download/Sakuya__/89607657 代码之路 LoginTitleBar.h 自定义的透明标题栏 #ifndef LOGINTITLEBAR_H #define LOGINTITLEBAR_H#in…

【书生大模型实战营】基础岛-8G 显存玩转书生大模型 Demo

8G 显存玩转书生大模型 Demo 【书生大模型实战营】基础岛-8G 显存玩转书生大模型 DemoInternLM2-Chat-1.8B 模型的部署代码运行StreamLit部署 InternLM-XComposer2-VL-1.8B 模型的部署InternVL2-2B 模型的部署 【书生大模型实战营】基础岛-8G 显存玩转书生大模型 Demo InternL…

“八股文“在现代编程面试中的角色重塑:助力、阻力还是桥梁?

&#x1f308;所属专栏&#xff1a;【其它】✨作者主页&#xff1a; Mr.Zwq✔️个人简介&#xff1a;一个正在努力学技术的Python领域创作者&#xff0c;擅长爬虫&#xff0c;逆向&#xff0c;全栈方向&#xff0c;专注基础和实战分享&#xff0c;欢迎咨询&#xff01; 您的点…

【全网最全】文心智能体平台介绍和应用

什么是智能体平台&#xff1f; 文心智能体平台&#xff08;Wenxin Intelligent Agent Platform&#xff09;是由百度开发的一个全面集成多种人工智能技术的开放平台&#xff0c;旨在为企业和开发者提供强大的智能化服务和解决方案。支持广大开发者根据自身行业领域、应用场景&…

LoRa无线通讯,让光伏机器人实现无“线”管理

光伏清洁机器人&#xff0c;作为光伏电站运维的新兴关键设备&#xff0c;已跃升为继组件、支架、光伏逆变器之后的第四大核心组件&#xff0c;正逐步成为光伏电站的标准配置。鉴于光伏电站普遍坐落于偏远无人区或地形复杂之地&#xff0c;光伏清洁机器人必须具备远程操控能力、…

Charles怎么修改参数

Charles怎么修改参数 1、再【Structure】下&#xff0c;找到需要抓取的包&#xff0c;鼠标右键&#xff0c;点中断点。 2、在【Proxy】-点击【Breakpoint Settings…】 3、双击设置断点的接口 4、勾选后&#xff0c;点击【OK】。 5、再次刷新&#xff0c;重新发请求&#…