สามารถทำให้ Iframe ขยายเต็มหน้าจอได้โดยการเปลี่ยน Class CSS ให้มีขนาด 100vw x 100vh หรือใช้ Fullscreen API อย่างเป็นทางการ
วิธีที่ 1: เปลี่ยน Class CSS (Simple)
<!DOCTYPE html>
<html lang="th">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Fullscreen Iframe</title>
<style>
body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; }
.result { font-weight: 500; font-size: 18px; color: blueviolet; }
.frame {
width: 300px;
height: 200px;
border: 2px solid #ccc;
transition: all 0.3s ease;
}
.fullScreen {
width: 100vw;
height: 100vh;
position: fixed;
top: 0;
left: 0;
z-index: 9999;
border: none;
}
button { padding: 8px 16px; margin: 15px 0; cursor: pointer; }
</style>
</head>
<body>
<h1>ตั้งค่า Iframe ให้เต็มหน้าจอ</h1>
<iframe class="frame" src="https://www.wikipedia.org" width="300" height="200"></iframe>
<button class="Btn">Toggle Fullscreen</button>
<h3>กดปุ่มด้านบนเพื่อสลับโหมดเต็มหน้าจอของ Iframe</h3>
<script>
let BtnEle = document.querySelector(".Btn");
let frameEle = document.querySelector(".frame");
let isFullscreen = false;
BtnEle.addEventListener("click", () => {
isFullscreen = !isFullscreen;
frameEle.className = isFullscreen ? "frame fullScreen" : "frame";
BtnEle.textContent = isFullscreen ? "Exit Fullscreen" : "Fullscreen";
});
</script>
</body>
</html>
วิธีที่ 2: Fullscreen API (มาตรฐาน Browser)
<!DOCTYPE html>
<html lang="th">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Fullscreen API</title>
<style>
body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; }
.result { font-weight: 500; font-size: 18px; color: blueviolet; }
iframe { width: 300px; height: 200px; border: 2px solid #ccc; }
button { padding: 8px 16px; margin: 15px 0; cursor: pointer; }
</style>
</head>
<body>
<h1>Fullscreen API สำหรับ Iframe</h1>
<iframe id="myFrame" src="https://www.wikipedia.org" allowfullscreen></iframe>
<br><br>
<button id="fsBtn">เข้าสู่โหมดเต็มหน้าจอ</button>
<div class="result" id="status"></div>
<script>
const frame = document.getElementById("myFrame");
const btn = document.getElementById("fsBtn");
const status = document.getElementById("status");
// ต้องมี attribute allowfullscreen ใน iframe
//
ข้อแตกต่างระหว่างสองวิธี
| คุณสมบัติ | CSS Class Toggle | Fullscreen API |
|---|---|---|
| ความซับซ้อน | ง่ายมาก | ปานกลาง |
| เต็มหน้าจอจริง (ซ่อน UI Browser) | ❌ ไม่ (ยังเห็น Address Bar) | ✅ ใช่ |
| ต้องการ User Gesture | ไม่จำเป็น | ✅ จำเป็น (Security) |
| Iframe ต้องมี allowfullscreen | ไม่จำเป็น | ✅ จำเป็น |
| Cross-origin Iframe | ทำงานได้ | ต้องการ Permissions Policy |
Permissions Policy สำหรับ Cross-origin Iframe
<!-- ในหน้า Parent -->
<iframe src="https://example.com" allow="fullscreen"></iframe>
<!-- หรือ HTTP Header -->
Permissions-Policy: fullscreen=(self "https://example.com")
สรุป
- ใช้ CSS Class สำหรับ UI แบบง่าย ไม่ต้องการซ่อน Browser UI
- ใช้ Fullscreen API สำหรับประสบการณ์เต็มหน้าจอจริง (Video Player, Presentation, Games)
- จำเป็นต้องมี
allowfullscreenattribute ใน Iframe สำหรับ Fullscreen API