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中:表达式和语句的区别[译]
Sep 17 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
Dec 22 Javascript
JS修改地址栏参数实例代码
Jun 14 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
Jul 28 Javascript
JS简单实现无缝滚动效果实例
Aug 24 Javascript
jQuery中的deferred对象和extend方法详解
May 08 jQuery
在vue中封装可复用的组件方法
Mar 01 Javascript
Angular5中提取公共组件之radio list的实例代码
Jul 10 Javascript
基于JavaScript实现瀑布流布局
Aug 15 Javascript
详解在Node.js中发起HTTP请求的5种方法
Jan 10 Javascript
layui点击弹框页面 表单请求的方法
Sep 21 Javascript
vue+iview使用树形控件的具体使用
Nov 02 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发电子邮件
2006/10/09 PHP
使用php记录用户通过搜索引擎进网站的关键词
2014/02/13 PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
2014/05/08 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
jQuery Validate表单验证深入学习
2015/12/18 Javascript
很全面的JavaScript常用功能汇总集合
2016/01/22 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
2016/08/24 Javascript
深入理解jQuery3.0的domManip函数
2016/09/01 Javascript
JS字符串按逗号和回车分隔的方法
2017/04/25 Javascript
Vue 实现列表动态添加和删除的两种方法小结
2018/09/07 Javascript
JS温故而知新之变量提升和时间死区
2019/01/27 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
微信小程序实现图片选择并预览功能
2019/07/25 Javascript
vue.js循环radio的实例
2019/11/07 Javascript
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
2020/12/04 Vue.js
python代码过长的换行方法
2018/07/19 Python
python3实现往mysql中插入datetime类型的数据
2020/03/02 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
python 使用elasticsearch 实现翻页的三种方式
2020/07/31 Python
李维斯法国官网:Levi’s法国
2019/07/13 全球购物
俄罗斯游戏商店:Buka
2020/03/01 全球购物
代码中finally中的代码会不会执行
2012/02/06 面试题
销售人员中英文自荐信
2013/09/22 职场文书
高三自我鉴定怎么写
2013/10/19 职场文书
专科毕业生学习生活的自我评价
2013/10/26 职场文书
安全员岗位职责
2013/11/11 职场文书
入党申请人的自我鉴定
2013/12/01 职场文书
高中运动会广播稿
2014/09/16 职场文书
初婚未育证明样本
2014/10/24 职场文书
高考作弊检讨书1500字
2015/02/16 职场文书
python基础学习之递归函数知识总结
2021/05/26 Python
详解PyTorch模型保存与加载
2022/04/28 Python
tomcat下部署jenkins的方法
2022/05/06 Servers
MySQL添加索引特点及优化问题
2022/07/23 MySQL