jQuery实现html可联动的百分比进度条


Posted in jQuery onMarch 26, 2020

最近需要一个HTML可以联动的百分比进度条,网上找了一下没有,自己手动实现了一个。

需要解决的问题,AB两个进度条需要按照百分比A+B=100%,A进度条可以拖动,B进度条联动,并且有进度颜色的变化。实现功能如下:

HTML代码:

<div class="percentage-container" >
  <div class="a-percentage" data-x='30'>
   <div class="a-percentage-bar"></div>
  </div>
 <div class="b-percentage" data-x='70'>
   <div class="b-percentage-bar"></div>
  </div>
</div>

CSS代码:

.percentage-container {
 margin: 20px auto;
 width: 600px;
 text-align: center;
}
 
.percentage-container .a-percentage {
 margin: 0;
 width: 400px;
 cursor:pointer;
}
 
.a-percentage {
 float:left;
 padding: 2px;
 background: rgba(0, 0, 0, 0.25);
 border-radius: 6px;
 -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.25), 0 1px rgba(255, 255, 255, 0.08);
 box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.25), 0 1px rgba(255, 255, 255, 0.08);
}
 
.a-percentage-bar {
 position: relative;
 height: 16px;
 border-radius: 4px;
 -webkit-transition: 0.2s linear;
 -moz-transition: 0.2s linear;
 -o-transition: 0.2s linear;
 transition: 0.2s linear;
 -webkit-transition-property: width, background-color;
 -moz-transition-property: width, background-color;
 -o-transition-property: width, background-color;
 transition-property: width, background-color;
 -webkit-box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.25), inset 0 1px rgba(255, 255, 255, 0.1);
 box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.25), inset 0 1px rgba(255, 255, 255, 0.1);
 background: url("img/stripes.png") 0 0 repeat;
 background-color: #FF5400;
}
 
.percentage-container .b-percentage {
 margin: 0;
 width: 400px;
 cursor:pointer;
}
 
.b-percentage {
 float:left;
 padding: 2px;
 background: rgba(0, 0, 0, 0.25);
 border-radius: 6px;
 -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.25), 0 1px rgba(255, 255, 255, 0.08);
 box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.25), 0 1px rgba(255, 255, 255, 0.08);
}
 
.b-percentage-bar {
 position: relative;
 height: 16px;
 border-radius: 4px;
 -webkit-transition: 0.2s linear;
 -moz-transition: 0.2s linear;
 -o-transition: 0.2s linear;
 transition: 0.2s linear;
 -webkit-transition-property: width, background-color;
 -moz-transition-property: width, background-color;
 -o-transition-property: width, background-color;
 transition-property: width, background-color;
 -webkit-box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.25), inset 0 1px rgba(255, 255, 255, 0.1);
 box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.25), inset 0 1px rgba(255, 255, 255, 0.1);
 background: url("img/stripes.png") 0 0 repeat;
 background-color: #FF5400;
}

JS代码:

$(document).ready(function (){
 var w = $('.a-percentage').width();
 var pos_x = $('.a-percentage').offset().left;
 var inti_x = $('.a-percentage').attr('data-x')*4;
 setProgressAndColor(inti_x, w);
 
 $('.a-percentage').click(function(e) { 
 var x = e.originalEvent.x || e.originalEvent.layerX || 0; 
 x = x - pos_x;
 if(x > 0 && x < w){
  setProgressAndColor(x, w);
 }
 });
});

function setProgressAndColor(p, width){
 $('.a-percentage-bar').width(p)
 $('.a-percentage-bar').css('background-color',calcColor(p));
 var per = Math.floor(p/4);
 $('.a-percentage-bar').attr('data-x',per);
 
 $('.b-percentage-bar').width(width-p)
 $('.b-percentage-bar').css('background-color',calcColor(width-p));
 per = 100-per;
 $('.b-percentage-bar').attr('data-x', per);
}

function calcColor(x){
 var R = 255
 var G = 15;
 var tmp = Math.floor(G+x);//取整保证RGB值的准确
 if(tmp <= 255){
 return 'rgb(255,'+tmp+',15)'
 } else {
 R = (R-(tmp-255));
 return 'rgb('+R+',255,15)'
 }
}

用了简单JQuery做支撑,需要引入JQuery看效果。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
纯jQuery实现前端分页功能
Mar 23 jQuery
jquery仿京东商品放大浏览页面
Jun 06 jQuery
jQuery图片缩放插件smartZoom使用实例详解
Aug 25 jQuery
认识jQuery的Promise的具体使用方法
Oct 10 jQuery
jQuery除指定区域外点击任何地方隐藏DIV功能
Nov 13 jQuery
基于jquery trigger函数无法触发a标签的两种解决方法
Jan 06 jQuery
jquery radio 动态控制选中失效问题的解决方法
Feb 28 jQuery
jquery 动态遍历select 赋值的实例
Sep 12 jQuery
jQuery实现点击图标div循环放大缩小功能
Sep 30 jQuery
Jquery获取radio选中值实例总结
Jan 17 jQuery
jQuery实现的点击显示隐藏下拉菜单功能完整示例
May 17 jQuery
jQuery实现简单弹幕制作
Dec 10 jQuery
jquery css实现流程进度条
Mar 26 #jQuery
jquery实现上传文件进度条
Mar 26 #jQuery
jquery实现进度条状态展示
Mar 26 #jQuery
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
Mar 20 #jQuery
jQuery实现点击滚动到指定元素上的方法分析
Mar 19 #jQuery
jQuery实现颜色打字机的完整代码
Mar 19 #jQuery
jQuery使用ajax传递json对象到服务端及contentType的用法示例
Mar 12 #jQuery
You might like
CPU步进是什么意思?i3-9100F B0步进和U0步进区别知识科普
2020/03/17 数码科技
php中长文章分页显示实现代码
2012/09/29 PHP
php数组中删除元素之重新索引的方法
2014/09/16 PHP
Yii2实现同时搜索多个字段的方法
2016/08/10 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
2019/09/16 PHP
Js之软键盘实现(js源码)
2007/01/30 Javascript
Javascript非构造函数的继承
2015/04/27 Javascript
javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)
2015/11/29 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
BootStrap下jQuery自动完成的样式调整
2016/05/30 Javascript
jQuery获取多种input值的简单实现方法
2016/06/20 Javascript
深入理解Node module模块
2018/03/26 Javascript
Vue 去除路径中的#号
2018/04/19 Javascript
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
2018/05/14 Javascript
移动端图片上传旋转、压缩问题的方法
2018/10/16 Javascript
vue模仿网易云音乐的单页面应用
2019/04/24 Javascript
layui 实现表单和文件上传一起传到后台的例子
2019/09/16 Javascript
layui table 获取分页 limit的方法
2019/09/20 Javascript
小程序实现列表展开收起效果
2020/07/29 Javascript
[51:20]完美世界DOTA2联赛PWL S2 Magma vs PXG 第一场 11.28
2020/12/01 DOTA
python实现的正则表达式功能入门教程【经典】
2017/06/05 Python
Python学生成绩管理系统简洁版
2020/04/05 Python
mac 安装python网络请求包requests方法
2018/06/13 Python
Python的numpy库下的几个小函数的用法(小结)
2019/07/12 Python
Python线程障碍对象Barrier原理详解
2019/12/02 Python
python操作cfg配置文件方式
2019/12/22 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
OpenCV Python实现图像指定区域裁剪
2021/03/12 Python
泰国网上购物:Shopee泰国
2018/09/14 全球购物
某公司的.net工程师面试题笔试题
2013/11/22 面试题
酒店办公室文员岗位职责
2013/12/18 职场文书
国贸专业毕业求职信
2014/06/11 职场文书
感恩老师演讲稿400字
2014/08/28 职场文书
民政局办理协议离婚(范本)
2014/10/25 职场文书
2014年物资管理工作总结
2014/12/02 职场文书
2015年电工工作总结
2015/04/10 职场文书