JS实现百分比进度球

简介: JS实现百分比进度球
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" style="display: none;">
    <symbol id="wave">
      <path d="M420,20c21.5-0.4,38.8-2.5,51.1-4.5c13.4-2.2,26.5-5.2,27.3-5.4C514,6.5,518,4.7,528.5,2.7c7.1-1.3,17.9-2.8,31.5-2.7c0,0,0,0,0,0v20H420z">
      </path>
      <path d="M420,20c-21.5-0.4-38.8-2.5-51.1-4.5c-13.4-2.2-26.5-5.2-27.3-5.4C326,6.5,322,4.7,311.5,2.7C304.3,1.4,293.6-0.1,280,0c0,0,0,0,0,0v20H420z">
      </path>
      <path d="M140,20c21.5-0.4,38.8-2.5,51.1-4.5c13.4-2.2,26.5-5.2,27.3-5.4C234,6.5,238,4.7,248.5,2.7c7.1-1.3,17.9-2.8,31.5-2.7c0,0,0,0,0,0v20H140z">
      </path>
      <path d="M140,20c-21.5-0.4-38.8-2.5-51.1-4.5c-13.4-2.2-26.5-5.2-27.3-5.4C46,6.5,42,4.7,31.5,2.7C24.3,1.4,13.6-0.1,0,0c0,0,0,0,0,0l0,20H140z">
      </path>
    </symbol>
  </svg>
<div class="box">
    <div class="percent">
        <div class="percentNum" id="count">0</div>
        <div class="percentB">%</div>
    </div>
    <div id="water" class="water">
        <svg viewBox="0 0 560 20" class="water_wave water_wave_back">
        <use xlink:href="#wave"></use>
      </svg>
        <svg viewBox="0 0 560 20" class="water_wave water_wave_front">
        <use xlink:href="#wave"></use>
      </svg>
    </div>
</div>
*,*:before,*:after {
  box-sizing:border-box;
  outline:none;
}
body {
  background:#020438;
  font:14px/1 'Open Sans',helvetica,sans-serif;
  -webkit-font-smoothing:antialiased;
}
.box {
  height:280px;
  width:280px;
  position:absolute;
  top:50%;
  left:50%;
  -webkit-transform:translate(-50%,-50%);
  transform:translate(-50%,-50%);
  background:#020438;
  border-radius:100%;
  overflow:hidden;
}
.box .percent {
  position:absolute;
  left:0;
  top:0;
  z-index:3;
  width:100%;
  height:100%;
  display:flex;
  display:-webkit-flex;
  align-items:center;
  justify-content:center;
  color:#fff;
  font-size:64px;
}
.box .water {
  position:absolute;
  left:0;
  top:0;
  z-index:2;
  width:100%;
  height:100%;
  -webkit-transform:translate(0,100%);
  transform:translate(0,100%);
  background:#4D6DE3;
  transition:all .3s;
}
.box .water_wave {
  width:200%;
  position:absolute;
  bottom:100%;
}
.box .water_wave_back {
  right:0;
  fill:#C7EEFF;
  -webkit-animation:wave-back 1.4s infinite linear;
  animation:wave-back 1.4s infinite linear;
}
.box .water_wave_front {
  left:0;
  fill:#4D6DE3;
  margin-bottom:-1px;
  -webkit-animation:wave-front .7s infinite linear;
  animation:wave-front .7s infinite linear;
}
@-webkit-keyframes wave-front {
  100% {
  -webkit-transform:translate(-50%,0);
  transform:translate(-50%,0);
}
}@keyframes wave-front {
  100% {
  -webkit-transform:translate(-50%,0);
  transform:translate(-50%,0);
}
}@-webkit-keyframes wave-back {
  100% {
  -webkit-transform:translate(50%,0);
  transform:translate(50%,0);
}
}@keyframes wave-back {
  100% {
  -webkit-transform:translate(50%,0);
  transform:translate(50%,0);
}
}
var cnt = document.getElementById("count");
var water = document.getElementById("water");
var percent = cnt.innerText;
var interval;
interval = setInterval(function() {
    percent++;
    cnt.innerHTML = percent;
    water.style.transform = 'translate(0' + ',' + (100 - percent) + '%)';
    if (percent == 100) {
        clearInterval(interval);
    }
}, 60);
目录
相关文章
|
5月前
|
存储 资源调度 前端开发
JavaScript 使用axios库发送 post请求给后端, 给定base64格式的字符串数据和一些其他参数, 使用表单方式提交, 并使用onUploadProgress显示进度
使用 Axios 发送包含 Base64 数据和其他参数的 POST 请求时,可以通过 `onUploadProgress` 监听上传进度。由于整个请求体被视为一个单元,所以进度可能不够精确,但可以模拟进度反馈。前端示例代码展示如何创建一个包含 Base64 图片数据和额外参数的 `FormData` 对象,并在上传时更新进度条。后端使用如 Express 和 Multer 可处理 Base64 数据。注意,实际进度可能不如文件上传精确,显示简单加载状态可能更合适。
|
7月前
|
移动开发 前端开发 JavaScript
H5+CSS3+JS逆向前置——5、DIV+CSS百分比布局
H5+CSS3+JS逆向前置——5、DIV+CSS百分比布局
70 0
|
JavaScript
js:Axios通过onUploadProgress获取上传文件进度和上传速度
js:Axios通过onUploadProgress获取上传文件进度和上传速度
759 0
|
监控 JavaScript 前端开发
3分钟教你用原生js实现具有进度监听的文件上传预览组件
本文主要介绍如何使用原生js,通过面向对象的方式实现一个文件上传预览的组件,该组件利用FileReader来实现文件在前端的解析,预览,读取进度等功能,并对外暴露相应api来实现用户自定义的需求,比如文件上传,进度监听,自定义样式,读取成功回调等。
378 0
|
JavaScript 数据可视化 Java
spring boot 用js实现上传文件(包含其他字段)显示进度
spring boot 用js实现上传文件(包含其他字段)显示进度
257 0
spring boot 用js实现上传文件(包含其他字段)显示进度
|
28天前
|
JavaScript 前端开发
JavaScript中的原型 保姆级文章一文搞懂
本文详细解析了JavaScript中的原型概念,从构造函数、原型对象、`__proto__`属性、`constructor`属性到原型链,层层递进地解释了JavaScript如何通过原型实现继承机制。适合初学者深入理解JS面向对象编程的核心原理。
25 1
JavaScript中的原型 保姆级文章一文搞懂
|
5月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
103 2
|
24天前
JS+CSS3文章内容背景黑白切换源码
JS+CSS3文章内容背景黑白切换源码是一款基于JS+CSS3制作的简单网页文章文字内容背景颜色黑白切换效果。
17 0
|
5月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
146 4