<progress>: Phần tử Chỉ báo Tiến trình

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Phần tử <progress> trong HTML hiển thị một chỉ báo cho thấy tiến độ hoàn thành của một tác vụ, thường được hiển thị dưới dạng thanh tiến trình.

Try it

<label for="file">File progress:</label>

<progress id="file" max="100" value="70">70%</progress>
label {
  padding-right: 10px;
  font-size: 1rem;
}

Thuộc tính

Phần tử này bao gồm các thuộc tính toàn cục.

max

Thuộc tính này mô tả lượng công việc mà tác vụ được biểu thị bởi phần tử progress yêu cầu. Thuộc tính max, nếu có, phải có giá trị lớn hơn 0 và là một số dấu phẩy động hợp lệ. Giá trị mặc định là 1.

value

Thuộc tính này chỉ định lượng tác vụ đã hoàn thành. Nó phải là một số dấu phẩy động hợp lệ trong khoảng từ 0 đến max, hoặc từ 0 đến 1 nếu max bị bỏ qua. Nếu không có thuộc tính value, thanh tiến trình là không xác định; điều này cho biết một hoạt động đang diễn ra mà không có dấu hiệu về thời gian dự kiến hoàn thành.

Note: Không giống như phần tử <meter>, giá trị nhỏ nhất luôn là 0 và thuộc tính min không được phép cho phần tử <progress>.

Note: Pseudo-class :indeterminate có thể được sử dụng để khớp với các thanh tiến trình không xác định. Để thay đổi thanh tiến trình thành không xác định sau khi đã gán giá trị, bạn phải xóa thuộc tính value bằng element.removeAttribute('value').

Khả năng tiếp cận

Gán nhãn

Trong hầu hết các trường hợp, bạn nên cung cấp nhãn dễ tiếp cận khi sử dụng <progress>. Mặc dù bạn có thể sử dụng các thuộc tính gán nhãn ARIA tiêu chuẩn aria-labelledby hoặc aria-label như với bất kỳ phần tử nào có role="progressbar", khi sử dụng <progress> bạn cũng có thể dùng phần tử <label>.

Note: Văn bản được đặt giữa các thẻ của phần tử không phải là nhãn dễ tiếp cận, chỉ được khuyến nghị như một phương án dự phòng cho các trình duyệt cũ không hỗ trợ phần tử này.

Ví dụ

html
<label>
  Uploading Document: <progress value="70" max="100">70 %</progress>
</label>

<!-- OR -->
<br />

<label for="progress-bar">Uploading Document</label>
<progress id="progress-bar" value="70" max="100">70 %</progress>

Kết quả

Mô tả một vùng cụ thể

Nếu phần tử <progress> mô tả tiến trình tải của một phần của trang, hãy sử dụng aria-describedby để trỏ đến trạng thái, và đặt aria-busy="true" trên phần đang được cập nhật, xóa thuộc tính aria-busy khi nó đã tải xong.

Ví dụ

html
<div aria-busy="true" aria-describedby="progress-bar">
  <!-- content is for this region is loading -->
</div>

<!-- ... -->

<progress id="progress-bar" aria-label="Content loading…"></progress>
Kết quả

Ví dụ

html
<progress value="70" max="100">70 %</progress>

Kết quả

Tóm tắt kỹ thuật

Danh mục nội dung Nội dung luồng, nội dung cụm từ, nội dung có thể gán nhãn, nội dung rõ ràng.
Nội dung được phép Nội dung cụm từ, nhưng không được có phần tử <progress> nào trong số các phần tử con.
Bỏ qua thẻ Không được bỏ qua, cả thẻ mở và thẻ đóng đều bắt buộc.
Phần tử cha được phép Bất kỳ phần tử nào chấp nhận nội dung cụm từ.
Vai trò ARIA ngầm định progressbar
Vai trò ARIA được phép Không có role nào được phép
Giao diện DOM HTMLProgressElement

Đặc tả

Specification
HTML
# the-progress-element

Tương thích trình duyệt

Xem thêm