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

:focus-visible แทน :focus สำหรับ keyboard accessibility

:focus-visible แสดง outline เฉพาะเมื่อ navigate ด้วย keyboard — ไม่รกตาเมื่อ click ด้วย mouse

ปัญหาเดิม: ลบ :focus outline ออกเพราะดูไม่สวยเวลา click แต่ทำให้ keyboard user มองไม่เห็นว่า focus อยู่ที่ไหน

:focus-visible แก้ปัญหานี้ได้:

/* ❌ แบบเก่า — ทำลาย keyboard navigation */
button:focus { outline: none; }

/* ✅ แบบใหม่ — แสดงเฉพาะเมื่อ keyboard */
button:focus-visible {
  outline: 3px solid #00d4ff;
  outline-offset: 2px;
}

browser แสดง :focus-visible เมื่อ:

  • ผู้ใช้ navigate ด้วย Tab หรือ arrow keys
  • focus จาก keyboard shortcut

ไม่ แสดงเมื่อ click ด้วย mouse — ทำให้ไม่รกตา แต่ยังรองรับ keyboard user ครบถ้วน

browser support ครอบคลุมทุก browser หลักแล้ว ใช้ได้เลยโดยไม่ต้อง polyfill