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

news2024/10/7 14:24:45

实现海浪进度条


文章目录

  • 实现海浪进度条
  • 效果图如下(投入使用的版本)
  • 背景和过程
  • 一、调试和探索过程(下面都会给出来对应代码)
  • 二、类似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>

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


总结

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

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

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

相关文章

C# 异步编程详解(Task,async/await)

文章目录 1.什么是异步2.Task 产生背景3.Thread(线程) 和 Task(异步)的区别3.1 几个名词3.2 Thread 与 Task 的区别 4.Task API4.1 创建和启动任务4.2 Task 等待、延续和组合4.3 task.Result4.4 Task.Delay() 和 Thread.Sleep() 区别 5.CancellationToken 和 CancellationToken…

基于模型蒸馏的模型加速方案总结

1.简介 1.1目的 在过去的一段时间里&#xff0c;对基于模型蒸馏技术的模型加速方案的方法在多个数据集上进行了一系列的实验。所谓的模型蒸馏技术&#xff0c;简单的来说就是利用一个设计简单的小网络去学习一个设计比较复杂的大网络。特别的有&#xff0c;本次实验针对每一个…

计算机图形学入门18:阴影映射

1.前言 前面几篇关于光栅化的文章中介绍了如何计算物体表面的光照&#xff0c;但是着色并不会进行阴影的计算&#xff0c;阴影需要单独进行处理&#xff0c;目前最常用的阴影计算技术之一就是Shadow Mapping技术&#xff0c;也就是俗称的阴影映射技术。 2.阴影映射 Shadow Map…

压缩pdf文件大小的方法,如何压缩pdf格式的大小

pdf太大怎么压缩&#xff1f;当你需要通过电子邮件发送一个PDF文件&#xff0c;却发现文件太大无法成功发出时&#xff0c;这些情况下&#xff0c;我们都需要找到一种方法来压缩PDF文件&#xff0c;以便更便捷地进行分享和传输。PDF文件的大小通常与其中包含的图片、图形和文本…

【智能算法应用】麻雀搜索算法在物流配送中心选址的应用(无待选配送中心)

目录 1.算法原理2.数学模型3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】麻雀搜索算法&#xff08;SSA&#xff09;原理及实现 2.数学模型 模型假设 待定物流配送中心的库存总能满足需求点的需求不考虑从工厂到待定物流配送中心的运输成本不考虑选定区域内待确定…

openinstall拥抱鸿蒙生态,SDK全面适配HarmonyOS NEXT

作为国内领先的App渠道统计与深度链接服务商&#xff0c;openinstall持续推动鸿蒙生态建设&#xff0c;近日正式发布openinstall HarmonyOS SDK&#xff0c;并成功入驻鸿蒙生态伙伴SDK专区&#xff0c;成为华为鸿蒙生态的合作伙伴&#xff0c;为鸿蒙应用开发者带来安全合规、高…

可用的搜索引擎

presearchhttps://presearch.com/yandexhttps://ya.ru

MySQL简介:开源数据库的基石(一)

目录 引言&#xff1a;数据库领域的革新者 一、MySQL的发展历程&#xff1a;从开源先锋到行业领袖 二、MySQL的核心特性&#xff1a;性能、安全与灵活性并重 三、MySQL的应用场景&#xff1a;从Web开发到企业级应用的全面覆盖 四、MySQL在开源数据库中的地位&#xff1a;开…

从爬取到分析:Faraday爬取Amazon音频后的数据处理

什么是Faraday&#xff1f; Faraday是一个简单、灵活的高级爬虫框架&#xff0c;支持多种编程语言。它提供了一套丰富的API&#xff0c;允许开发者快速构建复杂的爬虫应用。Faraday的主要特点包括&#xff1a; 模块化设计&#xff1a;易于扩展和自定义。多语言支持&#xff1…

如何寻找强势货币和弱势货币?

外汇交易的独特之处在于&#xff0c;它融合了两种货币的价值&#xff0c;其中一种货币的价值通过另一种货币来体现。举例来说&#xff0c;USDJPY外汇反映了美元与日元之间的价值关系&#xff0c;而EURUSD则代表了欧元与美元的价值对比。 通过开仓操作&#xff0c;我们预测一种…

ai assistant 是所有编程助手中最出色的一款 ?

ai assistant激活成功后&#xff0c;如图 ai assistant渠道&#xff1a;https://web.52shizhan.cn/activity/ai-assistant 在去年五月份的 Google I/O 2023 上&#xff0c;Google 为 Android Studio 推出了 Studio Bot 功能&#xff0c;使用了谷歌编码基础模型 Codey,Codey 是…

nacos漏洞汇总

1 nacos介绍 1.1 nacos是啥 Alibaba Nacos是阿里巴巴推出来的一个新开源项目&#xff0c;是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。致力于帮助发现、配置和管理微服务。Nacos提供了一组简单易用的特性集&#xff0c;可以快速实现动态服务发现、服…

【Java Web】Vite构建前端目录结构

目录 一、Vite概述 二、Vite构建Vue3工程化项目 三、ViteVue3项目目录结构 四、ViteVue3项目组件&#xff08;SFC入门&#xff09; 五、ViteVue3样式导入方式 六、ViteVue3响应式数据和setup语法糖 一、Vite概述 Vite是一种新型前端构建工具,能够显著提升前端开发体验;Vite结合…

PVE 8.2.2安装OpenWrt 23.05.3

1,下载官方openwrt 23.5.3镜像并解压 2&#xff0c;进入pve上传镜像 复制这段文字之后需要使用 创建虚拟机 删除磁盘 安装完毕后 shell 运行 qm importdisk 100 /var/lib/vz/template/iso/openwrt-23.05.3-x86-64-generic-ext4-combined-efi.img local-lvm 其中100是虚拟…

音频处理3_频率分贝

1. 频率分类 频率 (Frequency): 指声波振动的速度,通常以赫兹(Hz)为单位。频率决定了声音的高低,即音高。 高低频:高频声音听起来尖锐或高亢,而低频声音则沉闷或低沉。 听觉范围: 人类通常是20 Hz到20,000 Hz(20 kHz)。在这个范围内,声音的频率越高,听到的音调就越高…

基于ssh框架的个人博客源码

基于ssh的个人博客源码&#xff0c;页面清爽简洁&#xff0c;原先有部分bug,运行不了&#xff0c;现已修复 1.博客首页 &#xff08;本地访问地址 :localhost:8080/Blog/index/index&#xff09; 2.关于我 3.慢生活 4.留言板 5.我的相册 微信扫码下载源码

科林Linux7_网络爬虫

一、爬虫 网络资源的下载工具&#xff0c;工作与万维网环境&#xff0c;持续获取网页网站中的网络信息。可持续的数据采集机器人 1、搜索引擎技术使用爬虫 2、数据分析、数据挖掘领域&#xff0c;需要爬虫进行数据准备 3、数据批处理、采集&#xff0c;大量获取某些网站中的…

测试用例设计方法-判定表法

一、简介 测试用例设计的重要性和挑战 在软件开发过程中&#xff0c;测试用例的设计是确保软件质量的关键步骤之一。测试用例是描述如何验证软件功能是否按照预期工作的详细指导。它们不仅帮助发现潜在的缺陷和问题&#xff0c;还能确保软件在不同情况下的稳定性和可靠性。以下…

redis集群简单介绍及其搭建过程

Redis集群 1、哨兵模式 哨兵可以有多个&#xff0c;从服务器也可以有多个&#xff0c;从服务器也可以有多个&#xff0c;在Redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态&#xff0c;如果master节点异常&#xff0c;则会实现主从切换&#x…

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

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