0Pricing
HTML Academy · บทเรียน

การนำทางด้วยแป้นพิมพ์และลำดับโฟกัส

ทำให้ทุกฟังก์ชันเข้าถึงได้ด้วยแป้นพิมพ์อย่างเป็นลำดับและมีเหตุผล

การนำทางด้วยแป้นพิมพ์และลำดับโฟกัส เป็นบทเรียน HTML Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน HTML Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส HTML Academy มีบทเรียนทั้งหมด 4 บทเรียน

ใครบ้างที่ต้องใช้การนำทางด้วยแป้นพิมพ์

ผู้ใช้จำนวนมากต้องพึ่งพาการนำทางด้วยแป้นพิมพ์:

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

องค์ประกอบที่โฟกัสได้ตามธรรมชาติ

องค์ประกอบ HTML เหล่านี้โฟกัสด้วยแป้นพิมพ์ได้โดยค่าเริ่มต้น:

  • <a href> — กด Tab เพื่อไปยังองค์ประกอบ และกด Enter เพื่อเปิดใช้งาน
  • <button> — กด Tab เพื่อไปยังองค์ประกอบ และกด Enter/Space เพื่อเปิดใช้งาน
  • <input>, <textarea>, <select> — กด Tab เพื่อไปยังองค์ประกอบเหล่านี้
  • <details> / <summary> — กด Tab + Enter

ลำดับการกด Tab

เบราว์เซอร์กำหนดลำดับการกด Tab โดยใช้หลักต่อไปนี้:

  • ลำดับ DOM เป็นค่าเริ่มต้น — องค์ประกอบจะได้รับโฟกัสตามลำดับที่ปรากฏใน HTML
  • ค่า tabindex ที่เป็นบวก — องค์ประกอบเหล่านั้นจะได้รับโฟกัสก่อน โดยเรียงจากค่าน้อยไปมาก
  • tabindex="0" — เพิ่มเข้าในลำดับการกด Tab ตามธรรมชาติ ณ ตำแหน่งขององค์ประกอบใน DOM
  • tabindex="-1" — ไม่อยู่ในลำดับการกด Tab และโฟกัสได้ผ่านสคริปต์เท่านั้น

ลำดับการกด Tab ตามธรรมชาติ = ลำดับ DOM

ลำดับการอ่าน HTML ของคุณควรตรงกับการจัดวางที่มองเห็นได้:

<!-- GOOD: DOM order matches visual left-to-right, top-to-bottom: -->
<header>...</header>
<nav>...</nav>
<main>...</main>
<aside>...</aside>
<footer>...</footer>

<!-- BAD: visually reordered with CSS, DOM order broken:
     CSS flexbox order: doesn't affect tab order!
     Screen readers and keyboard users follow DOM order, not CSS order -->

ตัวบ่งชี้โฟกัสที่มองเห็นได้

WCAG 2.4.7 (ระดับ AA): ต้องมองเห็นโฟกัสจากแป้นพิมพ์:

/* NEVER do this: */
* { outline: none; }           /* removes all focus outlines */

/* GOOD: styled focus indicator: */
:focus-visible {
  outline: 2px solid #0070f3;
  outline-offset: 3px;
  border-radius: 4px;
}

/* :focus-visible shows outline for keyboard only
   mouse clicks don't trigger :focus-visible -->
/* But outline: none with :focus (not :focus-visible) hides for both */

รูปแบบโฟกัสแบบกำหนดเอง

รูปแบบโฟกัสของระบบการออกแบบ:

/* Replace outline with box-shadow for rounded elements: */
button:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(0, 112, 243, 0.4);
}

/* Always ensure 3:1 contrast ratio between
   focus indicator and background (WCAG 2.4.11 Level AA) */

ลำดับโฟกัสที่มีเหตุผล

ลำดับโฟกัสควรมีเหตุผลและคาดเดาได้ — WCAG 2.4.3 (ระดับ A):

<!-- BAD: focus order jumps around the page -->
<!-- First: footer link (tabindex=5) -->
<!-- Then: sidebar (tabindex=3) -->
<!-- Then: header nav (tabindex=1) -->

<!-- GOOD: natural DOM order matches reading flow: -->
<!-- Header → Nav → Main Content → Sidebar → Footer -->

ลิงก์ข้าม

ลิงก์ข้ามช่วยให้ผู้ใช้แป้นพิมพ์ข้ามการนำทางที่ซ้ำ ๆ ได้:

<a href="#main-content" class="skip-link">Skip to main content</a>

<!-- Visually hidden until focused: -->
.skip-link {
  position: absolute;
  top: -100%;
  left: 0;
  background: #0070f3;
  color: white;
  padding: 0.75rem;
  z-index: 9999;
}
.skip-link:focus {
  top: 0;  /* visible when focused -->
}

การกักโฟกัสใน modal

modal ต้องกักโฟกัสไว้ขณะที่เปิดอยู่:

<!-- When modal opens:
1. Move focus to modal container or first interactive element
2. Tab stays within modal
3. When modal closes, return focus to the trigger button
-->

const modal = document.getElementById('modal');
const trigger = document.getElementById('open-modal');

function openModal() {
  modal.removeAttribute('hidden');
  modal.querySelector('button, [tabindex="0"]').focus();
}

function closeModal() {
  modal.setAttribute('hidden', '');
  trigger.focus();
}

แป้นพิมพ์ลัด

ใช้ตัวรับฟังเหตุการณ์เพื่อสร้างแป้นพิมพ์ลัด:

document.addEventListener('keydown', (e) => {
  // Close modal on Escape:
  if (e.key === 'Escape') closeModal();

  // Navigate tabs with arrow keys:
  if (e.key === 'ArrowRight') focusNextTab();
  if (e.key === 'ArrowLeft') focusPrevTab();

  // Submit form on Enter (default behavior in inputs):
  // Nothing needed — browser handles this
});

การทดสอบการนำทางด้วยแป้นพิมพ์

วิธีทดสอบการเข้าถึงด้วยแป้นพิมพ์:

  1. วางเมาส์ไว้ แล้วใช้แป้นพิมพ์เพียงอย่างเดียว
  2. กด Tab — คุณไปยังองค์ประกอบแบบโต้ตอบได้ทุกองค์ประกอบหรือไม่
  3. ตัวบ่งชี้โฟกัสมองเห็นได้ตลอดเวลาหรือไม่
  4. ลำดับการกด Tab มีเหตุผลหรือไม่
  5. คุณใช้ฟีเจอร์ทั้งหมด (แบบฟอร์ม, modal, เมนูแบบเลื่อนลง) ได้โดยไม่ใช้เมาส์หรือไม่
  6. กด Shift+Tab เพื่อนำทางย้อนกลับ

ตรวจสอบอย่างรวดเร็ว

คุณไม่ควรลบคุณสมบัติ CSS ใดออกจากองค์ประกอบทั้งหมด เพื่อให้เข้าถึงได้ด้วยแป้นพิมพ์

สรุป: การนำทางด้วยแป้นพิมพ์

สิ่งสำคัญเกี่ยวกับการเข้าถึงด้วยแป้นพิมพ์:

  • องค์ประกอบแบบโต้ตอบทั้งหมดต้องไปถึงได้ด้วย Tab
  • ลำดับ DOM = ลำดับการกด Tab — ต้องตรงกับการจัดวางที่มองเห็นได้
  • อย่าลบเส้นกรอบโฟกัส — ใช้ :focus-visible สำหรับรูปแบบแบบกำหนดเอง
  • ลิงก์ข้ามช่วยให้ข้ามการนำทางที่ซ้ำ ๆ ได้
  • กักโฟกัสไว้ใน modal และคืนโฟกัสเมื่อปิด
  • ทดสอบโดยใช้เว็บไซต์ด้วยแป้นพิมพ์เพียงอย่างเดียว

คำถามที่พบบ่อย

บทเรียน “การนำทางด้วยแป้นพิมพ์และลำดับโฟกัส” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การนำทางด้วยแป้นพิมพ์และลำดับโฟกัส” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส HTML Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส HTML Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การนำทางด้วยแป้นพิมพ์และลำดับโฟกัส”

ทำให้ทุกฟังก์ชันเข้าถึงได้ด้วยแป้นพิมพ์อย่างเป็นลำดับและมีเหตุผล คุณปฏิบัติ HTML Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน HTML Academy หรือไม่

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

บทเรียน “การนำทางด้วยแป้นพิมพ์และลำดับโฟกัส” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน HTML Academy นี้ได้ไหม

ได้ บทเรียน HTML Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เหตุใดการเข้าถึงจึงสำคัญ: ระดับ WCAG
  2. ลำดับหัวข้อสำหรับโปรแกรมอ่านหน้าจอ
  3. ข้อความ Alt ของรูปภาพ: เมื่อใดและเขียนอย่างไร
  4. การนำทางด้วยแป้นพิมพ์และลำดับโฟกัส
← กลับไปที่ HTML Academy