JS实现可控制的进度条


Posted in Javascript onMarch 25, 2020

写在前面

进度条一直以来都是很多地方都可以用的,那么很多的时候其实我们都是自己在网上找代码,直接使用的,很少有人自己写源码的,今天呢我们就简单的实现一个进度条的效果,没有做美化,喜欢做美化的可以自己做一下美化。

源码已经放到Github上:进度条源码

一如既往的看效果:

JS实现可控制的进度条

好吧,效果还是一如既往的丑,简单的说一下怎么实现这样的效果,还是和之前一样我们分析一下难点在哪?

第一:进度条是生成的,那么就意味着div的宽度是不定的。

第二:百分比是动态的,就意味着是计算出来的。

第三:每次的改变,百分比都要自己计算出来,说明公式里面的数据是变量。

只要解决这三个问题,这个进度条就解决了,至于颜色怎么改变这些就不是什么难点了。

首先怎么是div的宽度不固定呢?其实也不难,只要我们根据用户输入的长度来改变宽度就可了,拿到用户输入的数据,将数据的值赋予样式的款就行了!

var user_number = $("#user_number").val();
context.style.width = user_number+"px";

第二:百分比怎么计算呢?既然是百分比,就是颜色的宽度/div的宽度,那么颜色的宽度只要变化,那么百分比自然就变化了。

if(count !== Number(user_number)){
  /* 改变样式的宽度 */
  nercon.style.width = count+"px";
  /* count自加 */
  count++;
  /* 百分比的显示,保留两位小数 */
  text_contest.textContent = (parseFloat(count/user_number)*100).toFixed(2)+"%";
  }else{
  return false;
  }

第三的问题第二里面也就一起解答了!

看源码:

<!DOCTYPE html>
<!-- 
 aim:csdn example
 date:2018-09
 author:clearlove
 bug:0%
 environment:osx
 introduce:Progress bar introduction
 -->
<html>
 <head>
 <meta charset="utf-8" />
 <title></title>
 <style type="text/css">
 .style_input{
 width: 3rem;
 margin-bottom: 2rem;
 }
 #context{
 height: 1.5rem;
 border: 1px solid black;
 float: left;
 border-radius:10px;
 }
 #ner_con{
 background-color: aqua;
 height: 100%;
 border-radius:10px;
 }
 #text_contest{
 height: 1.5rem;
 width: 3rem;
 float: left;
 margin-left: 0.3rem;
 }
 #pro_div{
 height: 1.5rem;
 width: 3rem;
 float: left;
 }
 </style>
 <script src="js/jquery-1.11.2.min.js" type="text/javascript" charset="utf-8"></script>
 </head>
 <body>
 <input type="number" name="" id="user_number" value="" class="style_input"/>
 <input type="button" name="" id="" value="生成" οnclick="change()"/>
 
 <div id="">
 <div id="context">
 <div id="ner_con">
 </div>
 </div>
 <div id="text_contest">
 </div>
 </div>
 <script type="text/javascript">
 var count = 1;
 var screewidth = document.body.clientWidth;
 function change(){
  /* 拿到ID以改变样式 */
  var nercon = document.getElementById("ner_con");
  var context = document.getElementById("context");
  var text_contest = document.getElementById("text_contest");
  var user_number = $("#user_number").val();
  /* 判断一下是不是超过了可见区域 */
  if(Number(user_number)>=(screewidth/2)){
  console.log(screewidth);
  alert("输入过长,请重新输入!");
  return false;
  }
  else{
  context.style.width = user_number+"px";
  /* 只需要将内部的div的宽度递增就可以了*/
  if(count !== Number(user_number)){
  /* 改变样式的宽度 */
  nercon.style.width = count+"px";
  /* count自加 */
  count++;
  /* 百分比的显示,保留两位小数 */
  text_contest.textContent = (parseFloat(count/user_number)*100).toFixed(2)+"%";
  }else{
  return false;
  }
  setTimeout("change()",100);
  }
  
 }
 </script>
 </body>
</html>

PS:这里仔细的人可能已经看出来了,我没有做过多的校验,没有判断用户输入的是不是空就触发函数,这些知道就行了,自己写的时候不要忘记加上,不然会出bug!

不要忘记引入jquery

谢谢阅读

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 面向对象 继承
May 13 Javascript
JavaScript中的eval()函数详解
Aug 22 Javascript
JavaScript实现存储HTML字符串示例
Apr 21 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
Feb 28 Javascript
JS学习之表格的排序简单实例
May 16 Javascript
关于Iframe父页面与子页面之间的相互调用
Nov 22 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
Nov 29 Javascript
node.js中EJS 模板快速入门教程
May 08 Javascript
BootStrap daterangepicker 双日历控件
Jun 02 Javascript
Vue2.2.0+新特性整理及注意事项
Aug 22 Javascript
JavaScript实现五子棋游戏的方法详解
Jul 08 Javascript
vue点击按钮动态创建与删除组件功能
Dec 29 Javascript
js实现简单进度条效果
Mar 25 #Javascript
JavaScript实现简单进度条效果
Mar 25 #Javascript
JavaScript实现随机点名程序
Mar 25 #Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
Mar 25 #Javascript
JS实现网页时钟特效
Mar 25 #Javascript
js实现小时钟效果
Mar 25 #Javascript
vue页面更新patch的实现示例
Mar 25 #Javascript
You might like
Godaddy空间Zend Optimizer升级方法
2010/05/10 PHP
php防注入,表单提交值转义的实现详解
2013/06/10 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
分享别人写的一个小型js框架
2007/08/13 Javascript
Extjs中常用表单介绍与应用
2010/06/07 Javascript
javascript天然的迭代器
2010/10/29 Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
2014/05/04 Javascript
JavaScript的null和undefined区别示例介绍
2014/09/15 Javascript
jQuery向后台传入json格式数据的方法
2015/02/13 Javascript
Bootstrap中表单控件状态(验证状态)
2016/08/04 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
基于JavaScript实现报警器提示音效果
2017/10/27 Javascript
微信小程序实现的一键连接wifi功能示例
2019/04/24 Javascript
详解vue-cli3多页应用改造
2019/06/04 Javascript
H5实现手机拍照和选择上传功能
2019/12/18 Javascript
如何基于javascript实现贪吃蛇游戏
2020/02/09 Javascript
Vue脚手架编写试卷页面功能
2020/03/17 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
python开发之字符串string操作方法实例详解
2015/11/12 Python
Django添加favicon.ico图标的示例代码
2018/08/07 Python
不管你的Python报什么错,用这个模块就能正常运行
2018/09/14 Python
Python拼接字符串的7种方法总结
2018/11/01 Python
pyspark操作MongoDB的方法步骤
2019/01/04 Python
基于python实现数组格式参数加密计算
2020/04/21 Python
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
五年级语文教学反思
2014/01/30 职场文书
信用社员工先进事迹材料
2014/02/04 职场文书
生日庆典策划方案
2014/06/02 职场文书
2014年小学工作总结
2014/11/26 职场文书
趣味运动会广播稿
2015/08/19 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书
学生会2016感恩节活动小结
2016/04/01 职场文书
2019年鼓励无偿献血倡议书
2019/09/17 职场文书
Spring Data JPA的Audit功能审计数据库的变更
2021/06/26 Java/Android
JavaScript文档对象模型DOM
2021/11/20 Javascript