前端实现 海浪(波浪)进度条效果(支持自定义长度;调节速度,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.js

    function 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>

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


总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

日元跌破160大关,日本当局何时干预?

KlipC报道&#xff1a;6月26日&#xff0c;日元又跌了&#xff0c;美元兑日元跌破160的整关口&#xff0c;超过了4月日本官员在市场上干预的水平&#xff0c;创1986年来新低。美联储降息的可能性降低&#xff0c;市场预计日元有可能延续当前的弱势。 KlipC分析师David表示&…

克服指标管理痛点,实现数据价值最大化

在当下的企业管理中&#xff0c;由于数据量的激增&#xff0c;管理方式逐渐从基于经验转向基于数据。在此过程中&#xff0c;我们能够通过数据探查业务情况、分析数据&#xff0c;从而获取更优的决策支持数据。这通常通过数据报表或分析平台来实现&#xff0c;对于临时性场景&a…

基于Spring Boot医护人员排班系统

设计技术&#xff1a; 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatisvue 工具&#xff1a;IDEA、Maven、Navicat 主要功能&#xff1a; 医护类型管理 医护人员排班系统的系统管理员可以对医护类型添加修改删除以及查询操作。具体界面…

virtualbox(7.0) ubuntu(22) 和win11共享文件夹

在虚拟机中安装增强功能。在virtualbox中配置 执行命令将用户加入vboxsf组 sudo adduser your_usrname vboxsf 重启ubuntu即可

docker进阶篇

docker进阶篇 (重点) 1、docker run2、docker ps3、docker restart4、docker pull5、docker stop6、docker logs7、docker stats8、docker rm(重点) 9、docker exec10、查看本机镜像docker image11、发布镜像docker commit12、docker save(例如保存为tar给别人用)13、删除镜像1…

Qt样式表及相关案例

一.Qt样式表介绍 Qt样式表是一个可以自定义部件外观的强大机制&#xff0c;样式表的概念、术语、语法均受到HTML的层叠样式表(Cascading Style Sheets,CSS)的启发。 样式表可通过QApplication::setStyleSheet()函数将其设置到整个应用程序上&#xff0c;也可以使用QWidget::se…

c++习题01-ljc的暑期兼职

目录 一&#xff0c;题目描述 二&#xff0c;思路 三&#xff0c;伪代码 四&#xff0c;流程图 五&#xff0c;代码 一&#xff0c;题目描述 二&#xff0c;思路 1&#xff0c;根据题目要求需要声明4个变量&#xff1a;a,b,c,d ;牛奶价格a&#xff0c;活动要求b&…

微信公众号写作时必备的AI提示词(也称为指令或Prompt)

猫头虎 &#x1f42f; 微信公众号写作时必备的AI提示词&#xff08;也称为指令或Prompt&#xff09; &#x1f389; 大家好&#xff0c;我是猫头虎&#xff0c;科技自媒体博主。今天&#xff0c;我们来聊聊如何利用AI提示词&#xff0c;打造出爆款的微信公众号文章。&#x1…

腾讯云对象存储cors错误处理

最近将公司的域名进行了修改&#xff0c;同时将腾讯云的对象存储改成了https&#xff0c;为了安全嘛。然后上传软件包的时候发现上传软件就失败了。 在浏览器中打开该 HTML 文件&#xff0c;单击 Test CORS 发送请求后&#xff0c;出现以下错误&#xff0c;错误提示&#xff1…

《software architecture patterns》学习笔记

了解通用的架构模式并知道什么时候使用它们。 软件架构定义了软件的基本特点和行为。比如&#xff0c;有些软件架构会让软件变得可扩展&#xff0c;而有些软件架构会让软件变得易于修改。 知道每一种软件架构的特点、优缺点是非常有必要的&#xff0c;因为它们能帮助你选择一种…

【银河麒麟】高可用触发服务器异常重启,处理机制详解

1.服务器环境以及配置 【机型】物理机 处理器&#xff1a; Intel 内存&#xff1a; 126G 【内核版本】 4.19.90-25.16.v2101.ky10.x86_64 【银河麒麟操作系统镜像版本】 Kylin-Server-10-SP2-Release-Shenzhen-Metro-x86-Build01-20220619 Kylin-HA-10-SP2-Release-S…

C++之STL(十一)

1、迭代器适配器 2、插入迭代器 #include <iostream> #include <vector> #include <algorithm> #include <list> using namespace std;void showVec(const vector<int>& v) {for (vector<int>::const_iterator it v.begin(); it ! v.…

rk3568 OpenHarmony 串口uart与电脑通讯开发案例

一、需求描述&#xff1a; rk3568开发板运行OpenHarmony4.0&#xff0c;通过开发板上的uart串口与电脑进行通讯&#xff0c;相互收发字符串。 二、案例展示 1、开发环境&#xff1a; &#xff08;1&#xff09;rk3568开发板 &#xff08;2&#xff09;系统&#xff1a;OpenHar…

STM32单片机实现串口IAP升级

一.概述 1.要实现串口IAP升级&#xff0c;首先要编写一个bootloader程序&#xff0c;然后再写支持IAP的app程序&#xff1b; 2.keil下bootloader的程序rom和ram设置 3.app程序要用bin文件 注&#xff1a;本文以STM32H743举例&#xff0c;其他stm32单片机IAP升级原理类似。 …

有哪些方法可以恢复ios15不小心删除的照片?

ios15怎么恢复删除的照片&#xff1f;在手机相册里意外删除了重要的照片&#xff1f;别担心&#xff01;本文将为你介绍如何在iOS 15系统中恢复已删除的照片。无需专业知识&#xff0c;只需要按照以下步骤操作&#xff0c;你就能轻松找回宝贵的回忆。 一、从iCloud云端恢复删除…

easyui的topjui前端框架使用指南

博主今天也是第一次点开easyui的商业搜权页面&#xff0c;之前虽然一直在使用easyui前端框架&#xff08;easyui是我最喜欢的前端ui框架&#xff09;&#xff0c;但是都是使用的免费版。 然后就发现了easyui的开发公司居然基于easyui开发出了一个新的前端框架&#xff0c;于是我…

句法分析概述

第1关&#xff1a;句法分析概述 任务描述 本关任务&#xff1a;通过对句法分析基本概念的学习&#xff0c;完成相应的选择题。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 句法分析的基础概念&#xff1b; 句法分析的数据集和评测方法。 句法分析简介…

Potato(土豆)一款轻量级的开源文本标注工具(二)

示例项目&#xff08;模版&#xff09; Potato 旨在提高数据标注的可复制性&#xff0c;并降低研究人员设置新标注任务的成本。因此&#xff0c;Potato 提供了一系列预定义的示例项目&#xff0c;并欢迎公众向项目中心贡献。如果您使用 Potato 进行了自己的标注工作&#xff0…

【字符串】【双指针】1、仅仅反转字母+2、回文子串+ 3、最长回文子串+4、验证回文串+5、反转字符串中的单词

今天依旧是字符串&#xff01;2道简单&#xff0b;3道中等 1、仅仅反转字母&#xff08;难度&#xff1a;简单&#xff09; 该题对应力扣网址 错误做法 一开始是“原始”思路&#xff0c;交了之后果然不对&#xff0c;错误的思路我也就不解释了。 class Solution { public:…

计算机毕业设计Python+LSTM+Tensorflow股票分析预测 基金分析预测 股票爬虫 大数据毕业设计 深度学习 机器学习 数据可视化 人工智能

基于TensorFlow-LSTM的股票预测系统开题报告 一、研究背景与意义 随着信息技术的飞速发展&#xff0c;股票市场作为现代经济活动的重要组成部分&#xff0c;其价格波动受到广泛关注。投资者们迫切希望通过科学的方法预测股票价格&#xff0c;以优化投资决策&#xff0c;实现利…