当前位置:Gxlcms > JavaScript > jQuery实现文件上传进度条特效

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

时间:2021-07-01 10:21:17 帮助过:50人阅读

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

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

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

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

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

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

  1. <div class="upload-mask"></div>
  2. <div class="upload-component">
  3. <div class="upload-close">
  4. <span class="upload-close-span">关闭</span>
  5. </div>
  6. <div class="upload-content">
  7. <div class="progress">
  8. <span class="upload-text"></span>
  9. <span class="uploaded"></span>
  10. </div>
  11. <div class="confirm-cancel">
  12. <span class="confirm">确认</span>
  13. <span class="cancel">取消</span>
  14. </div>
  15. </div>
  16. </div>

加点css上去:

  1. .upload-mask{
  2. position: absolute;
  3. top: 0;
  4. left: 0;
  5. z-index: 9;
  6. width: 100%;
  7. height: 100%;
  8. background-color: rgba(84,84,84,0.3);
  9. display: none;
  10. }
  11. .upload-component{
  12. position: absolute;
  13. z-index: 99;
  14. top: 50%;
  15. left: 50%;
  16. margin-left: -120px;
  17. margin-top: -60px;
  18. width: 240px;
  19. height: 120px;
  20. background-color: #FFFFFF;
  21. display:none;
  22. }
  23. .upload-close{
  24. position: relative;
  25. height: 30px;
  26. background-color: rgb(234,234,234);
  27. }
  28. .upload-close span{
  29. position: absolute;
  30. right: 15px;
  31. line-height: 30px;
  32. cursor: pointer;
  33. }
  34. .upload-content,.confirm-cancel{
  35. margin-top: 15px;
  36. }
  37. .progress{
  38. position:relative;
  39. width:90%;
  40. height:22px;
  41. margin-left: 4.88888%;
  42. text-align: center;
  43. line-height: 22px;
  44. /*background-color: blue;*/
  45. border:1px solid #ccc;
  46. }
  47. .upload-text{
  48. position:absolute;
  49. z-index: 99999;
  50. color:red;
  51. }
  52. .uploaded{
  53. position:absolute;
  54. left:0;
  55. z-index: 9999;
  56. width:0%;
  57. height:100%;
  58. background-color: blue;
  59. color:#FFFFFF;
  60. }
  61. .confirm-cancel span{
  62. display:inline-block;
  63. width:60px;
  64. height:30px;
  65. line-height: 30px;
  66. text-align: center;
  67. /*cursor:pointer;*/
  68. background-color:#ccc;
  69. cursor:wait;
  70. }
  71. .confirm{
  72. /*background-color: rgb(111,197,293);*/
  73. margin-left:40%;
  74. }
  75. .cancel{
  76. /*background-color: rgb(175,194,211);*/
  77. margin-left: 10px;
  78. }

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

  1. <div class="progress">
  2. <span class="upload-text"></span>
  3. <span class="uploaded"></span>
  4. </div>

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

  1. .upload-text{
  2. position:absolute;
  3. z-index: 99999;
  4. color:red;
  5. }
  6. .uploaded{
  7. position:absolute;
  8. left:0;
  9. z-index: 9999;
  10. width:0%;
  11. height:100%;
  12. background-color: blue;
  13. color:#FFFFFF;
  14. }

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

  1. // 模拟进度
  2. function progressBar() {
  3. var max = 100;
  4. var init = 0;
  5. var uploaded;
  6. var test = setInterval(function() {
  7. init += 10;
  8. uploaded = parseInt((init / max * 100)) + '%';
  9. $uploadTextSpan.text(uploaded).next().css({
  10. width:uploaded
  11. });
  12. if (init === 100) {
  13. clearInterval(test);
  14. $uploadTextSpan.text('上传完成');
  15. $('.confirm-cancel span').css({
  16. cursor:'pointer'
  17. });
  18. $('.confirm').css({
  19. backgroundColor:'rgb(111,197,293)'
  20. });
  21. $('.cancel').css({
  22. backgroundColor:'rgb(175,194,211)'
  23. })
  24. $closeConfirmCancel.on('click',closeConfirmCancel);
  25. }
  26. else {
  27. $closeConfirmCancel.off('click',closeConfirmCancel);
  28. $('.upload-close-span').on('click',function(){
  29. clearInterval(test);
  30. closeConfirmCancel();
  31. });
  32. $uploadMask.on('click',function() {
  33. clearInterval(test);
  34. closeConfirmCancel();
  35. })
  36. }
  37. },1000);
  38. }

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

人气教程排行