简单实用的进度条、时间轴
这是个啥?
一个小小的显示控件,用来展示流程进度,也可以作为时间轴实用,我们接下来暂且叫它作进度条吧。
这个进度条用js封装了一小下,提供setDoneStep()、setFailedStep()两个方法用来对进度条设置成功步骤和失败步骤。由于个人项目只需要这两个方法就好,没有做更多的功能,也没有做动画效果。
运行效果
进度成功在第三步:
进度失败在第四步:
一言不合就上代码
<html> <head> <meta charset="UTF-8"> <title>ProgressPoint</title> <style> ol.progressPoint{ list-style: none outside none; } ol.progressPoint > li > div{ float: left; } ol.progressPoint > li > div.point{ width: 30px; height: 30px; background-color: grey; border-radius: 50px; text-align: center; line-height: 30px; border: 2px solid rgba(224,224,224,1); } ol.progressPoint > li > div.point > div.descrition{ font-size: 12px; white-space: nowrap; } ol.progressPoint > li > div.done{ background-color: green; } ol.progressPoint > li > div.failed{ background-color: red; } ol.progressPoint > li > .line{ background-color: grey; height: 5px; width: 100px; margin-top: 14px; } </style> </head> <body> <ol id="progressPoint" class="progressPoint"> <li> <div class="point"> <div>1</div> <div class="descrition">开始</div> </div> </li> <li> <div class="line"></div> <div class="point"> <div>2</div> <div class="descrition">第一步</div> </div> </li> <li> <div class="line"></div> <div class="point"> <div>3</div> <div class="descrition">第二步</div> </div> </li> <li> <div class="line"></div> <div class="point"> <div>4</div> <div class="descrition">第三步</div> </div> </li> <li> <div class="line"></div> <div class="point"> <div>5</div> <div class="descrition">第四步</div> </div> </li> <li> <div class="line"></div> <div class="point"> <div>6</div> <div class="descrition">完成</div> </div> </li> </ol> </body> <script text="javascript/text"> var ProgressPoint = (function(config){ function ProgressPoint(config){ var thiz = this; this.id = config.id; } ProgressPoint.prototype.setDoneStep = function(step){ if(isNaN(step)){ throw '请为setDoneStep方法传递参数,且必须为数字!'; } var nodeList = document.getElementById(this.id).children; for(var i = 0; i < step && i < nodeList.length; i++){ var childList = nodeList[i].children; for(var n = 0; n < childList.length; n ++){ childList[n].className = childList[n].className + ' ' + 'done'; } } }; ProgressPoint.prototype.setFailedStep = function(step){ if(isNaN(step)){ throw '请为setFailedStep方法传递参数,且必须为数字!'; } var nodeList = document.getElementById(this.id).children; for(var i = 0; i < step && i < nodeList.length; i++){ var childList = nodeList[i].children; if(i == step - 1){ for(var n = 0; n < childList.length; n ++){ childList[n].className = childList[n].className + ' ' + 'failed'; } return; } for(var n = 0; n < childList.length; n ++){ childList[n].className = childList[n].className + ' ' + 'done'; } } }; return ProgressPoint; })(); var pp = new ProgressPoint({id: 'progressPoint'}); pp.setFailedStep(5); </script> </html>