`

html process bar

阅读更多
I try to take a processbar myself, without JQuery,
I do it one by one,

step 1
the origin code, coding hard, not sort, for read it to easy

<html>
	<head>
		<title></title>
		<style>
			
		</style>
		<script>
			window.onload=function(){
				init();
			}
			var per=0;	//0-100, not 0-1.0
			function tout(){
				var e=document.getElementById("pbar");
				e.style.visibility="visible";
				var lbl=document.getElementById("lblBar");
				var total=document.getElementById("d2").offsetWidth;
				var value=per*0.01*total-2;	//2px for border left & right
				e.width=value;
				lbl.innerHTML=per+"%";
				if(per>=100)
					return;
				per+=5;
				setTimeout(tout, 100)
			}
			function init(){
				//move the label lblBar("100%") to fit processbar width, height, and center
				var d1=document.getElementById("d1");
				var d2=document.getElementById("lblBar");
				var x=d1.offsetLeft, y=d1.offsetTop;
				d2.style.position="absolute";
				d2.style.left=x;
				d2.style.top=y;
			}
			function setTotalWidth(){
				var e=document.getElementById("txtWidth");
				var width=e.value;
				var d2=document.getElementById("d2");
				d2.style.width=width+"px";
				e=document.getElementById("lblBar");
				e.style.width=width+"px";
				alert(width);
			}
		</script>
	</head>
	<body>
		<div id="d1" style="width: auto">
			<div id="d2" style="background: url('images/bg.gif'); width: 100px; height: 22px; border: 1px solid #777;"><img id="pbar" style="visibility: hidden" src="images/on.gif" width="0" height="22" /></div>
			<label id="lblBar" style="height: 22px; width: 100px; line-height: 22px; text-align: center">0%</label>
		</div>
		<input id="txtWidth" type="text" value="100" /><input type="button" value="TOTAL WIDTH" onclick="setTotalWidth()" />
		<input type="button" value="START" onclick="tout()" />
	</body>
</html>


here is result


step 2
now, begin optimize
resize gif, reduce bar-bg.gif & bar-on.gif to 1 width, separator with 2 file, not combine to 1X44px file, else the bar-on effect will be damaged
coding css style to div d2:
style="background: url('images/bar-bg.gif') repeat-x; width: 100px; height: 22px; border: 1px solid #777;"
pls note the result I want is: repeat-x 1 px gif

step 3
remove html code, encapsulate with JS
<html>
	<head>
		<title></title>
		<style>
			
		</style>
		<script>
			(function(){
				var Pbar=function(id){
					this.per=0;
					var txt="<div id=\"d2\" style=\"background: url('images/bar-bg.gif') repeat-x; width: 100px; height: 22px; border: 1px solid #777;\"><img id=\"pbar\" style=\"visibility: hidden\" src=\"images/bar-on.gif\" width=\"0\" height=\"22\" /></div>\n"
							+"<label id=\"lblBar\" style=\"height: 22px; width: 100px; line-height: 22px; text-align: center\">0%</label>";
					var e=document.getElementById(id);
					e.innerHTML=txt;
					this.init();
				}
				Pbar.prototype.init=function(){
					var d1=document.getElementById("d1");
					var d2=document.getElementById("lblBar");
					var x=d1.offsetLeft, y=d1.offsetTop;
					d2.style.position="absolute";
					d2.style.left=x;
					d2.style.top=y;
				}
				Pbar.prototype.processBar=function(n){
					this.per+=n;
					var e=document.getElementById("pbar");
					e.style.visibility="visible";
					var lbl=document.getElementById("lblBar");
					var total=document.getElementById("d2").offsetWidth;
					var value=this.per*0.01*total-2;
					e.width=value;
					lbl.innerHTML=this.per+"%";
					if(this.per>=100)
						return;
				}
				window.$Pbar=Pbar;
			})();
			var bar;
			window.onload=function(){
				bar=new $Pbar("d1");
			}
			function demo(){
				if(bar.per>=100)
					return;
				bar.processBar(10);
				setTimeout(demo, 200);
			}
		</script>
	</head>
	<body>
		<div id="d1">
			<!--
			<div id="d2" style="background: url('images/bar-bg.gif') repeat-x; width: 100px; height: 22px; border: 1px solid #777;"><img id="pbar" style="visibility: hidden" src="images/bar-on.gif" width="0" height="22" /></div>
			<label id="lblBar" style="height: 22px; width: 100px; line-height: 22px; text-align: center">0%</label>
			-->
		</div>
		<input id="txtWidth" type="text" value="100" /><input type="button" value="TOTAL WIDTH" onclick="setTotalWidth()" />
		<input type="button" value="START" onclick="if(100==bar.per) bar.per=0;demo()" />
	</body>
</html>


step 4
add dynamic width into class, and detach div, img, label to respective object.
add showText option, to show bar% text or not, because the valign present not well when it special width to the <div id="d1">
<html>
	<head>
		<title></title>
		<style>
			
		</style>
		<script>
			(function(){
				var Pbar=function(id, totalWidth, showText){
					this.per=0;
					this.totalWidth=totalWidth;
					this.div=id+"_pbarUtil_Bg";
					this.bar=id+"_pbarUtil_Bar";
					this.showText=showText;
					this.barText=id+"_pbarUtil_BarText";
					var txt="<div id='"+this.div+"' style='background: url(\"images/bar-bg.gif\") repeat-x; width: "+this.totalWidth+"; height: 22px; border: 1px solid #777;'><img id='"+this.bar+"' style='visibility: hidden' src='images/bar-on.gif' width='0' height='22' /></div>\n";
					if(this.showText)
						txt+="<label id='"+this.barText+"' style='height: 22px; width: "+this.totalWidth+"; line-height: 22px; text-align: center'>0%</label>";
					var e=document.getElementById(id);
					e.innerHTML=txt;
					this.init();
				}
				Pbar.prototype.init=function(){
					if(!this.showText)
						return;
					var d1=document.getElementById(this.div);
					var d2=document.getElementById(this.barText);
					var x=d1.offsetLeft, y=d1.offsetTop, w=d1.offsetWidth;
					d2.style.position="absolute";
					d2.style.left=x;
					d2.style.top=y;
					d2.style.width=w;
				}
				Pbar.prototype.processBar=function(n){
					this.per+=n;
					var e=document.getElementById(this.bar);
					if(e.style.visibility=="hidden")
						e.style.visibility="visible";
					var total=document.getElementById(this.div).offsetWidth;
					var value=this.per*0.01*total-2;
					e.width=value;
					if(this.showText){
						var lbl=document.getElementById(this.barText);
						lbl.innerHTML=this.per+"%";
					}
					if(this.per>=100)
						return;
				}
				window.$Pbar=Pbar;
			})();
			var bar;
			function setTotalWidth(){
				//as per IE compatible, the auto bar% text can't valign middle well
				//so set Pbar showText false, draw bar% with below span lblBar, custom x, y and style feedom
				var w=document.getElementById("txtWidth").value;
				bar=new $Pbar("d1", w, false);
				//custom lblBar position
				var d=document.getElementById("d1");
				var e=document.getElementById("lblBar");
				var x=d.offsetLeft, y=d.offsetTop;
				e.style.position="absolute";
				e.style.left=x+"px";
				e.style.top=y+"px";
				e.style.width=w;
			}
			function demo(){
				if(bar.per>=100)
					return;
				bar.processBar(10);
				var e=document.getElementById("lblBar");
				e.innerHTML=bar.per+"%";
				setTimeout(demo, 200);
			}
		</script>
	</head>
	<body>
		<div>
		<div id="d1" style="width: 60%;">
			<!--keep inner empty-->
		</div>
		<!-- set Pbar showText false, draw bar% with below span lblBar, custom x, y and style feedom -->
		<span id="lblBar" style="height: 22px; line-height: 22px; text-align: center">0%</span>
		</div>
		<br />
		<hr size="1" />
		<input id="txtWidth" type="text" value="100" /><input type="button" value="TOTAL WIDTH" onclick="setTotalWidth()" />
		<input type="button" value="START" onclick="if(100==bar.per) bar.per=0;demo()" />
	</body>
</html>


the result in IE, FF, Chrome, looks like no bad, hoho~



  • 大小: 6.9 KB
  • 大小: 54 KB
分享到:
评论

相关推荐

    进度条进度条 processBar实例

    在本文中,我们将深入探讨如何创建和使用进度条(processBar),以及在实际应用中的一些关键点。 1. **进度条的基本概念** - **类型**:进度条通常分为两种类型,一种是确定性进度条,显示明确的进度百分比;另一...

    process_bar.rar_web process bar

    标签"web_process_bar"进一步确认了这个主题,它是针对Web环境中的进度条,可能涉及到HTML、CSS和JavaScript等前端技术。HTML用于构建页面结构,CSS用于样式设计,而JavaScript则用于动态更新进度条的状态和响应用户...

    进度条processbar

    用html5开发的进度条,方便大家的使用

    ajax实现进度条processbar.rar 代码

    在提供的"processbar.rar"文件中,可能包含了实现这种功能的JavaScript代码、CSS样式和HTML结构。解压后,你需要查看相关文件以了解具体实现。通常,这些文件会包含一个模拟进度的div元素,一个用于发送Ajax请求的...

    html5中的progressbar的小结集合

    HTML5是现代网页开发的重要标准,它引入了许多新的元素和特性,使得开发者能够构建更加丰富、交互性更强的网页应用。在HTML5中,`&lt;canvas&gt;`和`&lt;progress&gt;`标签是实现进度条效果的两种主要方法。 1. **&lt;canvas&gt; 标签...

    C# ASP.NET 图片批量上传,可预览带进度条 picture image processbar

    HTML5引入了`&lt;input type="file" multiple&gt;`属性,允许用户一次性选择多个文件。同时,我们可以通过JavaScript或者jQuery来获取选中的文件,并进行预览。预览功能通常通过创建一个`&lt;img&gt;`标签,并将文件的Blob对象...

    进度条代码

    var processbar = document.getElementById("processbar"); processbar.innerHTML = processbar.style.width; var width = processbar.style.width var newstr = parseInt(width); if (newstr == 100) { ...

    Ajax实现批量生成Html带进度条效果

    采用ajax技术实现大批量数据批量生成Html,并带进度条效果的实现代码.... 里面有两个页面,Index.Html进度条显示效果页面,Post.asp是处理页面. &lt;br&gt;演示地址:http://www.qjob.cn/processbar

    基于JQuery的动态进度条,酷!

    这里的`$("#processbar")`是jQuery的选择器,用于选取页面中ID为"processbar"的元素,这通常是一个包含进度条的div元素。`.progressBar(30)`则是调用一个名为`progressBar`的插件方法,将该元素转换为进度条,并设定...

    process.rar彩虹进度条

    "process.rar彩虹进度条"可能是一个包含HTML和JavaScript代码的压缩包,用于创建一个动态、多彩的加载进度条效果。这样的效果可以提高用户体验,尤其是在进行长时间操作时,如文件上传、数据处理或下载等,让用户...

    jquery 进度条插件progressbar

    要开始使用这个插件,你需要在HTML文件中引入jQuery库和ProgressBar插件的JS文件,然后选择一个HTML元素作为进度条容器,最后通过JavaScript初始化并设置参数。例如: ```html &lt;!DOCTYPE html&gt; &lt;html lang="zh"&gt; ...

    带有数字的进度条

    1. HTML/CSS:使用HTML元素如`&lt;progress&gt;`来创建基础的进度条,并通过CSS进行样式定制,包括颜色、宽度、高度以及填充部分的样式。对于百分比显示,可以在HTML中添加一个额外的元素(如`&lt;span&gt;`),并通过JavaScript...

    python后端实现进度条 progress_bar_demo.zip

    path('process_data/', process_data, name='process_data'), ] ``` 通过以上步骤,我们就实现了一个简单的Django后端进度条功能,前端可以通过Ajax实时获取并更新进度。这个例子展示了如何在Django中集成进度条...

    简单HTML流程状态条

    &lt;div class="process-bar"&gt; 步骤1 步骤2 步骤3 ``` CSS(层叠样式表)则是用来美化这些HTML元素的关键,通过设置颜色、边框、宽度等样式来实现流程状态条的视觉效果。我们可以为不同的状态(如已完成、进行中、...

    JS进度条类模块示例

    在`Processbar.js`中,我们通常会看到一个名为`ProgressBar`的构造函数,该构造函数接受一些初始化参数,如进度条ID、初始值、最大值等。构造函数内部会创建DOM元素,如`&lt;div&gt;`用于进度条的容器,以及可能的子元素,...

    采用ajax技术实现大批量数据批量生成Html

    为了提高用户体验,可以添加一个进度条组件(如文件名processbar暗示的那样),实时显示数据加载进度。这通常通过计算已加载数据量与总数据量的比例来实现。可以使用CSS和JavaScript来创建和更新进度条的视觉效果。 ...

    js实现进度条的方法

    processbar.style.width = parseInt(processbar.style.width) + 1 + "%"; processbar.innerHTML = processbar.style.width; if (processbar.style.width == "100%") { window.clearInterval(bartimer); } } var...

    电子教学:电子教学linuxmacdbcacheservertools人工智能

    超酷炫CSS3发光字体.html./html-js-css/ionic-cordova学习.txt./html-js-css/ant.html./html-js-css/nodejs学习.txt./html-js-css/blur.html./html-js-css/hihack.js./html-js-css/js常用.txt./...

    一个已封装好的漂亮进度条

    ProcessBar.nowObj.foreDiv.style.width = ProcessBar.nowObj.nowLength; // 更新宽度 // 如果需要,可以在这一段加入判断逻辑,比如达到最大值后重置 } ``` `moving`方法中通过修改前景div的宽度属性来模拟进度...

Global site tag (gtag.js) - Google Analytics