jQuery实现文件上传进度条特效


Posted in Javascript onAugust 12, 2015

上传进度条通常是由前面jquery加后端了脚本器脚本来实现了,今天我们介绍的是一款基本php+jQuery实现文件上传进度条效果的例子,具体细节如下。

最近呢,一个项目做一个进度条的效果出来,这个之前还真没做过。刚好这周没什么东西了,就拿这个来充一下数吧。

文件上传,得先准备一个“按钮”:

jQuery实现文件上传进度条特效

这个看上去还是不错的吧,实现也是很简单的:

<span class="upload-span">开始上传文件</span>
<button>太丑了,就用span来做了,可控性强。添加点css:
.upload-span{
  display: inline-block;
  width: 120px;
  height: 40px;
  color: #FFFFFF;
  text-align: center;
  line-height: 40px;
  background-color: blue;
  border: 2px solid blue;
  border-radius:5px;
  cursor: pointer;
  letter-spacing: 2px;
}

当点击就会触发上传效果,之后添加事件。
逼真一点,得再加一个遮罩和一个显示进度条的控件,点击span后,效果大概是这样子的:

jQuery实现文件上传进度条特效

<div class="upload-mask"></div>
  <div class="upload-component">
    <div class="upload-close">
      <span class="upload-close-span">关闭</span>
    </div>
    <div class="upload-content">
      <div class="progress">
        <span class="upload-text"></span>
        <span class="uploaded"></span>
      </div>
      <div class="confirm-cancel">
        <span class="confirm">确认</span>
        <span class="cancel">取消</span>
      </div>
    </div>
  </div>

加点css上去:

.upload-mask{
  position: absolute;
  top: 0;
  left: 0;
  z-index: 9;
  width: 100%;
  height: 100%;
  background-color: rgba(84,84,84,0.3);
  display: none;
}
.upload-component{
  position: absolute;
  z-index: 99;
  top: 50%;
  left: 50%;
  margin-left: -120px;
  margin-top: -60px;
  width: 240px;
  height: 120px;
  background-color: #FFFFFF;
  display:none;
}
.upload-close{
  position: relative;
  height: 30px;
  background-color: rgb(234,234,234);
}
.upload-close span{
  position: absolute;
  right: 15px;
  line-height: 30px;
  cursor: pointer;
}
.upload-content,.confirm-cancel{
  margin-top: 15px;
}
.progress{
  position:relative;
  width:90%;
  height:22px;
  margin-left: 4.88888%;
  text-align: center;
  line-height: 22px;
  /*background-color: blue;*/
  border:1px solid #ccc;
}
.upload-text{
  position:absolute;
  z-index: 99999;
  color:red;
}
.uploaded{
  position:absolute;
  left:0;
  z-index: 9999;
  width:0%;
  height:100%;
  background-color: blue;
  color:#FFFFFF;
}
.confirm-cancel span{
  display:inline-block;
  width:60px;
  height:30px;
  line-height: 30px;
  text-align: center;
  /*cursor:pointer;*/
  background-color:#ccc;
  cursor:wait;
}
.confirm{
  /*background-color: rgb(111,197,293);*/
  margin-left:40%;
}
.cancel{
  /*background-color: rgb(175,194,211);*/
  margin-left: 10px;
}

为了模拟进度的显示,在这里用了两个span:

<div class="progress">
  <span class="upload-text"></span>
  <span class="uploaded"></span>
</div>

上面一个是用来显示百分比的,下面一个用来填色的:

.upload-text{
  position:absolute;
  z-index: 99999;
  color:red;
}
.uploaded{
  position:absolute;
  left:0;
  z-index: 9999;
  width:0%;
  height:100%;
  background-color: blue;
  color:#FFFFFF;
}

为了逼真,给填色的span设置背景色,其宽度就是进度的百分比,最后就用js来模拟进度的变化了:

// 模拟进度
  function progressBar() {
    var max = 100;
    var init = 0;
    var uploaded;
    var test = setInterval(function() {
      init += 10;
      uploaded = parseInt((init / max * 100)) + '%';
      $uploadTextSpan.text(uploaded).next().css({
  width:uploaded
  });
  if (init === 100) {
  clearInterval(test);
  $uploadTextSpan.text('上传完成');
  $('.confirm-cancel span').css({
   cursor:'pointer'
  });
  $('.confirm').css({
   backgroundColor:'rgb(111,197,293)'
  });
  $('.cancel').css({
   backgroundColor:'rgb(175,194,211)'
  })
  $closeConfirmCancel.on('click',closeConfirmCancel);
  } 
  else { 
  $closeConfirmCancel.off('click',closeConfirmCancel);
  $('.upload-close-span').on('click',function(){
   clearInterval(test);
   closeConfirmCancel();
  });
  $uploadMask.on('click',function() {
          clearInterval(test);
          closeConfirmCancel();
        })
      }
    },1000);
  }

JQuery实现文件上传进度条,能显示上传的百分比等信息,内容就到这里了,希望大家能够喜欢。

Javascript 相关文章推荐
JS实现浏览器菜单命令
Sep 05 Javascript
传递参数的标准方法(jQuery.ajax)
Nov 19 Javascript
jQuery 树形结构的选择器
Feb 15 Javascript
JavaScript实现页面滚动图片加载(仿lazyload效果)
Jul 22 Javascript
js数组的基本操作(很全自己整理的)
Oct 16 Javascript
javascript中键盘事件用法实例分析
Jan 30 Javascript
JavaScript File分段上传
Mar 10 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
Oct 14 Javascript
bootstrap datetimepicker 日期插件在火狐下出现一条报错信息的原因分析及解决办法
Mar 08 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
Jul 26 Javascript
利用jsonp解决js读取本地json跨域的问题
Dec 11 Javascript
Vue SPA 初次进入加载动画实现代码
Nov 14 Javascript
XML文件转化成NSData对象的方法
Aug 12 #Javascript
javascript实现点击单选按钮链接转向对应网址的方法
Aug 12 #Javascript
jQuery实现动态添加和删除一个div
Aug 12 #Javascript
JavaScript多线程详解
Aug 12 #Javascript
javascript实现在下拉列表中显示多级树形菜单的方法
Aug 12 #Javascript
JavaScript实现同一页面内两个表单互相传值的方法
Aug 12 #Javascript
JavaScript实现点击单选按钮改变输入框中文本域内容的方法
Aug 12 #Javascript
You might like
php下的权限算法的实现
2007/04/28 PHP
PHP 微信支付类 demo
2015/11/30 PHP
javascript 数组排序函数
2009/08/20 Javascript
jqgrid 简单学习笔记
2011/05/03 Javascript
深入理解JavaScript是如何实现继承的
2013/12/12 Javascript
JQUERY 设置SELECT选中项代码
2014/02/07 Javascript
微信JS接口汇总及使用详解
2015/01/09 Javascript
JavaScript实现的浮动层框架用法实例分析
2015/10/10 Javascript
JavaScript实现的伸展收缩型菜单代码
2015/10/14 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
JS操作JSON方法总结(推荐)
2016/06/14 Javascript
微信小程序 删除项目工程实现步骤
2016/11/10 Javascript
浅谈jquery拼接字符串效率比较高的方法
2017/02/22 Javascript
Angular.js组件之input mask对input输入进行格式化详解
2017/07/10 Javascript
React Native 图片查看组件的方法
2018/03/01 Javascript
jsonp跨域及实现百度首页联想功能的方法
2018/08/30 Javascript
百度小程序自定义通用toast组件
2019/07/17 Javascript
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
2020/02/09 Javascript
html+vue.js 实现漂亮分页功能可兼容IE
2020/11/07 Javascript
Python实现的简单hangman游戏实例
2015/06/28 Python
Go语言基于Socket编写服务器端与客户端通信的实例
2016/02/19 Python
Python实现计算字符串中出现次数最多的字符示例
2019/01/21 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
2019/08/27 Python
Django中F函数的使用示例代码详解
2020/07/06 Python
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
护士辞职信范文
2014/01/19 职场文书
车间主任岗位职责
2014/03/16 职场文书
读书活动总结范文
2014/04/26 职场文书
环保志愿者活动方案
2014/08/14 职场文书
学位证书委托书
2014/09/30 职场文书
大学生社会实践感想
2015/08/11 职场文书
golang http使用踩过的坑与填坑指南
2021/04/27 Golang
python使用pywinauto驱动微信客户端实现公众号爬虫
2021/05/19 Python
Java 在生活中的 10 大应用
2021/11/02 Java/Android
Android实现获取短信验证码并自动填充
2023/05/21 Java/Android