Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> HTML

การแสดงความคืบหน้าของงาน (Progress Bar) ใน HTML5

ใช้แท็ก <progress> ใน HTML5 เพื่อแสดงความคืบหน้าของงาน ช่วยสร้าง Progress Bar ได้อย่างง่ายดาย

แอตทริบิวต์ของแท็ก <progress>

แอตทริบิวต์ ค่า คำอธิบาย
max Number (float > 0) ค่าสูงสุดของความคืบหน้า ต้องมากกว่า 0 และเป็นตัวเลขทศนิยมที่ถูกต้อง ค่าเริ่มต้นคือ 1
value Number (float) ค่าปัจจุบันของความคืบหน้า ต้องอยู่ระหว่าง 0 ถึง max (หรือ 0 ถึง 1 ถ้าไม่มี max)

ตัวอย่าง

ลองรันโค้ดต่อไปนี้เพื่อสร้าง Progress Bar:

<!DOCTYPE html>
<html>
  <head>
    <title>HTML Progress Tag</title>
  </head>
  <body>
    <h2>Water Level</h2>
    <progress value="60" max="100"></progress>
    
    <h2>Download Progress</h2>
    <progress value="45" max="100">45%</progress>
    
    <h2>Indeterminate (ไม่ระบุค่า)</h2>
    <progress></progress>
  </body>
</html>

Indeterminate Progress Bar

ถ้าไม่ระบุแอตทริบิวต์ value จะได้ Indeterminate Progress Bar (แถบที่เคลื่อนไหวต่อเนื่อง) ใช้เมื่อไม่รู้ว่าจะเสร็จเมื่อไหร่

การจัดสไตล์ด้วย CSS

การจัดสไตล์ <progress> ต้องใช้ Pseudo-elements เฉพาะเบราว์เซอร์:

/* WebKit/Blink (Chrome, Safari, Edge) */
progress::-webkit-progress-bar {
  background-color: #eee;
  border-radius: 10px;
}
progress::-webkit-progress-value {
  background: linear-gradient(90deg, #4caf50, #8bc34a);
  border-radius: 10px;
}

/* Firefox */
progress::-moz-progress-bar {
  background: linear-gradient(90deg, #4caf50, #8bc34a);
  border-radius: 10px;
}

/* Fallback */
progress {
  width: 100%;
  height: 20px;
  border: none;
  border-radius: 10px;
  overflow: hidden;
}

การอัปเดตด้วย JavaScript

<progress id="myProgress" value="0" max="100"></progress>
<button onclick="updateProgress()">Simulate Progress</button>

<script>
function updateProgress() {
  const progress = document.getElementById('myProgress');
  let value = 0;
  const interval = setInterval(() => {
    value += 10;
    progress.value = value;
    if (value >= 100) clearInterval(interval);
  }, 500);
}
</script>

ความแตกต่าง: <progress> vs <meter>

  • <progress> - ความคืบหน้าของงาน (Task completion) - มีทิศทาง: เริ่ม 0 ไปจนถึง max
  • <meter> - ค่าสเกลาร์ในช่วงที่รู้จัก (Scalar gauge) - เช่น อุณหภูมิ, การใช้หน่วยความจำ, คะแนนสอบ