日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

html进度条实现方案,两种进度条实现方案的对比

發(fā)布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 html进度条实现方案,两种进度条实现方案的对比 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

html沒有專門的進度條控件,要顯示出進度條的效果,必須要進行自定義。同行的方法是,用兩個元素進行疊加(兩元素關(guān)系為兄弟或者父子關(guān)系),兩元素高度保持一致,其中一個作為背景,長度不變,另一個放置在前面,而長度可變,從而實現(xiàn)進度條的效果。

可以參看如下效果圖:

一般進度條效果.png

其實現(xiàn)代碼如下:

.progress {

height: 16px;

width: 110px;

border-radius: 8px;

position: relative;

background-color: #d9d9d9;

display: inline-block;

top: 1px;

}

.progress-text {

font-size: 12px;

font-weight: normal;

line-height: 16px;

color: white;

text-align: center;

position: absolute;

top: 0;

left: 0;

width: 100%;

}

.progress .loading {

height: 16px;

width: 100%;

border-radius: 8px;

position: absolute;

top: 0;

left: 0;

background-color: #12b7f5;

-webkit-transition: -webkit-transform .1s;

transition: -webkit-transform .1s;

transition: transform .1s;

transition: transform .1s,-webkit-transform .1s;

}

0B/100MB

var maxSize = 100;//最大值設(shè)置為100M

function setProgress(size){

var progress = document.getElementById("capacity_progress");

var value = ((size/1024/1024)/maxSize)*progress.parentNode.clientWidth;

progress.style.width = value+'px';

$(".progress-text").text(convertSizeToStr(size)+'/'+maxSize+"MB");

}

function convertSizeToStr(size){

if(size > 1048576){

return (size/1048576).toFixed(2)+'MB';

}

else if(size > 1024){

return (size/1024).toFixed(1)+'KB';

}

else{

return size+'B';

}

}

window.onload = function (){

setProgress(50*1024*1024);//設(shè)置大小為50M

};

由程序和圖我們可以知道進度條設(shè)置的大小為50M也就是進度為50%時的效果,當我們講設(shè)置參數(shù)改為5M時,顯示效果會如何呢?

進度條效果(二).png

效果圖的顯示,并不理想,進度條與圓角背景形狀上明顯不一致。也就是說當進度條短到一定層度時,圓角的形狀會不如預(yù)期的好,由CSS的設(shè)置可知,進度條的高度固定,長度過短,甚至小于圓角半徑,形狀顯示出現(xiàn)錯誤。我們希望看到的是類似于一個垂直放置的樹葉的形狀,由兩條弧形邊界組成。然而直接使用傳統(tǒng)的HTML元素似乎很難做到。

HTML5 為我們提供了一種解決方案,就是使用SVG來繪制內(nèi)部進度條,實現(xiàn)方案很簡單,替換部分代碼即可。

.progress {

height: 16px;

width: 110px;

border-radius: 8px;

position: relative;

background-color: #d9d9d9;

display: inline-block;

top: 1px;

}

.progress-text {

font-size: 12px;

font-weight: normal;

line-height: 16px;

color: white;

text-align: center;

position: absolute;

top: 0;

left: 0;

width: 100%;

}

.progress .loading {

height: 16px;

width: 100%;

border-radius: 8px;

position: absolute;

top: 0;

left: 0;

background-color: transparent; //此處顏色換成透明或者背景色#d9d9d9

-webkit-transition: -webkit-transform .1s;

transition: -webkit-transform .1s;

transition: transform .1s;

transition: transform .1s,-webkit-transform .1s;

}

0B/100MB

var maxSize = 100;//最大值設(shè)置為100M

function setProgress(size){

var progress = document.getElementById("capacity_progress");

var value = ((size/1024/1024)/maxSize)*progress.parentNode.clientWidth;

progress.setAttribute('width',value);

$(".progress-text").text(convertSizeToStr(size)+'/'+maxSize+"MB");

}

function convertSizeToStr(size){

if(size > 1048576){

return (size/1048576).toFixed(2)+'MB';

}

else if(size > 1024){

return (size/1024).toFixed(1)+'KB';

}

else{

return size+'B';

}

}

window.onload = function (){

setProgress(5*1024*1024);//設(shè)置大小為5M

};

換用svg后的效果圖如下:

進度條效果(三).png

svg是html5開始支持的一種圖形功能,其繪圖功能非常強大,這里只是其最簡單的一種應(yīng)用,例如我們熟知的繪制圖表的庫HighCharts就是基于svg的,現(xiàn)在正在學(xué)習(xí)階段,以后有機會會做更多的介紹。

總結(jié)

以上是生活随笔為你收集整理的html进度条实现方案,两种进度条实现方案的对比的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。