目錄
鑰匙要點
在JavaScript中實現進度欄
>如何自定義進度欄的外觀?
>可以使用CSS自定義進度欄的外觀。您可以更改顏色,高度,寬度甚至進度條的形狀。例如,要更改顏色,您可以使用“背景色”屬性。您也可以使用“邊界 - 拉迪烏斯”屬性使進度條形圓形或圓形。請記住針對CSS中正確的類或ID以將這些更改應用於進度欄。
是的,您可以使用此進度用於多個文件上傳的欄。但是,您需要修改JavaScript代碼以處理多個文件。您可以在輸入標籤中使用“多個”屬性來選擇多個文件。然後,在您的JavaScript中,您需要循環瀏覽文件並單獨上傳它們,並為每個文件更新進度欄。
>使進度欄順利進行動畫,您可以使用CSS過渡。將“過渡”屬性添加到CSS中的進度條元素,指定過渡的屬性(例如'width'),過渡的持續時間和時序函數(例如,'lineal' ,'sibe-out-out')。
在文件上傳過程中處理錯誤可以在'錯誤'事件中完成聽眾。當上傳期間發生錯誤時,該事件將觸發。如果偵聽器,您可以向用戶顯示錯誤消息,並重置進度欄。
首頁 web前端 js教程 如何在HTML5和JavaScript中創建圖形文件上傳進度條

如何在HTML5和JavaScript中創建圖形文件上傳進度條

Feb 25, 2025 am 10:53 AM

如何在HTML5和JavaScript中創建圖形文件上傳進度條

鑰匙要點

  • >在完成時為當前進度值和值提供屬性的HTML5 Progress標籤可用於創建圖形文件上傳進度欄,儘管作者選擇使用標準P標籤來用於更多樣式選項。
  • 可以使用CSS進行進度欄的樣式,而綠色欄則作為圖形創建的寬度是進度元素的兩倍,並且在上傳成功或失敗時應用了固體色。
  • >
  • >通過修改uploadfile()函數,添加一個“進度”事件處理程序函數來計算新的背景位置,並在上傳完成時設置“成功”或“失敗”類,從而在JavaScript中實現了進度欄。
  • 在我以前的帖子中,我們發現瞭如何使用HTML5文件拖放,使用JavaScript打開文件,並使用AJAX上傳文件。在本系列的最後一部分中,我們涵蓋了該過程中最令人興奮的部分:圖形進度條! 文件上傳進度條提供了必不可少的用戶反饋,但眾所周知,它們很難實施。到現在為止。 Firefox和Chrome都支持提供進度事件處理程序的XMLHTTPRequest2對象。但是首先,讓我們考慮如何實施進度標準……
html5進度標籤

新的進度標籤提供了兩個屬性:

    值:當前的進度值
  • 最大:完成時的值
  • 該標籤在此演示中本來是理想的選擇,儘管它在Chrome中得到了支持,但它僅出現在Firefox 6中。此外,這兩個瀏覽器都沒有提供許多樣式屬性,因此我將其放下以支持標準的P標籤。這是小時候附加到Div的 具有ID“進度”。
造型進度欄

我們的p標籤將在邊界框中顯示文件名的大小為250px:

對於綠色條本身,我創建了一個圖形,其寬度是進度元素(500px)的兩倍。左250px是彩色的,右250px是透明的:
#progress p
{
	display: block;
	width: 240px;
	padding: 2px 5px;
	margin: 2px 0;
	border: 1px inset #446;
	border-radius: 5px;
}
登入後複製
登入後複製
該圖形用作進度欄的背景圖像,並定位在“ x%0”中,其中x%表示剩餘(未完成)的比例,即。 如何在HTML5和JavaScript中創建圖形文件上傳進度條
    >進度從“背景位置:100%0”開始,即剩餘100%
  • >進度以“背景位置:0%0”結束,即沒有什麼剩下的
  • “背景位置:30%0”意味著70%已經完成:
  • 如何在HTML5和JavaScript中創建圖形文件上傳進度條
當上傳成功或失敗時,通過設置類來應用純色:
#progress p
{
	display: block;
	width: 240px;
	padding: 2px 5px;
	margin: 2px 0;
	border: 1px inset #446;
	border-radius: 5px;
}
登入後複製
登入後複製

在JavaScript中實現進度欄

現在,我們可以修改我們的uploadfile()函數。遇到有效的JPG文件時,我們將新的P標籤附加到#Progress元素,然後將文件名添加為文本:
#progress p.success
{
	background: #0c0 none 0 0 no-repeat;
}

#progress p.failed
{
	background: #c00 none 0 0 no-repeat;
}
登入後複製
現在,我們需要“進度”事件處理程序功能。這將接收一個帶有.LOADAD和.TOTAL屬性的對象 - 計算新的背景問題是必要的一點數學:
// upload JPEG files
function UploadFile(file) {

	var xhr = new XMLHttpRequest();
	if (xhr.upload && file.type == "image/jpeg" && file.size <= $id("MAX_FILE_SIZE").value) {
	
		// create progress bar
		var o = $id("progress");
		var progress = o.appendChild(document.createElement("p"));
		progress.appendChild(document.createTextNode("upload " + file.name));
登入後複製
如果您熟悉Ajax,則可以認識到現有的StateChange事件處理程序。這確定了何時上傳完成並相應地設計進度欄(如果上傳成功,則將“成功”類設置):
		// progress bar
		xhr.upload.addEventListener("progress", function(e) {
			var pc = parseInt(100 - (e.loaded / e.total * 100));
			progress.style.backgroundPosition = pc + "% 0";
		}, false);
登入後複製
最後,我們像以前一樣將文件發送到我們的PHP服務器:
		// file received/failed
		xhr.onreadystatechange = function(e) {
			if (xhr.readyState == 4) {
				progress.className = (xhr.status == 200 ? "success" : "failure");
			}
		};
登入後複製
我們終於有了一個解決方案:
  1. 啟用文件拖動並滴入網頁元素
  2. >
  3. >分析和顯示在客戶端上刪除文件
  4. 異步將文件上傳到服務器
  5. 顯示上傳期間的圖形進度欄
  6. >使用漸進式增強來支持大多數瀏覽器
  7. 不需要JavaScript庫。
  8. 但是,請查看演示頁面,但是請注意,這是在沒有PHP的服務器上託管的,因此不會發生文件上傳。要測試它,請下載文件以檢查代碼並將其託管在您自己的服務器上。 希望您喜歡這個系列,並考慮文件拖放如何幫助您的Web應用程序。 如果您喜歡閱讀這篇文章,那麼您會喜歡學習;從大師那裡學習新鮮技能和技術的地方。成員可以立即訪問SitePoint的所有電子書和交互式在線課程,例如Learn HTML5。
  9. >關於HTML5 JavaScript文件上傳進度欄
的經常詢問問題(常見問題解答)

>如何自定義進度欄的外觀?

>可以使用CSS自定義進度欄的外觀。您可以更改顏色,高度,寬度甚至進度條的形狀。例如,要更改顏色,您可以使用“背景色”屬性。您也可以使用“邊界 - 拉迪烏斯”屬性使進度條形圓形或圓形。請記住針對CSS中正確的類或ID以將這些更改應用於進度欄。

我可以將此進度欄用於多個文件上傳嗎?

是的,您可以使用此進度用於多個文件上傳的欄。但是,您需要修改JavaScript代碼以處理多個文件。您可以在輸入標籤中使用“多個”屬性來選擇多個文件。然後,在您的JavaScript中,您需要循環瀏覽文件並單獨上傳它們,並為每個文件更新進度欄。

>

>如何在進度欄上顯示上傳完成的百分比? '活動聽眾。您可以通過將加載的金額除以總量並乘以100來計算百分比。然後,將此值設置為Progress Bar元素的文本內容。

為什麼我的進度欄在文件上傳期間不更新?

如果您的進度欄在文件上傳過程中沒有更新,則可能是由於幾個原因所致。一個常見的原因是“進度”事件聽眾無法正確設置。確保已將事件偵聽器添加到正確的對像中,並正確拼寫事件名稱。另外,檢查事件內部的代碼是否正確更新了進度欄的值和最大屬性。

我可以將此進度欄與其他編程語言一起使用,例如PHP或Python?是的,您可以將此進度欄與其他編程語言(如PHP或Python)一起使用。進度欄是使用HTML和JavaScript實施的,這些HTML和JavaScript是客戶端技術,可以與任何服務器端技術進行交互。您將需要在JavaScript代碼中修改AJAX請求以將文件發送到您的服務器端腳本,並且您的服務器端腳本將需要處理文件上傳並返回進度信息。

>我使Progress bar順利進行動畫?

>使進度欄順利進行動畫,您可以使用CSS過渡。將“過渡”屬性添加到CSS中的進度條元素,指定過渡的屬性(例如'width'),過渡的持續時間和時序函數(例如,'lineal' ,'sibe-out-out')。

>在文件上傳過程中如何處理錯誤?

在文件上傳過程中處理錯誤可以在'錯誤'事件中完成聽眾。當上傳期間發生錯誤時,該事件將觸發。如果偵聽器,您可以向用戶顯示錯誤消息,並重置進度欄。

我可以取消文件上傳並重置進度欄嗎?文件上傳並重置進度欄。要取消文件上傳,您可以在XMLHTTPRequest對像上調用“流產”方法。要重置進度欄,您可以將其值屬性設置為0。

>如何限制上傳的文件大小?

>限制可以在JavaScript代碼中完成的文件大小以進行上傳。在發送AJAX請求之前。您可以從文件對象的“大小”屬性中獲取文件的大小,如果超出您的限制,請顯示錯誤消息併中止上傳。

>我可以將此進度欄用於其他類型的AJAX請求,而不僅僅是文件上傳?

是的,您可以將此進度欄用於其他類型的AJAX請求,而不僅僅是文件上傳。對於任何類型的AJAX請求,“進度”事件均可觸發,而不僅僅是文件上傳。您將需要修改JavaScript代碼以發送適當的AJAX請求,並根據請求的進度更新進度欄。

以上是如何在HTML5和JavaScript中創建圖形文件上傳進度條的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1672
14
CakePHP 教程
1428
52
Laravel 教程
1332
25
PHP教程
1277
29
C# 教程
1257
24
Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

JavaScript和Web:核心功能和用例 JavaScript和Web:核心功能和用例 Apr 18, 2025 am 12:19 AM

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

JavaScript在行動中:現實世界中的示例和項目 JavaScript在行動中:現實世界中的示例和項目 Apr 19, 2025 am 12:13 AM

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

了解JavaScript引擎:實施詳細信息 了解JavaScript引擎:實施詳細信息 Apr 17, 2025 am 12:05 AM

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python vs. JavaScript:社區,圖書館和資源 Python vs. JavaScript:社區,圖書館和資源 Apr 15, 2025 am 12:16 AM

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

Python vs. JavaScript:開發環境和工具 Python vs. JavaScript:開發環境和工具 Apr 26, 2025 am 12:09 AM

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

C/C在JavaScript口譯員和編譯器中的作用 C/C在JavaScript口譯員和編譯器中的作用 Apr 20, 2025 am 12:01 AM

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

從網站到應用程序:JavaScript的不同應用 從網站到應用程序:JavaScript的不同應用 Apr 22, 2025 am 12:02 AM

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

See all articles