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 ajaxupload插件实现无刷新上传文件
Apr 23 jQuery
jquery请求servlet实现ajax异步请求的示例
Jun 03 jQuery
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
Jun 09 jQuery
jQuery自动或手动图片切换效果
Oct 11 jQuery
jquery 获取索引值在一定范围的列表方法
Jan 25 jQuery
jQuery实现图片简单轮播功能示例
Aug 13 jQuery
基于 jQuery 实现键盘事件监听控件
Apr 04 jQuery
JQuery常见节点操作实例分析
May 15 jQuery
jquery制作的移动端购物车效果完整示例
Feb 24 jQuery
JavaScript或jQuery 获取option value值方法解析
May 12 jQuery
jQuery使用jsonp实现百度搜索的示例代码
Jul 08 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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
php 过滤器实现代码
2010/08/09 PHP
PHP字符编码问题之GB2312 VS UTF-8解决方法
2011/06/23 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
2014/09/29 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
php简单解析mysqli查询结果的方法(2种方法)
2016/06/29 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2017/03/14 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
2019/03/18 PHP
参考:关于Javascript中实现暂停的几篇文章
2007/03/04 Javascript
javascript判断单选框或复选框是否选中方法集锦
2007/04/04 Javascript
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
2011/04/06 Javascript
js操作输入框提示信息且响应鼠标事件
2014/03/25 Javascript
js中string转int把String类型转化成int类型
2014/08/13 Javascript
JQuery EasyUI的使用
2016/02/24 Javascript
JS 拼凑字符串的简单实例
2016/09/02 Javascript
Bootstrap Scrollspy源码学习
2017/03/02 Javascript
使用jquery datatable和bootsrap创建表格实例代码
2017/03/17 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
详解vue渲染从后台获取的json数据
2017/07/06 Javascript
vue监听scroll的坑的解决方法
2017/09/07 Javascript
webpack4 + react 搭建多页面应用示例
2018/08/03 Javascript
vue-cli webpack配置文件分析
2019/05/20 Javascript
如何手动实现一个 JavaScript 模块执行器
2020/10/16 Javascript
JavaScript实现alert弹框效果
2020/11/19 Javascript
[00:21]DOTA2亚洲邀请赛 Logo演绎
2015/02/07 DOTA
Python实现控制台输入密码的方法
2015/05/29 Python
浅谈python新手中常见的疑惑及解答
2016/06/14 Python
Python遍历目录并批量更换文件名和目录名的方法
2016/09/19 Python
python如何获取当前文件夹下所有文件名详解
2019/01/25 Python
python 穷举指定长度的密码例子
2020/04/02 Python
python实现处理mysql结果输出方式
2020/04/09 Python
python读取excel数据绘制简单曲线图的完整步骤记录
2020/10/30 Python
Room Mate Hotels美国:西班牙酒店品牌
2018/04/10 全球购物
伦敦一卡通:The London Pass
2018/11/30 全球购物
存储过程的优点有哪些
2012/09/27 面试题
SpringBoot整合Minio文件存储
2022/04/03 Java/Android