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 实现双击编辑表格功能
Jun 19 jQuery
jquery-file-upload 文件上传带进度条效果
Nov 21 jQuery
jQuery获取随机颜色的实例代码
May 21 jQuery
jQuery实现模糊搜索功能的方法分析
Jun 29 jQuery
jQuery实现checkbox全选功能完整实例
Jul 12 jQuery
jquery层次选择器的介绍
Jan 18 jQuery
jQuery层叠选择器用法实例分析
Jun 28 jQuery
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
Aug 27 jQuery
Jquery使用each函数实现遍历及数组处理
Jul 14 jQuery
jQuery实现带进度条的轮播图
Sep 13 jQuery
jQuery实现图片切换效果
Oct 19 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
php实现查看邮件是否已被阅读的方法
2013/12/03 PHP
在Thinkphp中使用ajax实现无刷新分页的方法
2016/10/25 PHP
关于ThinkPHP中的异常处理详解
2018/05/11 PHP
js文件中调用js的实现方法小结
2009/10/23 Javascript
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
JQuery实现鼠标滑过显示导航下拉列表
2013/09/12 Javascript
js常用系统函数用法实例分析
2015/01/12 Javascript
js正则表达式匹配数字字母下划线等
2015/04/14 Javascript
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
简单介绍jsonp 使用小结
2016/01/27 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
2016/02/27 Javascript
JavaScript中的toString()和toLocaleString()方法的区别
2017/02/15 Javascript
jquery实现弹窗功能(窗口居中显示)
2017/02/27 Javascript
vue.js中proxyTable 转发请求的实现方法
2018/09/20 Javascript
微信小程序实现动态列表项的顺序加载动画
2019/07/25 Javascript
Angular封装表单控件及思想总结
2019/12/11 Javascript
微信小程序 bindtap 传参的实例代码
2020/02/21 Javascript
原生js实现五子棋游戏
2020/05/28 Javascript
[01:01:13]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第三场
2018/04/06 DOTA
简单讲解Python中的闭包
2015/08/11 Python
python 画二维、三维点之间的线段实现方法
2019/07/07 Python
python 进程间数据共享multiProcess.Manger实现解析
2019/09/23 Python
基于python实现微信好友数据分析(简单)
2020/02/16 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
Python基于模块Paramiko实现SSHv2协议
2020/04/28 Python
公认8个效率最高的爬虫框架
2020/07/28 Python
css3 实现滚动条美化效果的实例代码
2021/01/06 HTML / CSS
台湾最大网路书店:博客来
2018/03/18 全球购物
复古服装:RetroStage
2019/05/10 全球购物
linux面试题参考答案(6)
2016/06/23 面试题
AJax面试题
2014/11/25 面试题
Structs界面控制层技术
2013/10/11 面试题
六十大寿答谢词
2014/01/12 职场文书
我的中国梦演讲稿400字
2014/08/19 职场文书
个人工作年终总结
2015/03/09 职场文书
Python进程间的通信之语法学习
2022/04/11 Python