CSS Academy · บทเรียน

การจัดรูปแบบโมดัลและกล่องโต้ตอบ

จัดรูปแบบองค์ประกอบกล่องโต้ตอบ HTML แบบเนทีฟและโมดัลแบบกำหนดเองด้วยฉากหลัง ตำแหน่ง และภาพเคลื่อนไหว

บทเรียน 2 จาก 413 ขั้นตอน

การจัดรูปแบบโมดัลและกล่องโต้ตอบ เป็นบทเรียน CSS Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน CSS Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส CSS Academy มีบทเรียนทั้งหมด 4 บทเรียน

องค์ประกอบกล่องโต้ตอบแบบเนทีฟ

องค์ประกอบ HTML <dialog> มีพฤติกรรมของกล่องโมดัลในตัว ได้แก่ การกักโฟกัส การปิดด้วยปุ่ม Escape และ API showModal() / close() คุณสามารถจัดรูปแบบด้วย CSS แทนการสร้างโครงกล่องโมดัลแบบกำหนดเองตั้งแต่ต้น

การจัดรูปแบบฉากหลัง

องค์ประกอบเสมือน ::backdrop ใช้จัดรูปแบบเลเยอร์ทับด้านหลัง <dialog> ที่เปิดอยู่ ให้ใช้พื้นหลังแบบโปร่งใสบางส่วน: dialog::backdrop { background: rgba(0,0,0,0.5); backdrop-filter: blur(4px); } โดยไม่ต้องมี div สำหรับครอบ

เลย์เอาต์กล่องโต้ตอบ

จัดกล่องโต้ตอบให้อยู่กึ่งกลางด้วย CSS: dialog { margin: auto; max-width: min(90vw, 640px); max-height: 90vh; overflow-y: auto; } การใช้ margin: auto กับกล่องโต้ตอบจะจัดกล่องให้อยู่กึ่งกลางหน้าต่างมุมมองโดยไม่ต้องใช้ JS จัดตำแหน่ง

การเลื่อนและเนื้อหาล้น

กำหนด overflow-y: auto ให้ตัวกล่องโต้ตอบเองเพื่อจัดการเนื้อหาที่ยาว เมื่อเปิดกล่องโมดัล ให้กำหนด overflow: hidden ให้กับ body เพื่อป้องกันการเลื่อนพื้นหลัง แล้วเพิ่มและนำคลาสออกด้วย JavaScript เพื่อสลับการทำงานนี้

ภาพเคลื่อนไหวด้วย CSS

ทำให้การเปิดกล่องโต้ตอบเคลื่อนไหวด้วย @starting-style (Chrome 117 ขึ้นไป) เพื่อสร้างภาพเคลื่อนไหวตอนเปิดโดยใช้ CSS เท่านั้นและไม่ต้องใช้ JavaScript หากต้องการรองรับได้กว้างขึ้น ให้เพิ่มคลาสเปิดด้วย JavaScript แล้วใช้ transition กับ transform และ opacity โดยเลื่อนขึ้นจาก translateY(20px) ไปเป็น translateY(0)

โจทย์ท้าทายภาพเคลื่อนไหวตอนปิด

การทำภาพเคลื่อนไหวตอนปิดกล่องโต้ตอบทำได้ซับซ้อน เพราะกล่องโต้ตอบจะซ่อนทันทีเมื่อเรียก close() วิธีแก้คือใช้ popover API ซึ่งรองรับภาพเคลื่อนไหวตอนปิดในตัว หรือดักการปิดด้วย JavaScript เล่นคลาสภาพเคลื่อนไหวตอนออก แล้วเรียก close() หลังภาพเคลื่อนไหวจบ

การจัดการลำดับชั้น

กล่องโต้ตอบที่เปิดจะแสดงอยู่เหนือเนื้อหาอื่นทั้งหมดของหน้า หลีกเลี่ยงปัญหาการแย่งลำดับ z-index ด้วยบริบทการซ้อนแบบเนทีฟขององค์ประกอบกล่องโต้ตอบ เพราะองค์ประกอบนี้จะแสดงในชั้นบนสุด เหนือค่าลำดับ z-index ของ CSS ทั้งหมด โดยไม่ต้องกำหนดค่า z-index ให้ตัวกล่องโต้ตอบเอง

กล่องโต้ตอบแบบตอบสนอง

บนอุปกรณ์เคลื่อนที่ ให้เลื่อนกล่องโต้ตอบขึ้นจากด้านล่างในลักษณะแผ่นเลื่อน: dialog { margin: auto auto 0; width: 100%; border-radius: 16px 16px 0 0; max-height: 90vh; } บนเดสก์ท็อป ให้จัดกล่องไว้กึ่งกลางเป็นโมดัลแบบดั้งเดิมด้วยรูปแบบ margin: auto

การจัดการโฟกัส

องค์ประกอบกล่องโต้ตอบแบบเนทีฟจะย้ายโฟกัสไปยังองค์ประกอบแรกที่รับโฟกัสได้ภายในโดยอัตโนมัติเมื่อเปิด ตรวจสอบให้ลำดับการกดแท็บภายในกล่องโต้ตอบเป็นไปอย่างมีเหตุผล เพิ่มปุ่มปิดที่คืนโฟกัสไปยังองค์ประกอบที่เรียกใช้เมื่อปิดกล่องโต้ตอบ เพื่อให้การนำทางด้วยแป้นพิมพ์ดำเนินไปอย่างถูกต้อง

แอตทริบิวต์เพื่อการเข้าถึง

เพิ่ม aria-labelledby ให้ชี้ไปยังชื่อกล่องโต้ตอบ และเพิ่ม aria-describedby ให้ชี้ไปยังคำอธิบายกล่องโต้ตอบ บทบาทของกล่องโต้ตอบเป็นค่าโดยนัยสำหรับ <dialog> โปรแกรมอ่านหน้าจอจะแจ้งป้ายกำกับเหล่านี้เมื่อโฟกัสเข้าสู่กล่องโต้ตอบ

รูปแบบกล่องโต้ตอบยืนยัน

กล่องโต้ตอบยืนยันควรมีชื่อคำถามที่ชัดเจน คำอธิบายผลกระทบแบบสั้น ปุ่มการกระทำที่อาจทำลายข้อมูล (สีแดง จัดชิดขวา) และปุ่มยกเลิก (จัดชิดซ้ายหรือใช้รูปแบบรอง) ใช้ autofocus กับปุ่มยกเลิก เพื่อให้ตัวเลือกที่ปลอดภัยเป็นการโต้ตอบเริ่มต้นด้วยแป้นพิมพ์

ตรวจสอบความรู้

การใช้องค์ประกอบ <dialog> แบบเนทีฟมีข้อดีเหนือโมดัลแบบกำหนดเองที่สร้างจาก div อย่างไร

สรุป

องค์ประกอบกล่องโต้ตอบแบบเนทีฟที่ใช้ร่วมกับ ::backdrop การจัดกึ่งกลางด้วย margin: auto การควบคุมเนื้อหาล้น ภาพเคลื่อนไหวตอนเปิดด้วย CSS และการจัดการโฟกัส จะมอบรูปแบบโมดัลที่เข้าถึงได้อย่างสมบูรณ์และขับเคลื่อนด้วย CSS การจัดวางแบบแผ่นเลื่อนที่ตอบสนองบนอุปกรณ์เคลื่อนที่และแอตทริบิวต์ ARIA ที่เหมาะสมช่วยให้คอมโพเนนต์กล่องโต้ตอบพร้อมใช้งานจริง

เริ่มต้นได้ฟรี

เรียนรู้ CSS ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
40
บทเรียน
159

คำถามที่พบบ่อย

บทเรียน “การจัดรูปแบบโมดัลและกล่องโต้ตอบ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การจัดรูปแบบโมดัลและกล่องโต้ตอบ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส CSS Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส CSS Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การจัดรูปแบบโมดัลและกล่องโต้ตอบ”

จัดรูปแบบองค์ประกอบกล่องโต้ตอบ HTML แบบเนทีฟและโมดัลแบบกำหนดเองด้วยฉากหลัง ตำแหน่ง และภาพเคลื่อนไหว คุณปฏิบัติ CSS Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน CSS Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน CSS Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การจัดรูปแบบโมดัลและกล่องโต้ตอบ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน CSS Academy นี้ได้ไหม

ได้ บทเรียน CSS Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. องค์ประกอบการ์ดด้วยคุณสมบัติที่กำหนดเองของ CSS
  2. การจัดรูปแบบโมดัลและกล่องโต้ตอบ
  3. รูปแบบเมนูดรอปดาวน์และป๊อปโอเวอร์
  4. องค์ประกอบแท็บด้วยเทคนิค :checked เทียบกับ JS
← กลับไปที่ CSS Academy