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

เลิกใช้คลาส .active หลอกสกรีนรีดเดอร์ หันมาใช้แอตทริบิวต์ HTML กันดีกว่า

การใช้คลาส CSS เช่น .active เพื่อบอกสถานะหน้าเว็บนั้นสร้างปัญหาการเข้าถึงสำหรับผู้พิการทางสายตา ควรเปลี่ยนมาใช้ HTML แอตทริบิวต์ที่เป็นมาตรฐานสากลแทน

เรียบเรียงโดย AI
Inewgen
12 Aug 2026ที่มา: Dev.to3 นาทีอ่าน (0 ครั้ง)
แชร์
เลิกใช้คลาส .active หลอกสกรีนรีดเดอร์ หันมาใช้แอตทริบิวต์ HTML กันดีกว่า

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

ขนาดตัวอักษร
  • คลาส .active ไม่มี语义 (ความหมายในตัว) และระบบช่วยเหลือผู้พิการทางสายตาอ่านไม่เข้าใจ
  • ควรใช้ HTML แอตทริบิวต์มาตรฐานเพราะเบราว์เซอร์และเทคโนโลยีสิ่งอำนวยความสะดวกเข้าใจทันที
  • ใช้แอตทริบิวต์ inert สำหรับปิดกั้นการโต้ตอบและลำดับการโฟกัสของเนื้อหาหลังฉากแทนการเขียน JS วนลูป
  • แยกแยะให้ชัดเจน คลาสเหมาะกับการแสดงผล (appearance) ส่วนแอตทริบิวต์เหมาะกับการแสดงสถานะ (state)

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

ปัญหาหลักคือคลาสอย่าง .active ไม่มี语义 (ความหมายในตัว) ติดมาด้วย เบราว์เซอร์ไม่มีทางรู้เลยว่าคลาสนี้หมายถึงหน้าปัจจุบันที่ผู้ใช้งานกำลังเปิดอยู่ เช่นเดียวกับโปรแกรมอ่านหน้าจอ (screen reader) ที่มองเห็นมันเป็นเพียงข้อความสตริงธรรมดา ความเข้าใจนี้เกิดขึ้นได้ก็เพราะนักพัฒนาตกลงกันเองใน CSS ซึ่งความสัมพันธ์นี้จะพังทันทีเมื่อมีคนเปลี่ยนชื่อคลาส ลืมอัปเดตไฟล์ JavaScript ที่คอยสลับสถานะ หรือเขียนคอมโพเนนต์ใหม่ขึ้นมาโดยไม่รู้ถึงข้อตกลงเดิม

accessibility software screen reader

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

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

ไม่อยากพลาดข่าวใหม่?

สมัครรับสรุปข่าวสารใหม่ทางอีเมล ไม่บ่อยจนรำคาญ

โฆษณา

ตัวอย่างแอตทริบิวต์มาตรฐานที่ควรนำมาใช้แทนคลาสต่างๆ มีดังนี้:

  • แอตทริบิวต์ inert เหมาะสำหรับการซ่อนเนื้อหาเบื้องหลังโมดัลหรือเมนูด้านข้างที่ถูกปิดอยู่ โดยจะช่วยลบทั้งซับทรีออกจากการโต้ตอบและลำดับการโฟกัสในคราวเดียว
  • แอตทริบิวต์ aria-selected สำหรับอินเทอร์เฟซแบบแท็บ เพื่อส่งสัญญาณที่ถูกต้องไปยังต้นไม้การเข้าถึง (accessibility tree) ว่าแท็บไหนกำลังทำงานอยู่
  • แอตทริบิวต์ aria-invalid="true" ช่วยทั้งเรื่องการจัดสไตล์และส่งเสียงแจ้งเตือนผู้ใช้งานสกรีนรีดเดอร์ว่ามีจุดที่ต้องแก้ไข

การหันมาใช้ HTML แอตทริบิวต์แทนคลาสสำหรับการบอกสถานะถือเป็นหัวใจสำคัญของหลักการ Web Accessibility (a11y) ในยุคปัจจุบัน เนื่องจากเว็บไม่ได้ถูกใช้งานแค่ผ่านสายตาบนหน้าจออีกต่อไป แต่มีผู้ใช้งานจำนวนมากที่พึ่งพาโปรแกรมอ่านหน้าจอหรืออุปกรณ์ช่วยเหลืออื่นๆ การใช้ Semantic HTML จึงช่วยลดภาระของนักพัฒนาในการดูแลรักษาโค้ดระยะยาว และสร้างประสบการณ์การใช้งานที่เท่าเทียมสำหรับทุกคนอย่างแท้จริง

บางคนอาจคิดว่าเรื่องนี้เป็นเพียงทางเลือกเสริมที่เอาไว้ทำทีหลังก็ได้ แต่แท้จริงแล้วมันคือรากฐานสำคัญของการพัฒนาเว็บที่มีคุณภาพ โดยกฎเหล็กที่แนะนำคือ หากต้องการสื่อถึงสถานะ (state) ให้เลือกใช้แอตทริบิวต์เป็นอันดับแรก แต่ถ้าต้องการตกแต่งรูปร่างหน้าตาโดยไม่มีความหมายเชิงโครงสร้าง การใช้คลาสหรือยูทิลิตี้เฟรมเวิร์กยังคงเป็นเครื่องมือที่เหมาะสม

ที่มา: Dev.to

ความคิดเห็น

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

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