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 相关文章推荐
javascript淡入淡出效果的实现思路
Mar 31 Javascript
JS小游戏之象棋暗棋源码详解
Sep 25 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
Apr 11 jQuery
纯JS实现简单的日历
Jun 26 Javascript
BootStrap TreeView使用实例详解
Nov 01 Javascript
详解node.js 下载图片的 2 种方式
Mar 02 Javascript
详解JavaScript中的强制类型转换
Apr 15 Javascript
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
May 17 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
Nov 23 Javascript
jquery实现直播弹幕效果
Nov 28 jQuery
JavaScript正则表达式验证登录实例
Mar 18 Javascript
JavaScript类的继承多种实现方法
May 30 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连接mssql:pdo odbc sql server
2011/07/20 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
2013/01/06 PHP
php发送post请求函数分享
2014/03/06 PHP
php实现二进制和文本相互转换的方法
2015/04/18 PHP
10个php函数实用却不常见
2015/10/13 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
Js 获取Gridview选中行的内容操作步骤
2013/02/05 Javascript
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
extjs render 用法介绍
2013/09/11 Javascript
JQuery加载图片自适应固定大小的DIV
2013/09/12 Javascript
jquery+easeing实现仿flash的载入动画
2015/03/10 Javascript
jquery Easyui快速开发总结
2015/08/20 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
express文件上传中间件Multer详解
2016/10/24 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
2016/11/21 Javascript
JS正则截取两个字符串之间及字符串前后内容的方法
2017/01/06 Javascript
babel基本使用详解
2017/02/17 Javascript
jQuery时间戳和日期相互转换操作示例
2018/12/07 jQuery
Vue实现导航栏的显示开关控制
2019/11/01 Javascript
react国际化化插件react-i18n-auto使用详解
2020/03/31 Javascript
从零学python系列之数据处理编程实例(一)
2014/05/22 Python
分析Python编程时利用wxPython来支持多线程的方法
2015/04/07 Python
Python 监测文件是否更新的方法
2019/06/10 Python
python3 deque 双向队列创建与使用方法分析
2020/03/24 Python
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
全球游戏Keys和卡片市场:GamesDeal
2018/03/28 全球购物
就业推荐表自我鉴定
2013/10/29 职场文书
如何写好自荐信
2014/04/07 职场文书
小学感恩教育活动总结
2014/07/07 职场文书
学生党员一帮一活动总结
2014/07/08 职场文书
安全生产月宣传标语
2014/10/06 职场文书
学习三严三实心得体会
2014/10/13 职场文书
消防安全月活动总结
2015/05/08 职场文书
2015年城市管理工作总结
2015/05/23 职场文书
2019年中学生的思想品德评语集锦
2019/12/19 职场文书
python cv2图像质量压缩的算法示例
2021/06/04 Python