แอตทริบิวต์ loop (Boolean Attribute) ใช้ใน <video> และ <audio> เพื่อทำให้สื่อเล่นซ้ำวนลูปอัตโนมัติเมื่อจบสิ้นสุด
ตัวอย่างการใช้งาน
<!DOCTYPE HTML>
<html>
<body>
<video width="300" height="200" controls loop>
<source src="/html5/foo.ogg" type="video/ogg" />
<source src="/html5/foo.mp4" type="video/mp4" />
เบราว์เซอร์ของคุณไม่รองรับองค์ประกอบ video
</video>
<br><br>
<audio controls loop>
<source src="/html5/audio.ogg" type="audio/ogg" />
<source src="/html5/audio.mp3" type="audio/mpeg" />
</audio>
</body>
</html>
พฤติกรรม Loop
- วิดีโอ/เสียงจบ → กลับไปที่ 0:00 → เล่นใหม่ทันที
- ไม่มีช่วงหยุดพักระหว่างรอบ (Seamless Loop)
- เหตุการณ์
onendedจะยิง ทุกรอบ ที่จบ - ผู้ใช้สามารถ Pause/Seek ได้ปกติ
การควบคุม Loop ด้วย JavaScript
const video = document.querySelector('video');
// Toggle Loop
function toggleLoop() {
video.loop = !video.loop;
console.log('Loop:', video.loop);
}
// Loop เฉพาะช่วง (Segment Loop)
let loopStart = 10; // วินาที
let loopEnd = 30;
video.addEventListener('timeupdate', () => {
if (video.loop && video.currentTime >= loopEnd) {
video.currentTime = loopStart;
}
});
กรณีการใช้งาน (Use Cases)
- Background Video / Hero Banner (Muted + Autoplay + Loop)
- GIF Replacement: วิดีโอสั้น Loop แทน GIF (ขนาดเล็กกว่า, ควบคุมได้)
- Ambient Audio: เสียงพื้นหลัง (Rain, Cafe, White Noise)
- Demo/Showcase: สินค้า/ฟีเจอร์วนลูป
- Kiosk/Display: เนื้อหาโชว์เคสต่อเนื่อง
แนวทางปฏิบัติที่ดีสำหรับ Background Video
<video
autoplay
muted
loop
playsinline
poster="poster.jpg"
preload="metadata"
style="width: 100%; height: 100%; object-fit: cover;">
<source src="bg.webm" type="video/webm">
<source src="bg.mp4" type="video/mp4">
</video>
muted+autoplay= เริ่มเล่นอัตโนมัติได้ (Browser Policy)playsinline= ไม่บังคับ Fullscreen บน iOSpreload="metadata"= โหลด Metadata เท่านั้น ประหยัด Bandwidthposter= รูปภาพรอโหลด/Error Fallback