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 void(0)的妙用
Oct 21 Javascript
基于jQuery的左右滚动实现代码
Dec 03 Javascript
Js动态添加复选框Checkbox的实例方法
Apr 08 Javascript
jquery 实现密码框的显示与隐藏示例代码
Sep 18 Javascript
js返回顶部实例分享
Dec 21 Javascript
JQuery EasyUI的一些常用组件
Jul 12 jQuery
js精确的加减乘除实例
Nov 14 Javascript
JavaScript设计模式之职责链模式应用示例
Aug 07 Javascript
Vue封装的可编辑表格插件方法
Aug 28 Javascript
JS实现checkbox互斥(单选)功能示例
May 04 Javascript
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
Nov 05 Javascript
Js代码中的span拼接问题解决
Nov 22 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
教你如何使用php session
2013/10/28 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
linux下为php添加iconv模块的方法
2016/02/28 PHP
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
Js与下拉列表处理问题解决
2014/02/13 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
JavaScript访问字符串中单个字符的两种方法
2015/07/03 Javascript
纯JS实现可拖拽表单的简单实例
2016/09/02 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
详解JavaScript数组过滤相同元素的5种方法
2017/05/23 Javascript
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
vue的事件绑定与方法详解
2017/08/16 Javascript
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
2017/09/28 Javascript
详解vue+css3做交互特效的方法
2017/11/20 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
深入了解响应式React Native Echarts组件
2019/05/29 Javascript
简单了解JavaScript中的执行上下文和堆栈
2019/06/24 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
2019/07/25 Javascript
js中调用微信的扫描二维码功能的实现代码
2020/04/11 Javascript
es6数组的flat(),flatMap()函数用法实例分析
2020/04/18 Javascript
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
2017/07/12 Python
在Pycharm中调试Django项目程序的操作方法
2019/07/17 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
opencv 查找连通区域 最大面积实例
2020/06/04 Python
python使用自定义钉钉机器人的示例代码
2020/06/24 Python
numpy实现RNN原理实现
2021/03/02 Python
俄罗斯香水和化妆品购物网站:Л’Этуаль
2018/05/10 全球购物
斯洛伐克电子产品购物网站:DATART
2020/04/05 全球购物
JD Sports丹麦:英国领先的运动时尚零售商
2020/11/24 全球购物
一套C++笔试题面试题
2012/06/06 面试题
打架检讨书2000字
2014/02/22 职场文书
酒店行政人事部经理职务说明书
2014/02/26 职场文书
旅游市场营销方案
2014/03/09 职场文书
企业年检委托书范本
2014/10/14 职场文书
幼儿园安全工作总结2015
2015/04/20 职场文书
Spring Boot两种全局配置和两种注解的操作方法
2021/06/29 Java/Android