前端实现 海浪(波浪)进度条效果(支持自定义长度;调节速度,2s缓冲结束)

实现海浪进度条


文章目录

  • 实现海浪进度条
  • 效果图如下(投入使用的版本)
  • 背景和过程
  • 一、调试和探索过程(下面都会给出来对应代码)
  • 二、类似Element-plus的进度条样式
    • 1. CSS的样式如下
    • 2. HTML结构如下
  • 二、电涌效果的进度条如下
    • 1. CSS的样式如下
    • 2. HTML的结构如下:
    • 3. JavaScript代码如下
  • 三、波浪效果的进度条
    • 1. CSS的结构如下:
    • 2. HTML的结构如下:
  • 四、海浪效果的进度条(等我空闲就上传代码!!!!)
  • 总结


效果图如下(投入使用的版本)

效果图如下

背景和过程

提示:这个功能的开发过程真的是一波三折

  1. 自信阶段: 此时我觉得这个动画,实现就还挺简单的,就估1-2天
  2. 准备CV阶段: 开始在网上找有没有相同的例子网上给我的答案是:没有这种例子
  3. 方案确定阶段: ①.使用css样式画出来 ; ②. 使用动态的图片(大多数解决是这种方案,但是图片的长度变更会有问题) ; ③: 使用canvas绘制(如果不是经常使用的话,上手绘制学习成本高) ; ④. 自己通过div盒子自己绘制(哈哈哈,这种我直接否定了,感觉跟动态图片的实现方式一样有点cun)
  4. 迷茫阶段: 测试了大量例子,发现好像并不是很简单!! oh , my God !!!!!!!!
  5. 摸索阶段: 测试大量的进度条案例
  6. 成功阶段: 经过哥们,断断续续的调试,终于是得到了两个还原度100%的版本

一、调试和探索过程(下面都会给出来对应代码)

  1. 类似Element-plus动态进度条的实现效果

请添加图片描述

  1. 常规电涌效果的进度条

请添加图片描述
在这里插入图片描述

  1. 常见类似波浪的进度条

在这里插入图片描述
在这里插入图片描述

最终模拟波浪效果的进度条

在这里插入图片描述

可以封装的进度条

在这里插入图片描述

二、类似Element-plus的进度条样式

1. CSS的样式如下

    <style>/* styles.css */body {display: flex;justify-content: center;align-items: center;height: 100vh;background-color: #f0f0f0;margin: 0;}.progress-bar-container {width: 80%;max-width: 600px;}.progress-bar {background-color: #bcbdc0;border-radius: 10px;overflow: hidden;position: relative;height: 30px;}.progress-bar-striped {height: 100%;background: linear-gradient(45deg,rgba(247, 59, 59, 0.15) 25%,transparent 25%,transparent 50%,rgba(157, 15, 15, 0.15) 50%,rgba(71, 7, 7, 0.15) 75%,transparent 75%,transparent);background-size: 1rem 1rem;position: relative;animation: progress-bar-stripes 1s linear infinite;}.icon{position: absolute;height: 100%;line-height: 200%;right: 0px;border-radius: 100%;background-color: aquamarine;}@keyframes progress-bar-stripes {from {background-position: 3rem 0;}to {background-position: 0 0;}}</style>

2. HTML结构如下

    <div class="progress-bar-container"><div class="progress-bar"><div class="progress-bar-striped" style="width: 70%;"><div class="icon">1</div></div></div></div>

二、电涌效果的进度条如下

1. CSS的样式如下

    <style>/* styles.css */body {display: flex;justify-content: center;align-items: center;height: 100vh;background-color: #f0f0f0;margin: 0;}.progress-bar {position: relative;background-color: #e0e0e0;border-radius: 10px;overflow: hidden;height: 30px;min-width: 200px;/* Minimum width */width: auto;/* Automatically adjust width */}.progress-bar-inner {height: 100%;background-size: 1rem 1rem;animation: progress-bar-stripes 1s linear infinite;}@keyframes progress-bar-stripes {from {background-position: 0 0;}to {background-position: 200px 0;}}.progress-icon {position: absolute;top: 50%;left: -10px;transform: translate(0, -50%);font-size: 20px;display: flex;align-items: center;}</style>

2. HTML的结构如下:

   <div id="progress-bar-container"></div>

3. JavaScript代码如下

    // script.jsfunction createProgressBar(containerId, percentage, options = {}) {const container = document.getElementById(containerId);const defaultOptions = {gradientColors: ['#6a11cb', '#2575fc'],icon: '🔥',};const settings = { ...defaultOptions, ...options };const progressBar = document.createElement('div');progressBar.className = 'progress-bar';const progressBarInner = document.createElement('div');progressBarInner.className = 'progress-bar-inner';progressBarInner.style.width = `${percentage}%`;progressBarInner.style.background = `linear-gradient(to right, ${settings.gradientColors.join(', ')})`;const progressIcon = document.createElement('div');progressIcon.className = 'progress-icon';progressIcon.innerHTML = settings.icon;progressIcon.style.left = `${percentage}%`;progressBar.appendChild(progressBarInner);progressBar.appendChild(progressIcon);container.innerHTML = '';container.appendChild(progressBar);}createProgressBar('progress-bar-container', 95);

三、波浪效果的进度条

1. CSS的结构如下:

    <style>body {display: flex;justify-content: center;align-items: center;height: 100vh;margin: 0;background: #f0f0f0;}.progress-container {width: 80%;height: 50px;background: #e0e0e0;border-radius: 25px;overflow: hidden;position: relative;}.progress-bar {width: 100%;height: 100%;position: relative;overflow: hidden;}.wave {position: absolute;top: 0;left: 0;width: 200%;height: 100%;background: linear-gradient(90deg, #0099ff, #00ccff);animation: wave 4s infinite linear;clip-path: url(#waveClipPath);}@keyframes wave {0% {transform: translateX(0);}100% {transform: translateX(-50%);}}</style>

2. HTML的结构如下:

<div class="progress-container"><div class="progress-bar"><div class="wave"></div></div></div><svg width="0" height="0"><defs><clipPath id="waveClipPath" clipPathUnits="objectBoundingBox"><path d="M0,0.5 C0.2,0.8 0.4,0.2 0.6,0.5 C0.8,0.8 1,0.2 1,0.5 L1,1 L0,1 Z"></path></clipPath></defs></svg>

四、海浪效果的进度条(等我空闲就上传代码!!!)


总结

目前还没有更新完毕,有时间更新后面的真实样式!!!
代码很少!!!

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

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

相关文章

推荐两款电脑文件处理工具,强大到你不舍得卸载

EasyFileCount EasyFileCount是一款基于Java开发的多功能文件管理工具&#xff0c;旨在帮助用户更轻松地管理和优化他们的文件存储。以下是EasyFileCount的主要功能和特点&#xff1a; 查看文件夹大小&#xff1a;用户可以快速统计和查看文件夹的总大小&#xff0c;实时显示各…

40.设计HOOK引擎的好处

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 上一个内容&#xff1a;39.右键弹出菜单管理游戏列表 以 39.右键弹出菜单管理游戏列表 它的代码为基础进行修改 效果图&#xff1a; 实现步骤&#xff1a; 首…

【海思Hi3403V100】多目拼接相机套板硬件规划方案

海思Hi3403V100 是专业超高清智能网络摄像头 SoC。该芯片最高支持四路 sensor 输入&#xff0c;支持最高 4K60fps 的 ISP 图像处理能力&#xff0c;支持 3F 、WDR、多级降噪、六轴防抖、硬件拼接、多光谱融合等多种传统图像增强和处理算法&#xff0c;支持通过AI 算法对输入图像…

视觉灵感的探索和分享平台

做设计没灵感&#xff1f;大脑一片空白&#xff1f;灵感是创作的源泉&#xff0c;也是作品的灵魂所在。工作中缺少灵感&#xff0c;这是每个设计师都会经历的苦恼&#xff0c;那当我们灵感匮乏的时候&#xff0c;该怎么办呢&#xff1f;别急&#xff0c;即时设计、SurfCG、Lapa…

基于sivaco设计仿真PT型IGBT和NPT型IGBT结构

本项目基于使用仿真软件SIVACO来仿真研究PT型和NPT型的IGBT结构特点&#xff0c;并且通过仿真研究对于不同的掺杂浓度、沟道宽度等对器件的特性产生不同的影响。 资料获取到咸&#x1f41f;&#xff1a;xy591215295250 \\\或者联系wechat 号&#xff1a;comprehensivable &…

HTML(15)——盒子模型

盒子模型组成 内容区域 -width&height内边距-padding &#xff08;出现在内容与盒子边缘之间&#xff09;边框线-border外边距-margin &#xff08;出现在盒子外面&#xff09; div { width: 200px; height: 200px; background-color: rgb(85, 226, 193); padding: 20px; …

未来一周比特币价格及数字货币市场预测

荷月的比特币市场就像过山车一样&#xff0c;仅仅六月下旬就跌去-12%&#xff0c;本周更是暴跌-6%&#xff0c;至 58,378美元。在这种市场表现&#xff0c;应有的踩踏如期而至。德国政府今日宣布再出售750 比特币的行为继续打击多头&#xff0c;但是小编认为这恰恰预示着市场可…

【Linux进阶】基础IO函数详解

1.函数open和openat 调用open或openat函数可以打开或创建一个文件。 #include <fcntl.h> int open(const char *path, int ofag, ... /* mode_t mode */);int openat (int fd, const char *path, int oflag, ... /* mode_t mode */); 我们将最后一个参数写为...&#x…

昇思25天学习打卡营第4天|数据变换 Transforms

昨天看到数据集&#xff0c;今天继续。 数据变换 众所周知&#xff0c;我们的原始数据基本不能直接丢进模型里面&#xff0c;需要作一定的操作才可以进行训练。 所以&#xff0c; mindspore为我们提供了一系列的数据变换手段。 针对图 调整像素的大小 ** Rescale **归一化 …

智慧会议会务解决方案

会务不仅仅是简单的活动策划&#xff0c;更是全方位的项目管理过程。然而&#xff0c;目前的会务领域仍存在着一些问题&#xff0c;直接影响着会务的效果和质量&#xff0c;如&#xff1a; 会议前期策划时间长&#xff0c;会务人员需要收集参会人员资料&#xff0c;准备会议材…

[C++深入] --- 类成员初始化的三种方式

1 类成员初始化的三种方式 1.1 三种方式介绍 初始化方式一:初始化列表 class A {public:int a; // 初始化列表A(int a_):a(a_){} };初始化列表是在构造函数冒号后对成员进行初始化,这是在成员被分配内存的同时进行的初始化操作。这样避免了成员变量先被默认构造然后再赋值…

突然!某大客户核心凌晨突然崩溃....

这几天实在太忙&#xff0c;刚弄完文档。业务线的同事就找到我&#xff0c;说一个银行客户的核心系统昨晚出了故障&#xff0c;还没找到原因&#xff0c;希望能帮忙分析下。 从提供的信息来看是业务跑任务报错&#xff0c;遇到了Oracle-00600和ora-07445 错误。 Doing block re…

机器学习-数据预处理-聚类-回归-分类-单车数据集

机器学习-数据预处理-聚类-回归-分类-单车数据集 前言一、数据预处理1. 导入数据集2. 数据预处理3. 处理缺失值4. 生成特征用于后续进一步的分析 二、数据分布可视化1. 骑行时长分布2. 起始站和终点站分布可视化3. 高峰期与非高峰期骑行频次分布 三、聚类分析1. K-means聚类 四…

GPU和CPU的架构分别是怎样的,有什么本质区别?GPU及CPU的架构在AI上的不同,和他们的技术体系区别

GPU 和 CPU 的架构及其在 AI 上的不同 引言 CPU&#xff08;中央处理器&#xff09;和 GPU&#xff08;图形处理单元&#xff09;是计算机系统中最重要的两种处理器。它们各自的架构设计和技术体系决定了其在不同应用领域中的性能和效率。本文将详细分析 CPU 和 GPU 的架构&a…

【代码随想录算法训练营第五十一天|115.不同的子序列、583. 两个字符串的删除操作、72.编辑距离】

文章目录 115.不同的子序列[583. 两个字符串的删除操作](https://leetcode.cn/problems/delete-operation-for-two-strings/description/)72.编辑距离 115.不同的子序列 dp数组表示s和t中前i-1和j-1项中s中出现过的t的次数&#xff0c;递推公式中当选择到s的第i-1的元素和t[j-…

java.io.Closeable接口介绍

java.io.Closeable 是 Java 标准库中的一个接口,位于 java.io 包中。它用于表示可以关闭的资源,例如文件流、网络连接等。实现了 Closeable 接口的类可以通过调用 close() 方法来释放资源。这对于确保资源不被泄漏非常重要。 使用 Closeable 接口主要是为了确保在使用完某些…

雅思词汇及发音积累 2024.6.27

monument /ˈmɒnjumənt/ n.纪念碑&#xff0c;纪念馆&#xff0c;纪念物&#xff1b;遗址&#xff0c;名胜古迹&#xff1b;典范&#xff1b;塑像&#xff0c;墓碑&#xff1b;有永久价值的作品 描述人的外表、衣着 gender 性别 medium build 中等身材 average height 不高不…

elasticsearch运维系列_用户及角色权限相关SQL及脚本整理

这篇文章介绍ES运维过程中一些常用查询权限和角色的命令和脚本&#xff0c;以及如何查询某个索引可被系统中哪些用户访问。 Part1 查询用户及权限 1 查询所有用户 首先&#xff0c;获取所有用户的列表&#xff1a; -- 命令如下 curl -u elastic:esuser -X GET "http:/…

git rebase的使用

没有排版&#xff0c;但是干货 因为项目要求&#xff0c;所以使用rebase指令 我使用的是rebase 的分支变基的功能 情景描述&#xff1a; 一共有两个分支&#xff1a;master owner 我在owner分枝上开发&#xff0c;有好多次commit master上也有同事在正常commit&#xff0c; …

Vue2 - 首页登录实现随机验证码组件的封装与实现详解(详细的注释及常见问题汇总)

在网站首页等登录时,随机验证码在现代网络应用中扮演着重要的安全角色。为了帮助开发者轻松集成和使用随机验证码功能,本文将介绍如何利用 Vue.js 2 封装一个简单而功能强大的随机验证码组件。让你能够快速理解并应用这一组件到你的项目中。 一、解决方案 本文提供了完美便捷…