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 日期常用的方法
Nov 11 Javascript
js自执行函数的几种不同写法的比较
Aug 16 Javascript
Ext JS添加子组件的误区探讨
Jun 28 Javascript
js时间戳格式化成日期格式的多种方法
Nov 11 Javascript
js数组常见操作及数组与字符串相互转化实例详解
Nov 10 Javascript
微信小程序 wxapp导航 navigator详解
Oct 31 Javascript
微信小程序 获取相册照片实例详解
Nov 16 Javascript
jQuery实现立体式数字动态增加(animate方法)
Dec 21 Javascript
jQuery实现选中行变色效果(实例讲解)
Jul 06 jQuery
浅谈Vue SPA 首屏加载优化实践
Dec 15 Javascript
微信小程序云开发详细教程
May 16 Javascript
构建Vue大型应用的10个最佳实践(小结)
Nov 07 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
用phpmyadmin更改mysql5.0登录密码
2008/03/25 PHP
PHP 命令行参数详解及应用
2011/05/18 PHP
图解找出PHP配置文件php.ini的路径的方法
2014/08/20 PHP
thinkPHP框架整合tcpdf插件操作示例
2018/08/07 PHP
javascript 贪吃蛇实现代码
2008/11/22 Javascript
javascript学习笔记(十五) js间歇调用和超时调用
2012/06/20 Javascript
javascritp添加url参数将参数加入到url中
2014/09/25 Javascript
javascript使用smipleChart实现简单图表
2015/01/02 Javascript
JavaScript闭包详解
2015/02/02 Javascript
jQuery+ajax读取并解析XML文件的方法
2016/09/09 Javascript
微信小程序 picker 组件详解及简单实例
2017/01/10 Javascript
jquery 实现复选框的全选操作实例代码
2017/01/24 Javascript
JS实现购物车特效
2017/02/02 Javascript
angular+webpack2实战例子
2017/05/23 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
详解node服务器中打开html文件的两种方法
2017/09/18 Javascript
Vue.js与 ASP.NET Core 服务端渲染功能整合
2017/11/16 Javascript
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
JavaScript文本特效实例小结【3个示例】
2018/12/22 Javascript
vue使用代理解决请求跨域问题详解
2019/07/24 Javascript
ES5新增数组的实现方法
2020/05/12 Javascript
vue-router的hooks用法详解
2020/06/08 Javascript
python使用win32com在百度空间插入html元素示例
2014/02/20 Python
Python socket套接字实现C/S模式远程命令执行功能案例
2018/07/06 Python
分析经典Python开发工程师面试题
2019/04/08 Python
Python爬取爱奇艺电影信息代码实例
2019/11/26 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
pytorch 获取tensor维度信息示例
2020/01/03 Python
一款纯css3实现的响应式导航
2014/10/31 HTML / CSS
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
基层党员干部四风问题整改方向和措施
2014/09/25 职场文书
行政执法队伍作风整顿剖析材料
2014/10/11 职场文书
药店收银员岗位职责
2015/04/07 职场文书
2015年保卫科工作总结
2015/05/14 职场文书
电影复兴之路观后感
2015/06/02 职场文书
LyScript实现绕过反调试保护的示例详解
2022/08/14 Python