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实现的简单在线计算器功能
May 11 jQuery
详解jQuery中关于Ajax的几个常用的函数
Jul 17 jQuery
jquery中done和then的区别(详解)
Dec 19 jQuery
jquery.onoff实现简单的开关按钮功能(推荐)
May 24 jQuery
jQuery实现的自定义轮播图功能详解
Dec 28 jQuery
jQuery无冲突模式详解
Jan 17 jQuery
使用JQuery自动完成插件Auto Complete详解
Jun 18 jQuery
JavaScript实现的滚动公告特效【基于jQuery】
Jul 10 jQuery
jQuery 筛选器简单操作示例
Oct 02 jQuery
jQuery实现获取多选框的值示例
Feb 07 jQuery
jQuery实现高度灵活的表单验证功能示例【无UI】
Apr 30 jQuery
jQuery 淡入/淡出效果函数用法分析
May 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 cron中的批处理
2008/09/16 PHP
在Windows系统上安装PHP运行环境文字教程
2010/07/19 PHP
Zend Framework教程之Zend_Db_Table_Row用法实例分析
2016/03/21 PHP
php 数据结构之链表队列
2017/10/17 PHP
JSON.parse 解析字符串出错的解决方法
2010/07/08 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
2012/08/01 Javascript
js 异步操作回调函数如何控制执行顺序
2013/12/24 Javascript
JavaScript函数的4种调用方法详解
2014/04/22 Javascript
js中this的用法实例分析
2015/01/10 Javascript
JavaScript实现简单图片翻转的方法
2015/04/17 Javascript
学习vue.js计算属性
2016/12/03 Javascript
微信小程序 video详解及简单实例
2017/01/16 Javascript
Vue实现动态响应数据变化
2017/04/28 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例
2018/12/14 Javascript
使用nvm和nrm优化node.js工作流的方法
2019/01/17 Javascript
基于vue和bootstrap实现简单留言板功能
2020/05/30 Javascript
vue print.js打印支持Echarts图表操作
2020/11/13 Javascript
在vue中嵌入外部网站的实现
2020/11/13 Javascript
Python中的tuple元组详细介绍
2015/02/02 Python
基于python的七种经典排序算法(推荐)
2016/12/08 Python
Python实现SSH远程登陆,并执行命令的方法(分享)
2017/05/08 Python
python paramiko模块学习分享
2017/08/23 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
python 拼接文件路径的方法
2018/10/23 Python
Python设计模式之外观模式实例详解
2019/01/17 Python
Python3利用openpyxl读写Excel文件的方法实例
2021/02/03 Python
ORLY官网:美国专业美甲一线品牌
2019/12/11 全球购物
人大调研汇报材料
2014/08/14 职场文书
2015年科协工作总结
2015/05/19 职场文书
班干部学习委员竞选稿
2015/11/20 职场文书
小学数学教学反思范文
2016/02/16 职场文书
SpringBoot读取Resource下文件的4种方法
2021/07/02 Java/Android
Oracle使用别名的好处
2022/04/19 Oracle