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的IE和Firefox兼容性集锦
Dec 11 Javascript
自适应高度框架 ----属个人收藏内容
Jan 22 Javascript
关于jQuery参考实例 1.0 jQuery的哲学
Apr 07 Javascript
基于js disabled=&quot;false&quot;不起作用的解决办法
Jun 26 Javascript
ExtJs动态生成treepanel的Json格式
Jul 19 Javascript
mvc中form表单提交的三种方式(推荐)
Aug 10 Javascript
Bootstrap基本组件学习笔记之进度条(15)
Dec 08 Javascript
基于Node.js的WebSocket通信实现
Mar 11 Javascript
JavaScript实现打印星型金字塔功能实例分析
Sep 27 Javascript
基于vue中解决v-for使用报红并出现警告的问题
Mar 03 Javascript
jQuery+koa2实现简单的Ajax请求的示例
Mar 06 jQuery
Vue表单提交点击事件只允许点击一次的实例
Oct 23 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
global.php
2006/12/09 PHP
解析php中如何调用用户自定义函数
2013/08/06 PHP
php将csv文件导入到mysql数据库的方法
2014/12/24 PHP
CI分页类首页、尾页不显示的解决方法
2016/03/28 PHP
laravel 关联关系遍历数组的例子
2019/10/10 PHP
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
2013/04/07 Javascript
JQuery中Bind()事件用法分析
2015/05/05 Javascript
详解JavaScript中的客户端消息框架设计原理
2015/06/24 Javascript
jQuery实现的类似淘宝网站搜索框样式代码分享
2015/08/24 Javascript
学习JavaScript设计模式之迭代器模式
2016/01/19 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
2016/08/03 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
jQuery实现邮箱下拉列表自动补全功能
2016/09/08 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
解决VUEX刷新的时候出现数据消失
2017/07/03 Javascript
详解微信小程序Radio选中样式切换
2017/07/06 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
jQuery AJAX与jQuery事件的分析讲解
2019/02/18 jQuery
angular6根据environments配置文件更改开发所需要的环境的方法
2019/03/06 Javascript
ant-design-vue 实现表格内部字段验证功能
2019/12/16 Javascript
JS原型对象操作实例分析
2020/06/06 Javascript
Python文件与文件夹常见基本操作总结
2016/09/19 Python
Python创建xml文件示例
2017/03/22 Python
Python数据操作方法封装类实例
2017/06/23 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
2018/12/16 Python
python 通过文件夹导入包的操作
2020/06/01 Python
python实现图书馆抢座(自动预约)功能的示例代码
2020/09/29 Python
Python中return函数返回值实例用法
2020/11/19 Python
如何用python批量调整视频声音
2020/12/22 Python
CSS3实现缺角矩形,折角矩形以及缺角边框
2019/12/20 HTML / CSS
用HTML5制作一个简单的桌球游戏的教程
2015/05/12 HTML / CSS
世界上最好的精品店:Shoptiques
2018/02/05 全球购物
班班通校本培训方案
2014/03/12 职场文书
医院办公室主任岗位职责
2015/04/01 职场文书
淘宝客服专员岗位职责
2015/04/07 职场文书
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS