ข้ามไปเนื้อหาหลัก

เจาะลึก CSS pointer-events ตัวช่วยจัดการคลิกทะลุเลเยอร์

ทำความเข้าใจการทำงานของ CSS pointer-events ในการเลือกเป้าหมายอีเวนต์ พร้อมไขข้อเข้าใจผิดเกี่ยวกับการปิดการใช้งานและการเลือกข้อความ

เรียบเรียงโดย AI
Inewgen
23 Jul 2026ที่มา: CSS-Tricks2 นาทีอ่าน (0 ครั้ง)อัปเดตล่าสุด 04 Aug 2026
แชร์
เจาะลึก CSS pointer-events ตัวช่วยจัดการคลิกทะลุเลเยอร์

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ขนาดตัวอักษร
  • pointer-events: none เปลี่ยนองค์ประกอบเป้าหมายของเคอร์เซอร์ ไม่ใช่การปิดใช้งานอีเวนต์
  • การส่งผ่านอีเวนต์ (Event Propagation) ยังคงทำงานตามปกติผ่าน DOM
  • คุณสมบัตินี้ไม่ได้ป้องกันการโฟกัสด้วยคีย์บอร์ดหรือการเลือกข้อความ

ในสภาวะปกติเบราว์เซอร์จะเลือกองค์ประกอบที่อยู่ชั้นบนสุดใต้เคอร์เซอร์เสมอ แต่เมื่อกำหนดค่า pointer-events เป็น none เบราว์เซอร์จะข้ามองค์ประกอบนั้นไปและมองหาองค์ประกอบถัดไปที่อยู่ข้างใต้แทน เมื่อมองในมุมนี้ พฤติกรรมส่วนใหญ่ของ pointer-events จึงเริ่มสมเหตุสมผลขึ้น เพราะมันทำหน้าที่เปลี่ยนว่าองค์ประกอบใด (หรือส่วนใดของ SVG) จะกลายเป็นเป้าหมายของอีเวนต์ตั้งแต่แรก แทนที่จะเป็นการปิดการใช้งานอีเวนต์ทั้งหมด

กรณีการใช้งานทั่วไปคือหน้าต่างโมดอล (Modal) นักพัฒนาอาจใช้คอนเทนเนอร์เต็มหน้าจอเพื่อจัดกึ่งกลางโมดอล ซึ่งคอนเทนเนอร์นี้จะบังพื้นที่วิวพอร์ตทั้งหมด หากไม่เปลี่ยนค่า pointer-events มันจะป้องกันไม่ให้อีเวนต์การคลิกไปถึงองค์ประกอบที่อยู่ข้างใต้ การกำหนด pointer-events เป็น none ที่คอนเทนเนอร์จึงช่วยแก้ปัญหานี้ได้ แต่เนื่องจากคุณสมบัตินี้มีการสืบทอดค่า (Inheritance) จึงจำเป็นต้องคืนค่าให้ตัวโมดอลเองด้วยการกำหนด pointer-events เป็น auto

browser developer tools interface

การทำความเข้าใจความแตกต่างระหว่างการเลือกเป้าหมาย (Target Selection) และการส่งผ่านอีเวนต์ (Event Propagation) ถือเป็นหัวใจสำคัญในการใช้งาน CSS ตัวนี้ เนื่องจากตัวคุณสมบัติไม่ได้หยุดการเดินทางของอีเวนต์ผ่าน DOM องค์ประกอบลูกที่อยู่ข้างในยังคงสามารถรับอีเวนต์และเรียกใช้งานตัวรับฟังอีเวนต์ (Event Listener) ขององค์ประกอบแม่ได้ตามปกติผ่านกระบวนการ Capturing และ Bubbling

ข้อควรระวังที่สำคัญคือคุณสมบัตินี้ไม่ได้เป็นการปิดการใช้งานองค์ประกอบอย่างแท้จริง:

  • องค์ประกอบยังคงสามารถรับโฟกัสจากแป้นพิมพ์ผ่านปุ่ม Tab ได้
  • ผู้ใช้ยังคงสามารถเลือกข้อความภายในองค์ประกอบนั้นได้ เช่น การกดปุ่ม Ctrl/Cmd + A
  • หากต้องการปิดการใช้งานฟอร์มเนทีฟควรใช้แอตทริบิวต์ disabled แทน
  • หากต้องการซ่อนส่วนของหน้าเว็บไม่ให้มีการโต้ตอบใดๆ รวมถึงการเข้าถึงของโปรแกรมอ่านจอภาพ ควรเลือกใช้แอตทริบิวต์ inert

ที่มา: CSS-Tricks

ความคิดเห็น

แสดงความคิดเห็น
0/2000

พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้