由于系统UI风格升级,产品童鞋和UI童鞋总是想要搞点儿事情出来,项目页面上的进度条从直线变成了曲线,哈哈,好吧,那就迎难而上

实现效果:

1.简单搞一搞 CSS , 此处代码有折叠

.process {
width: 110px;
box-sizing: border-box;
margin: 0 auto;
height: 55px;
overflow: hidden;
}
.ring-def {
width: 110px;
height: 55px;
border-radius: 110px 110px 0 0;
border: 2px solid #E5E5E5;
border-bottom: none;
box-sizing: border-box;
}
.ring-color {
width: 110px;
height: 55px;
border-radius: 0 0 110px 110px;
border: 2px solid #ff6200;
border-top: none;
box-sizing: border-box;
transform-origin: top;
transition: 1s;
}
p {
text-align: center;
color: #828282;
}
input,
button {
width: 45px;
height: 30px;
line-height: 30px;
color: #828282;
font-size: 14px;
outline: none;
border: 1px solid #dddddd;
text-align: center;
}

分析一下实现思路:

  • 想要曲线效果,首先就能想到 border-radius 属性

  • 两个大小宽高一致的div,设置不同的边款颜色,一个隐藏,一个显示

  • 动态获取进度条时,隐藏的半圆,通过角度换算,旋转显示对应角度的弧长

搞事情,不多说,上代码

  <div class="process">
<div class="ring-def"></div>
<div class="ring-color" id="ringColor"></div>
</div>
<p>
设置进度条:<input type="number" max="100" min="0" id="procNum"> % <button id="btn" onclick="getProcess()">确定</button>
</p>
<script>
function getProcess() {
// 此处input用户输入 模拟真实请求返回数据
var val = document.getElementById('procNum').value
var tmp = val <= 0 ? 0 : val >= 100 ? 100 : val
document.getElementById('procNum').value = tmp
var deg = Math.floor(tmp / 100 * 180)
document.getElementById('ringColor').style.transform = 'rotate(' + deg + 'deg)'
}
</script>

CSS+JS 实现动态曲线进度条的更多相关文章

  1. JS框架_(JQbar.js)柱状图动态百分比进度条特效

    百度云盘 传送门 密码:q6rt 柱状图动态百分比进度条效果 <html> <head> <title>jqbar.js柱状图动态百分比进度条特效</titl ...

  2. Handler实现线程之间的通信-下载文件动态更新进度条

    1. 原理 每一个线程对应一个消息队列MessageQueue,实现线程之间的通信,可通过Handler对象将数据装进Message中,再将消息加入消息队列,而后线程会依次处理消息队列中的消息. 2. ...

  3. AsyncTask用法解析-下载文件动态更新进度条

    1. 泛型 AysncTask<Params, Progress, Result> Params:启动任务时传入的参数,通过调用asyncTask.execute(param)方法传入. ...

  4. JS -- 异步加载进度条

    今天在博客园问答里面看到博友问道怎么实现Ajax异步加载产生进度条. 很好奇就自己写了一个. 展现效果: 1) 当点击Load的时候,模拟执行异步加载. 浏览器被遮挡. 进度条出现. 实现思路: 1. ...

  5. js页面加载进度条(这个就比较正式了,改改时间就完事儿)

    不废话,直接上代码 思路不难,就是一个animate方法配合随机数 duration内个三秒钟,是自定义的,可以改成页面加载时间,这样就完美了 <!doctype html> <ht ...

  6. 【CSS系列】网页头部进度条方式一

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. html + css + jquery实现简单的进度条实例

    <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta ...

  8. 【css】如何实现环形进度条

    最近团队的童鞋接到了一个有关环形进度条的需求,想要还原一个native的沿环轨迹渐变进度条的效果,看到这个效果的时候,笔者陷入了沉思.. 环形进度条的效果,最先想到的就是使用CSS利用两个半圆的hac ...

  9. HTML5+CSS+JQuery 实现简单的进度条功能

    样式: <style type="text/css"> .processcontainer2{ width:450px; border:1px solid #6C9C2 ...

  10. js页面加载进度条

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. 保姆教程系列:Git 实用命令详解

    !!!是的没错,胖友们,保姆教程系列又更新了!!! @ 目录 前言 1.将本地项目推送到远程仓库 2. Idea Git回退到某个历史版本 3. 修改项目关联远程地址方法 4. Git 修改分支的名称 ...

  2. 零代码零硬件玩转华为云IoT,基于设备联动实时监控设备

    本文分享自华为云社区<一键守护,实时洞察:华为云IoT设备联动,智能感知设备状态变化,精准触发告警通知[零代码零硬件玩转华为云IoT]>,作者:周周的奇妙编程. 前言 在前面我们已经体验过 ...

  3. flutter开发环境的搭建

    下载flutter开发包,有670M左右. github的下载地址:https://github.com/flutter/flutter 或者官方下载地址:https://flutter.dev/do ...

  4. WPF使用事件聚合器,实现任意页面跨页通信

    前言:最近几天有好几个小伙伴玩WPF,遇到不同页面,不知道要怎么传递消息.于是,我今天就来演示一个事件聚合器的玩法,采用prism框架来实现.作为福利,内容附带了主页面打开对话框时候直接通过参数传递消 ...

  5. 004. github使用

    github的使用 GitHub是一个git版本库的托管服务,GitHub是目前全球最大的软件仓库,拥有上班玩的开发者用户,也是软件开发和寻找资源的最佳途径,GitHub不仅可以托管各种git版本参控 ...

  6. 编译安装mysql5.7.20

    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo && \ ...

  7. 查看CentOS版本的方法

    1.以下命令对于Linux发行版是通用的: root@MyMail ~ # uname Linux root@MyMail ~ # uname -r 2.6.18-164.el5 [root@loca ...

  8. Linux signal()函数

    这是在网易云课堂学习Linux下的signal()函数的笔记,课程链接:https://study.163.com/course/courseLearn.htm?courseId=1002913011 ...

  9. Android应用程序启动流程浅析-(三万字长文慎点&Android14)

    在Android桌面Launcher源码浅析中介绍了Android的桌面程序Launcher是如何响应用户点击事件并启动App的,这篇文章继续介绍App在Android系统层是的启动流程. 一.启动流 ...

  10. react props-type

    对于组件来说,props是外部传入的,无法保证组件使用者传入什么格式的数据,简单来说就是组件调用者可能不知道组件封装着需要什么样的数据,如果传入的数据不对,可能会导致程序异常,所以必须要对于props ...