PlusMagi's Blog By Pitt Phunsanit Technology 5 VS Code Extensions ตรวจและเตือน Color Contrast อัตโนมัติขณะเขียนโค้ด

5 VS Code Extensions ตรวจและเตือน Color Contrast อัตโนมัติขณะเขียนโค้ด

การรอไปตรวจ Contrast ตอนรันหน้าเว็บผ่าน Lighthouse หรือ axe DevTools มักทำให้เสียเวลาแก้โค้ดย้อนหลัง ทางออกที่มีประสิทธิภาพที่สุดคือการติดตั้ง VS Code Extensions ที่คอยดักจับและขีดเส้นใต้เตือนปัญหาเรื่องคอนทราสต์ของสี รวมถึงคลาส Tailwind CSS ตั้งแต่ขั้นตอนการพิมพ์โค้ด (In-editor Feedback)


Color Highlight + Built-in Contrast Checker

สำหรับใครที่เขียน Hex Code, RGB หรือ CSS Custom Properties ตัว Extension กลุ่ม Color Picker ในตัวของ VS Code เวอร์ชันใหม่ ๆ ได้เพิ่มฟีเจอร์ตรวจเช็ก WCAG Contrast Ratio เข้ามาในกล่อง Color Picker ทันที

  • จุดเด่น
    เมื่อเอาเมาส์ชี้ (Hover) ที่โค้ดสี กล่อง Color Picker จะแสดงค่าคอนทราสต์เมื่อเทียบกับสีพื้นหลังที่อยู่ใกล้เคียง พร้อมขีดเส้นบอกระดับเกณฑ์ AA (4.5:1) และ AAA (7:1) ให้เห็นชัดเจน
  • เหมาะสำหรับ
    การปรับแต่งโค้ดสีใน tailwind.config.js, ไฟล์ Base CSS และตัวแปร Design Tokens

axe Accessibility Linter (โดย Deque Systems)

หนึ่งใน Extension ระดับเรือธงจากผู้สร้างมาตรฐาน axe-core ทำงานเสมือนเป็น Accessibility Linter แบบเรียลไทม์ ตรวจจับปัญหาทันทีที่คุณพิมพ์โค้ดบนไฟล์ HTML, React (JSX/TSX), Vue และ Markdown

  • ความสามารถหลัก
    • ขีดเส้นใต้สีแดง/เหลืองเตือนเมื่อค่าคอนทราสต์ของสีตัวอักษรกับพื้นหลังใน Inline Style หรือคอมโพเนนต์ต่ำกว่าเกณฑ์ WCAG AA
    • ตรวจจับปัญหา A11y อื่นควบคู่ เช่น ลืมใส่ alt บนภาพ, ฟอร์มไม่มี label หรือปุ่มที่ไม่มีข้อความกำกับ
    • ไม่ต้องกดรันโปรแกรม เบราว์เซอร์ หรือเซิร์ฟเวอร์ใด ๆ ทั้งสิ้น
  • การติดตั้ง
    ค้นหาใน VS Code Marketplace: axe Accessibility Linter

Webhint (โดย OpenJS Foundation / Microsoft)

Linter สำหรับตรวจสอบคุณภาพโค้ดเว็บรอบด้าน ทั้ง Accessibility, Performance, Security และ Cross-browser Compatibility

  • จุดเด่นด้าน Contrast
    มี Rule เฉพาะสำหรับตรวจสอบว่าองค์ประกอบข้อความมีอัตราส่วนความต่างของสีเพียงพอตามเกณฑ์ WCAG 2.1/2.2 หรือไม่
  • การแสดงผล
    แจ้งเตือนในแท็บ Problems ของ VS Code และแสดงไฮไลต์โค้ดตรงจุดที่คอนทราสต์ไม่ผ่าน พร้อมลิงก์ไปยังเอกสารอธิบายวิธีแก้ไข
  • เหมาะสำหรับ
    ทีมที่ต้องการคุมทั้งมาตรฐาน A11y ควบคู่ไปกับ Best Practices อื่น ๆ ของเว็บไซต์

Tailwind CSS IntelliSense (ฟีเจอร์ Color Preview)

Extension บังคับสำหรับนักพัฒนา Tailwind CSS แม้ตัวมันเองจะไม่ได้มี Rule คำนวณ Contrast Ratio อัตโนมัติระหว่างสองคลาสแบบข้าม Element แต่มีฟีเจอร์สำคัญที่ช่วยเรื่องสีอย่างมาก:

  • พรีวิวค่าสีจริง
    เมื่อพิมพ์คลาส เช่น text-slate-600 หรือ bg-blue-500 จะมีก้อนสีสี่เหลี่ยมเล็ก ๆ แสดงค่าสีจริงทันที
  • Hover แสดงค่า Hex
    เมื่อเอาเมาส์ชี้ที่คลาส จะแปลงเป็นโค้ด CSS จริง เช่น color: rgb(71 85 105); /* #475569 */ ซึ่งสามารถคลิกเพื่อเปิด VS Code Color Picker ขึ้นมาดูเส้นระดับความต่างของ Contrast ได้ทันที

Visual Studio Code Marketplace: A11yWatch / Evinced

หากโปรเจกต์ของคุณเขียนด้วย React, Vue, หรือ Angular และต้องการระบบตรวจ A11y ที่เข้มงวดเสมือนมีเครื่องมือ CI รันอยู่ในตัว:

  • Evinced Accessibility Workbench
    สแกนโครงสร้าง DOM เสมือนจริงใน Component ช่วยคำนวณการซ้อนทับของสีและแจ้งเตือน Color Contrast Violations ได้แม่นยำ
  • Error Highlighting
    มาร์กจุดผิดพลาดในแท็บ Problems ชัดเจน ลดความผิดพลาดก่อนเปิด Pull Request

แนะนำ Workflow ตั้งค่าในโปรเจกต์ (Best Practice)

เพื่อให้การตรวจสอบ Contrast และ A11y เกิดขึ้นโดยอัตโนมัติทั้งทีม แนะนำให้ตั้งค่าควบคู่กัน 2 ระดับ

  1. ระดับ Editor
    ติดตั้ง axe Accessibility Linter ใน VS Code เพื่อให้ Dev เห็นเส้นเตือนสีแดงทันทีขณะพิมพ์
  2. ระดับ ESLint / CI
    ติดตั้งปลั๊กอิน eslint-plugin-jsx-a11y (สำหรับ React) หรือ eslint-plugin-vuejs-accessibility เพื่อล็อกไม่ให้ Git Commit หรือ Merge โค้ดที่ตกเกณฑ์ Accessibility ขั้นพื้นฐานขึ้น Production