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 相关文章推荐
js刷新框架子页面的七种方法代码
Nov 20 Javascript
js 回车提交表单两种实现方法
Dec 31 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
Nov 13 Javascript
jQuery实现单击和鼠标感应事件
Feb 01 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
May 05 Javascript
JS 动态判断PC和手机浏览器实现代码
Sep 21 Javascript
关于js原型的面试题讲解
Sep 25 Javascript
详解vue-cli开发环境跨域问题解决方案
Jun 06 Javascript
JS实现预加载视频音频/视频获取截图(返回canvas截图)
Oct 09 Javascript
vue-cli webpack 引入jquery的方法
Jan 10 jQuery
JavaScript的词法结构精华篇
Oct 17 Javascript
jsonp跨域获取百度联想词的方法分析
May 13 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
redis 队列操作的例子(php)
2012/04/12 PHP
mysql,mysqli,PDO的各自不同介绍
2012/09/19 PHP
PHP入门经历和学习过程分享
2014/04/11 PHP
PHP邮箱验证示例教程
2016/06/01 PHP
js wmp操作代码小结(音乐连播功能)
2008/11/08 Javascript
关于锚点跳转及jQuery下相关操作与插件
2012/10/01 Javascript
YUI模块开发原理详解
2013/11/18 Javascript
自己动手手写jQuery插件总结
2015/01/20 Javascript
JavaScript如何禁止Backspace键
2015/12/02 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
jquery获取复选框的值的简单实例
2016/05/26 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
2016/07/15 Javascript
Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
2017/03/21 Javascript
原生JS实现的碰撞检测功能示例
2018/05/18 Javascript
小程序scroll-view组件实现滚动的示例代码
2018/09/20 Javascript
原生JavaScript实现的无缝滚动功能详解
2020/01/17 Javascript
[01:04:01]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第一场
2014/05/24 DOTA
使用python解析xml成对应的html示例分享
2014/04/02 Python
Python实现TCP协议下的端口映射功能的脚本程序示例
2016/06/14 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
Opencv+Python识别PCB板图片的步骤
2021/01/07 Python
python爬取抖音视频的实例分析
2021/01/19 Python
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
Michael Kors加拿大官网:购买设计师手袋、手表、鞋子、服装等
2019/03/16 全球购物
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
加拿大鞋网:Globo Shoes
2019/12/26 全球购物
使用索引(Index)有哪些需要考虑的因素
2016/10/19 面试题
晚宴邀请函范文
2014/01/15 职场文书
门诊手术室工作制度
2014/01/30 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
义诊活动总结
2015/02/04 职场文书
工会经费申请报告
2015/05/15 职场文书
阿里云Nginx配置https实现域名访问项目(图文教程)
2021/03/31 Servers
Java面试题冲刺第十六天--消息队列
2021/08/07 面试题
公历12个月名称的由来
2022/04/12 杂记