亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Javascript+CSS3實現進度條效果

2019-11-20 08:38:27
字體:
來源:轉載
供稿:網友

進度條在很多web中都能用的到,本文就是介紹了進度條效果,具體代碼如下:

一:css2 屬性clip實現網頁進度條;

在實現之前,我們先來介紹一下clip屬性,因為這個屬性在css2.1中很少使用到,所以我們有必要來了解一下;

瀏覽器支持程度:所有主流瀏覽器都支持 clip 屬性。

Clip屬性在w3c官網是這樣描述的:通過對元素進行裁剪來控制元素的可視區域,默認情況下 元素是不進行任何裁剪的。

Clip裁剪的語法如下:

 .xx {clip:rect(<top>, <right>, <bottom>, <left>)}

Rect屬性需要四個值,top,right,bottom,left;他們之間需要使用逗號隔開。遵循順時針旋轉規則,和我們的css中的margin,padding書寫順序一樣的。

在css2.1中,rect()的<top>,<bottom>指定偏移量是從元素的盒子頂部邊緣算起的,<left>,<right>指定的偏移量是從元素的盒子左邊邊緣算起的。如下:

我們可以再來看一個簡單的demo,

如下css

p#one { clip: rect(5px, 40px, 45px, 5px); }

p#two { clip: rect(5px, 55px, 45px, 5px); }

上面的例子是在50X55px的長方形盒子中是行剪切,得到虛線的長方形:

如下圖:

我們現在可以先來看一個進度條的demo;

HTML代碼如下:

<h2>使用clip實現裁剪demo</h2><div id="progress-box" class="progress-box">  <div id="progress-bar" class="progress-bar"></div>  <div id="progress-text" class="progress-text">0%</div></div>

CSS代碼如下:

.progress-box{position:absolute;left:0;width:300px;height:60px;border:1px solid #000;margin-left:20px;}.progress-bar{position:absolute;left:0;top:0;width:300px;height:60px;clip:rect(0px,0px,60px,0px);background:red;}.progress-text{position:absolute;left:0;top:0;width:300px;height:60px;color:Black;text-align:center; line-height:60px; font-family:Georgia;font-size:2em;font-weight:bold;}

這里需要解釋一下上面的HTML3個div,一個是元素容器(progress-box)基本就是想突出邊框,讓用戶知道100%應該是有多長的容量,

第二個progress-bar是表示不斷變化的元素背景色設置為紅色,

第三個是表示進度顯示的數值文本。

為了演示效果,我們需要一個簡單的JS中的setInterval代碼來演示進度條的效果;如下setInterval的代碼;

var bar = document.getElementById("progress-bar"),   text = document.getElementById("progress-text");var cent = 0,   max = 300;var timer = setInterval(progressFn, 30);function progressFn() {  if(cent > max) {    cent = 0;    timer = setInterval(arguments.callee(), 30);  }else {    bar.style.clip = "rect(0px," + cent + "px,60px,0px)";    text.innerHTML = Math.ceil((cent / max) * 100) + "%";    cent++;  }}

demo如下效果;使用clip實現裁剪demo

二:使用進度事件(progress)與服務器端交互 來實現網頁進度條;

進度事件(progress) : 定義了與客戶端服務器通信有關的事件,有以下6個進度事件。

  1. loadstart:在接收到相應數據的第一個字節時觸發。
  2. progress:在接收相應期間持續不斷觸發。
  3. error:在請求發生錯誤時觸發。
  4. abort:在因為調用abort()方法而終止鏈接時觸發。
  5. load:在接收到完整的相應數據時觸發。
  6. loadend:在通信完成或者觸發error、abort或load事件后觸發。

每個請求不對觸發Loadstart事件開始,接下來是一或多個progress事件,然后觸發error、abort或load事件中的一個,最后以觸發loadend事件結束。

支持前5個事件的瀏覽器有Firefox 3.5+、Safari 4+、Chrome、iOS版Safari和Android版WebKit。

這個事件會在瀏覽器接收新數據期間周期性地觸發。而onprogress事件處理程序會接收到一個event對象,其target屬性是XHR對象,但包含著三個額外的屬性:lengthComputable、position和totalSize。其中,lengthComputable是一個表示進度信息是否可用的布爾值,position表示已經接收的字節數,totalSize表示根據Content-Length相應頭部確定的預期字節數。有了這些信息,我們就可以為用戶創建一個進度指示器了。如下截圖有上面介紹的三個參數;

HTML代碼如下:

<h2>使用clip實現裁剪demo</h2><div id="progress-box" class="progress-box">  <div id="progress-bar" class="progress-bar"></div>  <div id="progress-text" class="progress-text">0%</div></div><div id="status"></div>

與服務器端交互的代碼如下:

var divbar = document.getElementById("progress-bar"),  divText = document.getElementById("progress-text");var cent = 0,  max = 300;function createXHR(){   var xhr;   if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari     xhr=new XMLHttpRequest();   }else{ // code for IE6, IE5     xhr=new ActiveXObject("Microsoft.XMLHTTP");   }   return xhr; } var xhr = createXHR(); xhr.onload = function() {  if((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) {     alert(xhr.responseText);  }else {     alert("Request was unsuccessful: " + xhr.status);  } } xhr.onprogress = function(event) {  var divStatus = document.getElementById("status");  if (event.lengthComputable) {      divStatus.innerHTML = "Recived" + event.position + " of " + event.totalSize + " bytes";      console.log(event.target);      var percentComplete = Math.round(event.loaded / event.total);      // 其中的event.loaded表示當前加載了多少字節流,而event.total表示總共有多少字節流 得到這樣一個百分比,      console.log(event.loaded, event.total, 300 * percentComplete);      progressFn(300 * percentComplete, max);   } }     xhr.open("get", "progress.php", true); xhr.send(null);  function progressFn(cent,max) {   if (cent < max) {     divbar.style.clip = "rect(0px," + cent + "px,60px,0px)";     divText.innerHTML = Math.ceil((cent / max) * 100) + "%";   }  }

PHP代碼 為了隨便模擬下 隨便寫一個,當然在實際使用上肯定不是這樣的哦!我只是輸出一個內容而已;

<?php  header("Content-Type: text/plain");  header("Content-Length: 27");  echo "Some data";  flush();  echo "Some data";  flush();  echo "Some data";  flush();?>

三: CSS3 動畫及線性漸變實現進度條demo;

HTML代碼如下:

<div id="loading-status">  <div id="process"></div></div>

CSS代碼如下:

#loading-status {width:300px;border:1px solid #669CB8;-webkit-box-shadow: 0px 2px 2px #D0D4D6; -moz-box-shadow:0px 2px 2px #D0D4D6;border-radius: 10px;height:20px;padding: 1px;}#process {width: 80%;height: 100%;border-radius: 10px;background: -webkit-gradient(linear, 0 0, 0 100%, from(#7BC3FF), color-stop(0.5,#42A9FF), to(#7BC3FF));-webkit-animation: load 3s ease-out infinite;}@-webkit-keyframes load {  0% {    width: 0%;        }  100% {    width: 80%;      }}

效果如下:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品免费网站| 国产欧美日韩综合精品| 91视频国产精品| 久久免费高清视频| 奇米四色中文综合久久| 91精品免费久久久久久久久| 欧美人交a欧美精品| 欧美专区第一页| 97碰碰碰免费色视频| 国产福利精品av综合导导航| 国产精品海角社区在线观看| 亚洲аv电影天堂网| 亚洲成人aaa| 96精品久久久久中文字幕| 亚洲精品99久久久久| 黑人精品xxx一区一二区| 欧美日韩成人黄色| 久久精品视频导航| 国产精品久久久久福利| 92裸体在线视频网站| 激情懂色av一区av二区av| 97国产精品久久| 国产精品视频成人| 国产69精品久久久久9999| 欧美成在线观看| 98午夜经典影视| 午夜免费久久久久| 97在线视频免费播放| 91免费在线视频网站| 国产精品精品视频一区二区三区| 久久成人综合视频| 国产精品久久久久一区二区| 国产亚洲欧美日韩精品| 色综合导航网站| 亚洲成年人在线播放| 亚洲图片欧美午夜| 国产亚洲一区精品| 精品久久久久久久久久久久久久| 色琪琪综合男人的天堂aⅴ视频| 一区国产精品视频| 成人国产精品一区| 成人精品视频在线| 日韩天堂在线视频| 亚洲激情在线观看视频免费| 欧美高清一级大片| 久久99国产综合精品女同| 亚洲第一网站免费视频| 国产精品老女人视频| 成人在线视频福利| 日韩精品在线影院| xxx欧美精品| 成人在线中文字幕| 精品丝袜一区二区三区| 国产一区二区三区在线免费观看| 欧美激情视频播放| 精品国内自产拍在线观看| 91视频国产高清| 亚洲欧洲日本专区| 日韩精品在线观看网站| 亚洲一区亚洲二区亚洲三区| 久久综合亚洲社区| 欧美日韩在线视频观看| 国产精品人人做人人爽| 中文字幕av一区二区三区谷原希美| 日韩激情av在线播放| 久久精品国产久精国产思思| 国产日韩欧美91| 日本欧美精品在线| 日韩毛片中文字幕| 亚洲电影免费观看| 国产精品v片在线观看不卡| 亚洲午夜未满十八勿入免费观看全集| 亚洲成人久久一区| 91av在线免费观看视频| 欧美性精品220| 全球成人中文在线| 亚洲精品国产拍免费91在线| 欧美日韩国产一区二区三区| 精品亚洲aⅴ在线观看| 国产精品日韩电影| 美女啪啪无遮挡免费久久网站| 国产精品爽爽爽| 国产噜噜噜噜久久久久久久久| 欧美一级片一区| 一区二区在线视频播放| 91精品国产色综合久久不卡98| 欧美另类老女人| 欧美精品少妇videofree| 精品网站999www| 日韩av日韩在线观看| 亚洲欧美一区二区三区四区| 九色成人免费视频| 国产高清视频一区三区| 欧美激情xxxx性bbbb| 久久久久久伊人| 成人精品网站在线观看| 欧美日韩激情网| 亚洲一区二区日本| 韩剧1988免费观看全集| 国产精品9999| 国内揄拍国内精品| 亚洲欧洲自拍偷拍| 国产aⅴ夜夜欢一区二区三区| 国产区精品在线观看| 全亚洲最色的网站在线观看| 国产精品大陆在线观看| 26uuu国产精品视频| 疯狂做受xxxx高潮欧美日本| 欧美电影院免费观看| 国产精品久久999| 97国产suv精品一区二区62| 国产成人精品综合久久久| 日韩国产欧美区| 日韩免费观看在线观看| 91美女福利视频高清| 777国产偷窥盗摄精品视频| 欧美xxxx做受欧美.88| 亚洲国产精品人人爽夜夜爽| 日本成人免费在线| 最近2019年手机中文字幕| 原创国产精品91| 久久亚洲精品国产亚洲老地址| 日韩激情第一页| 日本精品久久电影| 久久露脸国产精品| 欧美高清电影在线看| 成人精品一区二区三区| 国产成人拍精品视频午夜网站| 欧美成人黑人xx视频免费观看| 亚洲国内精品视频| 一区二区在线视频播放| 亚洲一区二区免费在线| 91免费版网站入口| 久久精品91久久香蕉加勒比| 久久久精品日本| 久热国产精品视频| 日韩最新中文字幕电影免费看| 日韩电影第一页| 国产精品黄色av| 亚洲天堂男人天堂女人天堂| 国内精品视频一区| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲国产成人精品久久| 日韩欧美亚洲范冰冰与中字| 亚洲成成品网站| 91精品在线观看视频| 亚洲精品日韩av| 亚洲欧美在线一区二区| 中文字幕欧美在线| 国语自产精品视频在线看抢先版图片| 中文字幕日韩综合av| 亚洲人成网站免费播放| 欧美做受高潮1| 69久久夜色精品国产7777| 欧美乱大交xxxxx| 欧美日韩福利在线观看| 国产成人高清激情视频在线观看| 欧美一区二区三区四区在线| 国产精品无码专区在线观看| 国产精品亚洲美女av网站| 日韩电视剧在线观看免费网站| 国产女人精品视频| 亚洲精品久久久久久久久久久久久| 成人免费网视频|