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中的isNaN函数使用说明
Nov 10 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
Jun 26 Javascript
js全选实现和判断是否有复选框选中的方法
Feb 17 Javascript
微信内置浏览器私有接口WeixinJSBridge介绍
May 25 Javascript
js显示当前日期时间和星期几
Oct 22 Javascript
一个超简单的jQuery回调函数例子(分享)
Aug 08 Javascript
原生JS实现图片网格式渐显、渐隐效果
Jun 05 Javascript
原生js获取left值和top值的三种方法
Aug 02 Javascript
微信页面弹出键盘后iframe内容变空白的解决方案
Sep 20 Javascript
微信小程序项目实践之主页tab选项实现
Jul 18 Javascript
angular 数据绑定之[]和{{}}的区别
Sep 25 Javascript
微信小程序中网络请求缓存的解决方法
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
thinkphp文件引用与分支结构用法实例
2014/11/26 PHP
在win系统安装配置 Memcached for PHP 5.3 图文教程
2015/03/03 PHP
PHP通过API获取手机号码归属地
2015/05/28 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
2007/02/15 Javascript
jQuery 三击事件实现代码
2013/09/11 Javascript
JQuery的ready函数与JS的onload的区别详解
2013/11/21 Javascript
jQuery+AJAX实现网页无刷新上传
2015/02/22 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
2015/04/03 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
微信小程序新增的拖动组件movable-view使用教程
2017/05/20 Javascript
node.js支持多用户web终端实现及安全方案
2017/11/29 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
使用webpack打包后的vue项目如何正确运行(express)
2018/10/26 Javascript
基于layui轮播图满屏是高度自适应的解决方法
2019/09/16 Javascript
微信小程序按顺序同步执行的两种方式
2019/12/20 Javascript
es6中使用map简化复杂条件判断操作实例详解
2020/02/19 Javascript
js中调用微信的扫描二维码功能的实现代码
2020/04/11 Javascript
Vue切换div显示隐藏,多选,单选代码解析
2020/07/14 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
2021/01/07 Javascript
在Python的Django框架中用流响应生成CSV文件的教程
2015/05/02 Python
python对json的相关操作实例详解
2017/01/04 Python
微信跳一跳python辅助脚本(总结)
2018/01/11 Python
python得到单词模式的示例
2018/10/15 Python
详解Python中pandas的安装操作说明(傻瓜版)
2019/04/08 Python
python3利用Socket实现通信的方法示例
2019/05/06 Python
python3多线程知识点总结
2019/09/26 Python
AE美国鹰美国官方网站:American Eagle Outfitters
2016/08/22 全球购物
世界领先的高品质定制产品平台:Zazzle
2017/07/23 全球购物
如何定义一个可复用的服务
2014/09/30 面试题
自我鉴定思想方面
2013/10/07 职场文书
简历的自我评价范文
2014/02/04 职场文书
综合测评个人总结
2015/03/03 职场文书
《从现在开始》教学反思
2016/02/16 职场文书
python文件名批量重命名脚本实例代码
2021/04/22 Python