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 相关文章推荐
Discuz! 6.1_jQuery兼容问题
Sep 23 Javascript
javascript 词法作用域和闭包分析说明
Aug 12 Javascript
简单实用的js调试logger组件实现代码
Nov 20 Javascript
JavaScript简单表格编辑功能实现方法
Apr 16 Javascript
JQuery核心函数是什么及使用方法介绍
May 03 Javascript
js删除数组元素、清空数组的简单方法(必看)
Jul 27 Javascript
js基础之DOM中元素对象的属性方法详解
Oct 28 Javascript
JavaScript构建自己的对象示例
Nov 29 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
May 29 Javascript
react koa rematch 如何打造一套服务端渲染架子
Jun 26 Javascript
javascript实现弹出层效果
Dec 10 Javascript
原生js实现日期选择插件
May 21 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图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
2010/12/02 PHP
PHP函数spl_autoload_register()用法和__autoload()介绍
2012/02/04 PHP
PHP反转字符串函数strrev()函数的用法
2012/02/04 PHP
用php随机生成福彩双色球号码的2种方法
2013/02/04 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
laravel与thinkphp之间的区别与优缺点
2021/03/02 PHP
javascript 模拟点击广告
2010/01/02 Javascript
ie与ff下的event事件使用介绍
2013/11/25 Javascript
jqplot通过ajax动态画折线图的方法及思路
2013/12/08 Javascript
thinkphp 表名 大小写 窍门
2015/02/01 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
全面解析Bootstrap弹窗的实现方法
2015/12/01 Javascript
jQuery实现获取绑定自定义事件元素的方法
2015/12/02 Javascript
jQuery语法小结(超实用)
2015/12/31 Javascript
js 将input框中的输入自动转化成半角大写(税号输入框)
2017/02/16 Javascript
微信小程序 聊天室简单实现
2017/04/19 Javascript
深入理解react-router@4.0 使用和源码解析
2017/05/23 Javascript
JS仿淘宝搜索框用户输入事件的实现
2017/06/19 Javascript
微信小程序 检查接口状态实例详解
2017/06/23 Javascript
简单的vuex 的使用案例笔记
2018/04/13 Javascript
Vue js 的生命周期(看了就懂)(推荐)
2019/03/29 Javascript
Vue函数式组件-你值得拥有
2019/05/09 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
vue实现数字动态翻牌的效果(开箱即用)
2019/12/08 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
js实现日历
2020/11/07 Javascript
tornado框架blog模块分析与使用
2013/11/21 Python
Python3.2中Print函数用法实例详解
2015/05/19 Python
python3实现的zip格式压缩文件夹操作示例
2019/08/17 Python
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
Ted Baker美国官网:英国时尚品牌
2018/10/29 全球购物
澳大利亚最大的在线美发和美容零售商之一:My Hair Care & Beauty
2019/08/24 全球购物
教师师德承诺书
2014/03/26 职场文书
2014年校长工作总结
2014/12/11 职场文书
检讨书格式
2019/04/25 职场文书
制定企业培训计划的五大要点!
2019/07/10 职场文书