js 实现进度条功能。
/**
* 纯js进度条
* Created by kiner on 15/3/22.
*/ function progress(options){ this.w = (options && options.width)?parseFloat(options.width) : parseFloat(this.options.width);
this.h = (options && options.height)?parseFloat(options.height) : parseFloat(this.options.height);
this.bgColor = (options && options.bgColor)?options.bgColor : this.options.bgColor;
this.proColor = (options && options.proColor)?options.proColor : this.options.proColor;
this.fontColor = (options && options.fontColor)?options.fontColor : this.options.fontColor;
this.showPresent = (options && options.showPresent != undefined)?options.showPresent : this.options.showPresent;
this.completeCallback = (options && options.completeCallback)?options.completeCallback : this.options.completeCallback;
this.changeCallback = (options && options.changeCallback)?options.changeCallback : this.options.changeCallback;
this.text = (options && options.text)?options.text : this.options.text;
this.val = (options && options.val)?options.val : this.options.val; this.strTemp = this.text.substring(0,this.text.indexOf('#*'))+"{{pro}}"+this.text.substring(this.text.indexOf('*#')+2); this.init(); }
/**
* 默认选项
* @type {{width: number, height: number, bgColor: string, proColor: string, fontColor: string, val: number, text: string, showPresent: boolean, completeCallback: Function, changeCallback: Function}}
*/
progress.prototype.options = { width : 200,
height: 30,
bgColor : "#005538",
proColor : "#009988",
fontColor : "#FFFFFF",
val : 10,
text:"当前进度为#*val*#%",
showPresent : true,
completeCallback:function(){},
changeCallback:function(){} }; /**
* 初始化
*/
progress.prototype.init = function(){ this.proBox = document.createElement('div');
this.proBg = document.createElement('div');
this.proPre = document.createElement('div');
this.proFont = document.createElement('div'); addClass(this.proBox,'proBox');
addClass(this.proBg,'proBg');
addClass(this.proPre,'proPre');
addClass(this.proFont,'proFont'); this.proBox.setAttribute("style","width:"+this.w+"px; height:"+this.h+"px; position:relative; overflow:hidden; box-shadow:0 0 5px #FFFFFF; -moz-box-shadow:0 0 5px #FFFFFF; -webkit-box-shadow:0 0 5px #FFFFFF; -o-box-shadow:0 0 5px #FFFFFF;");
this.proBg.setAttribute("style","background-color:"+this.bgColor+"; position:absolute; z-index:1; width:100%; height:100%; top:0; left:0;");
this.proPre.setAttribute("style","transition:all 300ms; -moz-transition:all 300ms; -webkit-transition:all 300ms; -o-transition:all 300ms; width:"+this.val+"%; height:100%; background-color:"+this.proColor+"; position:absolute; z-index:2; top:0; left:0;");
if(this.showPresent){ this.proFont.setAttribute("style","overflow:hidden;text-overflow:ellipsis; white-space:nowrap; *white-space:nowrap; width:100%; height:100%; color:"+this.fontColor+"; text-align:center; line-height:"+this.h+"px; z-index:3; position:absolute; font-size:12px;"); var text = this.parseText();
this.proFont.innerHTML = text;
this.proFont.setAttribute("title",text);
this.proBox.appendChild(this.proFont);
} this.proBox.appendChild(this.proBg);
this.proBox.appendChild(this.proPre); }; /**
*
*/
progress.prototype.refresh = function(){
this.proPre.style.width = this.val+"%"; this.proFont.innerHTML = this.parseText();
}; /**
* 转换文字
* @returns {options.text|*}
*/
progress.prototype.parseText = function(){
this.text = this.strTemp.replace("{{pro}}",this.val);
return this.text;
}; /**
* 更新进度条进度
* @param val
*/
progress.prototype.update = function(val){ this.val = val;
this.refresh(); this.changeCallback.call(this,val);
if(val==100){ this.completeCallback.call(this,val); }
};
/**
* 获取进度条本身的html对象,可直接将其塞入容器中
* @returns {HTMLElement|*}
*/
progress.prototype.getBody = function(){
return this.proBox;
};
/**
* 获取当前进度条的值
* @returns {*}
*/
progress.prototype.getVal = function(){
return this.val;
}; function hasClass(obj, cls) {
return obj.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
} function addClass(obj, cls) {
if (!this.hasClass(obj, cls)) obj.className += " " + cls;
} function removeClass(obj, cls) {
if (hasClass(obj, cls)) {
var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
obj.className = obj.className.replace(reg, ' ');
}
} function toggleClass(obj,cls){
if(hasClass(obj,cls)){
removeClass(obj, cls);
}else{
addClass(obj, cls);
}
}
progess.js使我们能够实现进度条功能,下边是当初下载时候的例子。
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>进度条插件progress.js</title>
<script src="progress.js"></script>
<style>
body{
background: url("bg.png");
} .pro,.result {
width: 200px;
margin: 100px auto; }
.result{
text-align: center;
text-shadow: 0 0 5px #333333;
color:#FFFFFF;
}
</style>
<script> window.onload = function(){ var result = document.getElementsByClassName('result')[0]; var pro = new progress({
width : 200,//进度条宽度
height: 30,//进度条高度
bgColor : "#3E4E5E",//背景颜色
proColor : "#009988",//前景颜色
fontColor : "#FFFFFF",//显示字体颜色
val : 10,//默认值
text:"当前进度为#*val*#%",//显示文字信息
showPresent : true,
completeCallback:function(val){
console.log('已完成');
result.innerHTML = '已完成';
},
changeCallback:function(val){
console.log('当前进度为'+val+'%');
result.innerHTML = '当前进度为'+val+'%';
}
}); document.getElementsByClassName('pro')[0].appendChild(pro.getBody()); setTimeout(function(){ pro.update(50);
setTimeout(function(){ pro.update(10);
setTimeout(function(){ pro.update(100);
setTimeout(function(){ pro.update(0);
},3000);
},3000); },3000);
},3000); }; </script>
</head>
<body>
<div class="pro"></div>
<div class="result"></div>
</body>
</html>
自己写的我也贴出来吧,后来自己写的就是简单的应用了。
<script type="text/javascript">
$(function() { if("${onOff}"=="on"){
document.getElementById("batchId").disabled=true;
}
//异步保存发送
$("#addform").eblueValidate( { submitHandler : function(form) {
$(form).ajaxSubmit({
resetForm : false,
dataType:'json',
success : function(msg) {
if(msg.result==true)
{
pro.update(100);
window.parent.alertExpand({message_param:msg.info});
setTimeout(function(){
document.getElementsByClassName('pro')[0].removeChild(pro.getBody());
},1000); }else{
window.parent.alertExpand({message_param:msg.info,iconCls_param:'error',timeout_param:3000});
setTimeout(function(){
document.getElementsByClassName('pro')[0].removeChild(pro.getBody());
},1000);
}
}
}); }
}); });
var pro1 = document.getElementById("pro1");
var pro ="";
function addSubmit(){
var kddbf = document.getElementById("kddbf").value;
var kcdbf = document.getElementById("kcdbf").value;
var ksdbf = document.getElementById("ksdbf").value;
var imgzip = document.getElementById("imgzip").value;
var sfzid = document.getElementById("sfzid").value;
var fdat = document.getElementById("fdat").value;
if(kddbf.length>0 && kcdbf.length>0 && ksdbf.length>0 && imgzip.length>0 && sfzid.length>0 && fdat.length>0){
pro = new progress({
width : 200,//进度条宽度
height: 30,//进度条高度
bgColor : "#3E4E5E",//背景颜色
proColor : "#009988",//前景颜色
fontColor : "#FFFFFF",//显示字体颜色
val : 10,//默认值
text:"当前进度为#*val*#%",//显示文字信息
showPresent : true,
completeCallback:function(val){
console.log('已完成');
// result.innerHTML = '已完成';
// result.style.display='none';
},
changeCallback:function(val){
console.log('当前进度为'+val+'%');
// result.innerHTML = '当前进度为'+val+'%';
}
});
setTimeout(function(){
pro.update(15);
},3000);
document.getElementsByClassName('pro')[0].appendChild(pro.getBody());
}
//移除disabled可以上传batchId值
$("#batchId").removeAttr("disabled");
$("#addform").attr("action", "<%=contextPath%>/hfims/stuInfo/importStuData.do");
$("#addform").submit();
};
</script>
<div class="pro" id="pro1" align="middle"></div>
js 实现进度条功能。的更多相关文章
- .Net Framework4.5中Asp.net mvc使用Singal R轮训实现导入进度条功能
.Net Framework4.5中Asp.net mvc使用Singal R轮训实现导入进度条功能 我的项目需求是:在.net4.5中用mvc5实现上传xml文件,后台实时导入数据库时传到前台进度, ...
- php+javascript实现的动态显示服务器运行程序进度条功能示例
本文实例讲述了php+javascript实现的动态显示服务器运行程序进度条功能.分享给大家供大家参考,具体如下: 经常有这样的业务要处理,服务器上有较多的业务需要处理,需要分批操作,于是就需要一个提 ...
- jquery自带的进度条功能如何使用?
弹出进度条:先做弹出的功能modal,再做进度条显示.在弹出的界面上增加进度条功能 $.ajax({ xhr: function() { var xhr = new window.XMLHttpReq ...
- Python实现进度条功能
Python实现进度条功能 import sys, time def progress(percent, width=50): # 设置进度条的宽度 if percent >= 100: # 当 ...
- python基础-实现进度条功能,for和yield实现
实现进度条功能 方法一:简单FOR实现打印进度条功能 for i in range(10): print("#",end="",flush=True) time ...
- nprogress.js 头部进度条使用方法
nprogress.js 头部进度条 引入CSS\JS <link rel="stylesheet" type="text/css" href=" ...
- PHP中使用Session配合Javascript实现文件上传进度条功能
Web应用中常需要提供文件上传的功能.典型的场景包括用户头像上传.相册图片上传等.当需要上传的文件比较大的时候,提供一个显示上传进度的进度条就很有必要了. 在PHP .4以前,实现这样的进度条并不容易 ...
- Js 百分比进度条
[构想] CSS3 + JS CSS3控制进度 利用CSS3中的 @keyframes JS实现百分比 根据CSS来调整,时间 [页面代码] 第一种: 默认直接进入就是下载 CSS代码 body { ...
- 微信小程序 - 时间进度条功能
关于答题类,或者一些游戏环节的小程序需要用到时间进度条,改功能怎么实现看下面源码 <view class='out' style='margin-top:10px'> <view c ...
随机推荐
- Bootstrap <基础十八>面包屑导航(Breadcrumbs)
面包屑导航(Breadcrumbs)是一种基于网站层次信息的显示方式.以博客为例,面包屑导航可以显示发布日期.类别或标签.它们表示当前页面在导航层次结构内的位置. Bootstrap 中的面包屑导航( ...
- Bootstrap<基础十一>字体图标(Glyphicons)
字体图标(Glyphicons),并通过一些实例了解它的使用.Bootstrap 捆绑了 200 多种字体格式的字形. 获取字体图标 我们已经在 环境安装 章节下载了 Bootstrap 3.x 版本 ...
- Xcode快捷键
1. 文件 CMD + N: 新文件 CMD + SHIFT + N: 新项目 CMD + O: 打开 CMD + S: 保存 CMD + SHIFT + S: 另存为 CMD + W: 关闭窗口 C ...
- VScode调试Python
第一步,确保装上了PYTHON扩展 然后打开文件夹(这个东西必须打开文件夹才能进行调试,不能打开一个文件就调试) 打开文件夹后,那里显示没有配置,这时需要你按下F5 弹出选择环境,点击Python 它 ...
- win10 Unistack 服务组 占用资源如何解决
开始菜单>设置>隐私,隐私界面的左侧栏目,找最后一个“后台应用”,把后台运行的应用全部关掉即可
- [小菜随笔]关于monkey报错日志分析
今天小菜在一个测试群内看到群友发出一个monkey的报错信息,其实是一个很简单的报错 个人觉得monkey虽然操作起来比较简易,但其实查看日志分析日志也是很重要的环节,如果对错误分析不够详细,就容易误 ...
- 惯性导航之MEMS加速度计原理
一 加速度计原理 1.1 加速度计由MEMS传感器与信号处理芯片组成. 1.2 MEMS加速度计工作原理 由上电容.中电容板(可移动).下电容板等组成:当加速度达到一定值后,中电容板会移动,与上.下电 ...
- Objective-C学习笔记-第四天(1)
解决以下昨天遇到的问题 1.@class与import是怎么样的呢?参考:http://www.cnblogs.com/ios8/p/ios-oc-test.html 在头文件中, 一般只需要知道被引 ...
- 初学Spring
Spring是当今最流行的框架,今天开始,dayday同学要正式开始学习Spring了,加油 以下是一个简单的应用Spring框架的java程序 src\dayday\HelloSpring.java ...
- iOS学习之cocoaPods
Cocoapods Cocoapods作用:iOS开发时,项目中会引用许多第三方库,CocoaPods可以用来方便的统一管理这些第三方库. 第一步安装: 下载安装CocoaPods需要Ruby环境 M ...