Modal เป็นส่วนหนึ่งของ Bootstrap ที่ช่วยในการสร้างหน้าต่างป็อปอัพ (popup) เพื่อแสดงข้อมูลเพิ่มเติมโดยไม่ต้องโหลดหน้าเว็บใหม่ ซึ่งผู้ใช้สามารถทำการยืนยันข้อมูล หรือตอบโต้การใช้งานได้โดยตรงในหน้าต่าง Modal นั้น การใช้งาน Modal ใน Bootstrap 5 นั้นสามารถปรับแต่งและประยุกต์ใช้ได้หลายลักษณะตามความต้องการของผู้ใช้งาน
โครงสร้างพื้นฐานของ Modal
โครงสร้างของ Modal ใน Bootstrap 5 ประกอบไปด้วย div หลายชั้นซ้อนกันเพื่อแยกส่วนต่าง ๆ ของ Modal ซึ่งโครงสร้างพื้นฐานมีดังนี้
<!-- Trigger Button -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal">
เปิด Modal
</button>
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">หัวข้อของ Modal</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
เนื้อหาของ Modal
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">ปิด</button>
<button type="button" class="btn btn-primary">บันทึกการเปลี่ยนแปลง</button>
</div>
</div>
</div>
</div><button>: ปุ่มที่ใช้ในการเรียก Modal โดยการตั้งค่าdata-bs-toggle="modal"และdata-bs-target="#exampleModal"เพื่ออ้างอิง Modal ที่ต้องการแสดง.modal: ตัว Modal เอง โดยมีid="exampleModal"ซึ่งจะถูกใช้ในการอ้างอิงจากปุ่มเปิด Modal.modal-dialog: กำหนดขนาดของหน้าต่าง.modal-content: เนื้อหาทั้งหมดของ Modal.modal-header: ส่วนหัวของ Modal รวมถึงปุ่มปิด.modal-body: เนื้อหาหลักของ Modal.modal-footer: ปุ่มต่าง ๆ ที่ด้านล่างของ Modal เช่น ปุ่มปิดและปุ่มบันทึก
ปุ่มเปิด Modal

Modal ที่ได้

การประยุกต์ใช้ลักษณะต่าง ๆ ของ Modal
ขนาดของ Modal
เราสามารถเปลี่ยนขนาดของ Modal ได้โดยการเพิ่มคลาส modal-lg, modal-sm, หรือ modal-xl ในส่วน .modal-dialog เช่น
<div class="modal-dialog modal-lg">
...
</div>Modal แบบ Scrollable
หากเนื้อหาภายใน Modal มีความยาวมากเกินไป เราสามารถตั้งค่าให้ Modal สามารถเลื่อนขึ้นลงได้โดยการเพิ่มคลาส modal-dialog-scrollable
<div class="modal-dialog modal-dialog-scrollable">
...
</div>Modal แบบ Centered
ในการจัดวาง Modal ให้อยู่กลางหน้าจอทั้งแนวตั้งและแนวนอน สามารถใช้คลาส modal-dialog-centered
<div class="modal-dialog modal-dialog-centered">
...
</div>Modal แบบ Fullscreen
เราสามารถสร้าง Modal ให้เต็มหน้าจอโดยการใช้คลาส modal-fullscreen
<div class="modal-dialog modal-fullscreen">
...
</div>การเปิด Modal อัตโนมัติ
หากต้องการให้ Modal เปิดอัตโนมัติเมื่อโหลดหน้า สามารถใช้ JavaScript สั่งเปิด Modal ได้
<script>
document.addEventListener('DOMContentLoaded', function () {
var myModal = new bootstrap.Modal(document.getElementById('exampleModal'));
myModal.show();
});
</script>การปิด Modal
การปิด Modal สามารถทำได้หลายวิธี ดังนี้
- กดปุ่มที่มีคลาส
data-bs-dismiss="modal" - คลิกที่บริเวณรอบนอกของ Modal
- กดปุ่ม “Esc” บนแป้นพิมพ์
หากต้องการปิดการปิดด้วยการคลิกบริเวณนอก Modal สามารถตั้งค่า backdrop เป็น static
<div class="modal fade" id="exampleModal" tabindex="-1" aria-hidden="true" data-bs-backdrop="static">
...
</div>Modal หลายชั้น (Nested Modal)
ในบางกรณีเราอาจต้องการให้มี Modal ซ้อนกัน สามารถทำได้โดยให้ Modal ที่สองถูกซ้อนอยู่ใน Modal แรก
<!-- Trigger Nested Modal -->
<button type="button" class="btn btn-warning" data-bs-toggle="modal" data-bs-target="#nestedModal">
เปิด Nested Modal
</button>
<!-- Nested Modal -->
<div class="modal fade" id="nestedModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Nested Modal</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
นี่คือ Nested Modal
</div>
</div>
</div>
</div>สรุป
การใช้งาน Modal ใน Bootstrap 5 เป็นเครื่องมือที่ช่วยในการสร้างอินเตอร์เฟสที่ใช้งานง่ายและสะดวก โดยมีความสามารถในการปรับแต่งขนาด การจัดวาง และการประยุกต์ใช้งานตามความต้องการของโปรเจค นอกจากนี้ยังสามารถเปิด Modal แบบอัตโนมัติหรือซ้อนกันได้ ซึ่งทั้งหมดนี้ช่วยในการสร้างประสบการณ์ที่ดีขึ้นสำหรับผู้ใช้
