前端实现 海浪(波浪)进度条效果(支持自定义长度;调节速度,2s缓冲结束)
满脑子技术的前端工程师 2024-09-30 09:33:01 阅读 78
实现海浪进度条
文章目录
实现海浪进度条效果图如下(投入使用的版本)背景和过程一、调试和探索过程(下面都会给出来对应代码)二、类似Element-plus的进度条样式1. CSS的样式如下2. HTML结构如下
二、电涌效果的进度条如下1. CSS的样式如下2. HTML的结构如下:3. JavaScript代码如下
三、波浪效果的进度条1. CSS的结构如下:2. HTML的结构如下:
四、海浪效果的进度条(等我空闲就上传代码!!!!)总结
效果图如下(投入使用的版本)
背景和过程
<code>提示:这个功能的开发过程真的是一波三折
自信阶段:
此时我觉得这个动画,实现就还挺简单的,就估1-2天
准备CV阶段: 开始在网上找有没有相同的例子网上给我的答案是:没有这种例子
方案确定阶段:①.使用css样式画出来
;②. 使用动态的图片(大多数解决是这种方案,但是图片的长度变更会有问题)
;③: 使用canvas绘制(如果不是经常使用的话,上手绘制学习成本高)
;④. 自己通过div盒子自己绘制(哈哈哈,这种我直接否定了,感觉跟动态图片的实现方式一样有点cun)
迷茫阶段: 测试了大量例子,发现好像并不是很简单!!oh , my God !!!!!!!!
摸索阶段: 测试大量的进度条案例成功阶段: 经过哥们,断断续续的调试,终于是得到了两个还原度100%的版本
一、调试和探索过程(下面都会给出来对应代码)
类似Element-plus动态进度条的实现效果
常规电涌效果的进度条
常见类似波浪的进度条
最终模拟波浪效果的进度条
可以封装的进度条
二、类似Element-plus的进度条样式
1. CSS的样式如下
<code> <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">code>
<div class="progress-bar">code>
<div class="progress-bar-striped" style="width: 70%;">code>
<div class="icon">1</div>code>
</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>code>
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">code>
<div class="progress-bar">code>
<div class="wave"></div>code>
</div>
</div>
<svg width="0" height="0">code>
<defs>
<clipPath id="waveClipPath" clipPathUnits="objectBoundingBox">code>
<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>code>
</clipPath>
</defs>
</svg>
四、海浪效果的进度条(等我空闲就上传代码!!!)
总结
目前还没有更新完毕,有时间更新后面的真实样式!!!
代码很少!!!
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。