โฟกัสแป้นพิมพ์

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

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

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

นอกจากนี้ ผู้ที่ไม่มีความพิการบางรายอาจเลือกไปยังส่วนต่างๆ โดยใช้แป้นพิมพ์ด้วย

การรองรับแป้นพิมพ์สำหรับความพิการและสถานการณ์เหล่านี้ทั้งหมดมีความสำคัญอย่างยิ่ง การช่วยเหลือพิเศษของแป้นพิมพ์ส่วนใหญ่จะเน้นที่โฟกัส โฟกัสหมายถึงองค์ประกอบบนหน้าจอที่รับอินพุตจากแป้นพิมพ์อยู่

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

ลำดับโฟกัส

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

สำหรับภาษาส่วนใหญ่ ลำดับโฟกัสจะเริ่มที่ด้านบนของหน้าเว็บและสิ้นสุดที่ด้านล่าง โดยจะเลื่อนจากซ้ายไปขวา อย่างไรก็ตาม บางภาษาจะอ่านจากขวาไปซ้าย ดังนั้นภาษาหลักของหน้าเว็บอาจต้องมีลำดับโฟกัสที่แตกต่างกัน

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

คุณสามารถอัปเดตลำดับโฟกัสให้รวมองค์ประกอบที่ปกติ ไม่ได้รับโฟกัส เช่น องค์ประกอบ HTML ที่ไม่ใช่แบบอินเทอร์แอกทีฟ คอมโพเนนต์ที่กำหนดเอง หรือ องค์ประกอบที่มี ARIA และลบล้าง ความหมายของโฟกัสตามธรรมชาติ

Tabindex

ลำดับโฟกัสจะเริ่มต้นด้วยองค์ประกอบที่มีแอตทริบิวต์ tabindex เป็นค่าบวก (หากมี) และจะเลื่อนจากจำนวนบวกที่น้อยที่สุดไปยังจำนวนบวกที่มากที่สุด (เช่น 1, 2, 3) จากนั้นจะไปยังองค์ประกอบที่มี tabindex เป็น 0 ตามลำดับใน DOM ระบบจะนำองค์ประกอบที่มี tabindex เป็นค่าลบ ออกจากลำดับโฟกัสตามธรรมชาติ

เมื่อใช้ tabindex เป็น 0 (tabindex="0") กับองค์ประกอบที่ปกติแล้วโฟกัสไม่ได้ ระบบจะเพิ่มองค์ประกอบเหล่านั้นลงในลำดับการโฟกัสตามธรรมชาติของหน้าเว็บตามลักษณะที่ปรากฏใน DOM อย่างไรก็ตาม คุณต้องให้การรองรับแป้นพิมพ์เพิ่มเติมเพื่อให้เข้าถึงได้อย่างเต็มที่ ซึ่งต่างจากองค์ประกอบ HTML ที่โฟกัสได้ตามธรรมชาติ

ในทำนองเดียวกัน หากคุณมีองค์ประกอบที่ปกติแล้วสามารถโฟกัสได้แต่ไม่ได้ใช้งาน เช่น ปุ่มที่ใช้ไม่ได้จนกว่าจะกรอกข้อมูลในช่องป้อนข้อมูล คุณควรเพิ่ม tabindex เชิงลบ (tabindex="-1") ลงในองค์ประกอบนี้ การเพิ่ม tabindex เชิงลบจะส่งสัญญาณไปยังเทคโนโลยีความช่วยเหลือและแป้นพิมพ์ว่าควรนำปุ่มนี้ ออกจากลำดับโฟกัสตามธรรมชาติ แต่ไม่ต้องกังวล คุณสามารถใช้ JavaScript เพื่อเปลี่ยนโฟกัสกลับไปที่องค์ประกอบได้เมื่อต้องการ

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

ลำดับโฟกัสใหม่จะแสดง HTML
ดูขณะที่ผู้ใช้คีย์บอร์ดกด Tab ผ่าน HTML ของ CodePen

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

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

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

เช่นเดียวกับลิงก์อื่นๆ ลิงก์ข้ามควรมีบริบทเกี่ยวกับวัตถุประสงค์ของลิงก์ การเพิ่มวลี "ข้ามไปยังเนื้อหาหลัก" จะช่วยให้ผู้ใช้ทราบ ว่าลิงก์จะนำไปยังส่วนใด มีตัวเลือกโค้ดมากมายให้เลือกเมื่อ ให้บริบทเพิ่มเติมแก่ลิงก์ เช่น aria-labelledby, aria-label หรือเพิ่มลงใน เนื้อหาข้อความขององค์ประกอบ <a> ดังที่แสดงในตัวอย่าง

ดูตัวอย่าง CodePen ด้วยโฟกัสแป้นพิมพ์
ดูผู้ใช้แป้นพิมพ์นำทางโดยมีและไม่มี ลิงก์ข้าม

สัญญาณบอกสถานะโฟกัส

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

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

การจัดรูปแบบเริ่มต้นของเบราว์เซอร์

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

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

ไม่แนะนำ - ไม่มีโครงร่าง

a:focus {
  outline: none; /* don't do this! */
}

แนะนำ - โครงร่างที่มีสไตล์

a:focus {
  outline: auto 5px Highlight; /* for non-webkit browsers */
  outline: auto 5px -webkit-focus-ring-color; /* for webkit browsers */
}

รูปแบบที่กำหนดเอง

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

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

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

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

รูปแบบโฟกัสตามที่แสดงใน CSS
ดูสิ่งที่เกิดขึ้นเมื่อผู้ใช้แป้นพิมพ์กด Tab ผ่านองค์ประกอบโฟกัสที่จัดรูปแบบแต่ละรายการ

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