JavaScript百分比動態進度條
本章節分享一段程式碼例項,它實現了百分比動態進度條效果,實際應用通常需要和後臺配合使用。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> #progressBox{ width: 300px; height: 40px; border: 1px solid #c8c8c8; background: white; position: relative; } #progressBar{ position: absolute; left: 0; top: 0; z-index: 2; height: 40px; width: 100%; line-height: 40px; color: white; text-align: center; font-size: 20px; font-weight: bold; font-family: Georgia; clip: rect(0px,0px,40px,0px); background: #00A1F5; } #progressText{ position: absolute; left: 0; top: 0; z-index: 1; width: 100%; height: 40px; line-height: 40px; color: black; text-align: center; font-size: 20px; font-weight: bold; font-family: Georgia; } </style> <script> window.onload = function () { var iNow = 0; var timer = setInterval(function (argument) { if (iNow == 100) { clearInterval(timer); } else { iNow += 1; progressFn(iNow); } }, 30); function progressFn(cent) { var oDiv1 = document.getElementById('progressBox'); var oDiv2 = document.getElementById('progressBar'); var oDiv3 = document.getElementById('progressText'); var allWidth = parseInt(getStyle(oDiv1, 'width')); oDiv2.innerHTML = cent + '%'; oDiv3.innerHTML = cent + '%'; oDiv2.style.clip = 'rect(0px,' + cent / 100 * allWidth + 'px,40px,0px)'; function getStyle(obj, attr) { if (obj.currentStyle) { return obj.currentStyle[attr]; } else { return getComputedStyle(obj, false)[attr]; } } } } </script> </head> <body> <div id="progressBox"> <div id="progressBar">0%</div> <div id="progressText">0%</div> </div> </body> </html>
上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。
一.程式碼註釋:
(1).window.onload = function () {},當文件內容完全載入完畢再去執行函式中的程式碼。
(2).var iNow = 0,宣告一個變數並賦值為0,用來作為百分比的數字。
(3).var timer = setInterval(function (argument) {
if (iNow == 100) {
clearInterval(timer);
} else {
iNow += 1;
progressFn(iNow);
}
}, 30),一個定時器函式,每隔30毫秒執行一次指定函式。
如果iNow值等於100,那麼就停止定時器函式的執行。
否則的話iNow值每次加1,並且呼叫progressFn(),從而實現動態百分比效果。
(4).function progressFn(cent) {},引數是一個數字。
(5).var oDiv1 = document.getElementById('progressBox');
var oDiv2 = document.getElementById('progressBar');
var oDiv3 = document.getElementById('progressText');
獲取三個元素物件。
(6).var allWidth = parseInt(getStyle(oDiv1, 'width')),獲取元素的width值。
(7).oDiv2.innerHTML = cent + '%',設定元素的內容,就是那個動態的百分比數字。
(8).oDiv3.innerHTML = cent + '%',之所以有和上面這麼重複的一步,是因為,剛開始progressBar元素的寬度是0,沒有覆蓋progressText元素,但是隨著progressBar元素寬度的增加,最終會覆蓋掉progressText元素顯示的百分比數字,兩個同時設定就能保證無論何時都能夠完整顯示百分比數字。
(9).oDiv2.style.clip = 'rect(0px,' + cent / 100 * allWidth + 'px,40px,0px)',動態設定元素的click屬性值。
(10).function getStyle(obj, attr) {},此方法可以獲取元素指定的樣式屬性值。
二.相關閱讀:
(1).setInterval()參閱setInterval()一章節。
(2).clearInterval()參閱clearInterval()一章節。
(3).parseInt()參閱javascript parseInt()一章節。
(4). innerHTML參閱innerHTML一章節。
(5).clip屬性參閱CSS3 clip一章節。
(6).getStyle()參閱js如何獲取非內部取樣式表中定義的屬性值一章節。
相關文章
- JavaScript 動態進度條效果詳解JavaScript
- Js 百分比進度條JS
- vue 自定義指令實現,滾動條百分比進度條。Vue
- YCProgress自定義百分比進度條
- 短視訊商城系統,Android進度條,自定義進度條,顯示百分比Android
- canvas百分比環形進度條程式碼Canvas
- Qt實現炫酷啟動圖-動態進度條QT
- 【新特性速遞】進度條,進度條,進度條
- JavaScript 原生實現進度條元件.mdJavaScript元件
- Qml 實現水波進度動畫條動畫
- Qt 進度條QT
- android 自定義酷炫進度條動畫Android動畫
- 【Android】自定義ProgressView-進度條動畫AndroidView動畫
- 前端學習筆記:使用canvas繪製有圓角的百分比進度條前端筆記Canvas
- HTML <progress> 進度條HTML
- wkwebView 新增 進度條WebView
- 學習進度條
- 簡單進度條
- Python進度條技巧Python
- canvas 畫進度條Canvas
- Linux 進度條(非100%)列出unzip進度Linux
- Android花樣loading進度條(三)-配文字環形進度條Android
- ProgressBar進度條顏色
- icp配準進度條
- 不可思議的純 CSS 滾動進度條效果CSS
- 可拖拽圓形進度條元件(支援移動端)元件
- Excel實現完成進度的進度條結果Excel
- canvas環形進度條效果Canvas
- 數字進度條元件NumberProgressBar元件
- 橡皮筋進度條ElasticProgressBarAST
- Python之程式碼進度條Python
- golang 進度條功能實現Golang
- psplash進度條旋轉成功
- Flutter 波浪圓形進度條Flutter
- LVGL高效顯示進度條
- Vue canvas繪製圓形進度條動畫載入VueCanvas動畫
- 前端 javascript 練習題--表格的操作及進度條的實現【千鋒】前端JavaScript
- 短視訊app開發,更改進度條的滑動速度APP