HTML Academy · Pelajaran

tabindex dan accesskey

Kawal susunan navigasi papan kekunci dan pintasan.

Pelajaran 3 daripada 413 langkah

tabindex dan accesskey ialah pelajaran HTML Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran HTML Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus HTML Academy merangkumi sejumlah 4 pelajaran.

Navigasi Papan Kekunci

Pengguna tanpa tetikus bergantung pada Tab untuk menavigasi elemen interaktif:

  • Boleh difokuskan secara semula jadi: <a href>, <button>, <input>, <select>, <textarea>
  • Elemen bukan interaktif (<div>, <span>) tidak berada dalam tertib tab
  • tabindex mengawal sama ada dan di mana elemen muncul dalam tertib tab

tabindex="0"

tabindex="0" menambahkan elemen bukan interaktif ke dalam tertib tab semula jadi:

<div tabindex="0" role="button" onclick="handleClick()">
  Custom Button
</div>
<!-- Now Tab navigates to this div -->
<!-- It receives focus at the natural position in the DOM -->

<!-- Better: use a real button instead! -->
<button onclick="handleClick()">Real Button</button>

tabindex="-1"

tabindex="-1" menjadikan elemen boleh difokuskan secara program tetapi mengeluarkannya daripada tertib tab:

<div id="modal" tabindex="-1" role="dialog">
  <!-- modal content -->
</div>

<script>
// Open modal and send focus to it:
document.getElementById('modal').focus();
// Modal is now focused but not in the normal tab sequence
</script>

Nilai tabindex Positif — Elakkan

Nilai tabindex positif (contohnya tabindex="3") menetapkan tertib tab tersuai — elakkan penggunaannya:

<!-- BAD: positive tabindex creates unpredictable order -->
<input tabindex="3">
<input tabindex="1">
<input tabindex="2">

<!-- The tab order becomes: 1, 2, 3, then all tabindex=0 elements -->
<!-- This almost always confuses users and fails WCAG 2.4.3 -->

<!-- Fix the DOM order instead of using positive tabindex -->

Pengurusan Fokus dalam SPA

Aplikasi satu halaman perlu mengurus fokus secara manual:

// When navigating to a new route:
document.querySelector('#main-content').focus();

// When opening a modal:
const modal = document.getElementById('modal');
modal.removeAttribute('hidden');
modal.querySelector('[autofocus], button, [tabindex]').focus();

// When closing a modal: return focus to the trigger
document.getElementById('open-btn').focus();

Perangkap Fokus dalam Modal

Perangkap fokus di dalam modal yang terbuka supaya Tab kekal di dalamnya:

function trapFocus(element) {
  const focusable = element.querySelectorAll(
    'a, button, input, textarea, select, [tabindex]:not([tabindex="-1"])'
  );
  const first = focusable[0];
  const last = focusable[focusable.length - 1];

  element.addEventListener('keydown', e => {
    if (e.key === 'Tab') {
      if (e.shiftKey && document.activeElement === first) {
        e.preventDefault(); last.focus();
      } else if (!e.shiftKey && document.activeElement === last) {
        e.preventDefault(); first.focus();
      }
    }
  });
}

Atribut accesskey

Atribut accesskey memberikan pintasan papan kekunci kepada elemen:

<button accesskey="s">Submit</button>
<!-- On Windows: Alt+S focuses/activates the button -->
<!-- On Mac: Control+Option+S -->
<!-- On Firefox: Shift+Alt+S -->

<a href="/" accesskey="h">Home</a>

Had accesskey

accesskey mempunyai beberapa masalah penting:

  • Kekunci pengaktifan berbeza mengikut pelayar dan sistem pengendalian
  • Bercanggah dengan pintasan pelayar (contohnya Alt+F = menu Fail)
  • Tidak diumumkan oleh pembaca skrin secara lalai
  • Jarang digunakan dalam amalan — dokumentasikan jika anda menggunakannya

Penunjuk Fokus yang Kelihatan

Jangan sekali-kali menyembunyikan garis luar fokus — garis ini penting untuk pengguna papan kekunci:

/* BAD: removes focus outline for everyone */
* { outline: none; }

/* Better: style focus outlines, don't remove them */
:focus-visible {
  outline: 2px solid #0070f3;
  outline-offset: 2px;
  border-radius: 3px;
}

/* :focus-visible only shows outline for keyboard navigation -->
/* Mouse clicks do not trigger :focus-visible in modern browsers */

Corak Pautan Langkau

Pautan langkau membolehkan pengguna papan kekunci melangkaui navigasi yang berulang:

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

<nav>... long navigation ...</nav>

<main id="main-content" tabindex="-1">... content ...</main>

<!-- CSS: -->
<!--
.skip-link {
  position: absolute;
  top: -100%;
}
.skip-link:focus {
  top: 0;
}
-->

Atribut autofocus

Atribut autofocus memindahkan fokus kepada elemen apabila halaman dimuatkan:

<input type="search" autofocus placeholder="Search...">
<!-- Useful on search pages or forms with a single primary field -->
<!-- Use sparingly: it can disrupt users who rely on the page top for orientation -->
<!-- Only one element per page should have autofocus -->

Semakan Pantas

Nilai tabindex yang manakah menjadikan elemen boleh difokuskan melalui JavaScript tetapi melangkaunya dalam navigasi Tab biasa?

Imbas Kembali: tabindex dan accesskey

Perkara penting tentang kebolehcapaian papan kekunci:

  • tabindex="0" — tambah ke dalam tertib tab semula jadi
  • tabindex="-1" — boleh difokuskan secara program, tetapi tidak berada dalam tertib tab
  • Elakkan nilai tabindex positif
  • Jangan sekali-kali membuang garis luar :focus-visible
  • Laksanakan pautan langkau untuk pengguna papan kekunci
  • accesskey tersedia tetapi jarang praktikal kerana konflik
Percuma untuk bermula

Pelajari HTML dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
40
Pelajaran
159

Soalan Lazim

Adakah pelajaran “tabindex dan accesskey” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran HTML Academy, termasuk “tabindex dan accesskey”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus HTML Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “tabindex dan accesskey”?

Kawal susunan navigasi papan kekunci dan pintasan. Anda berlatih HTML Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan HTML Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran HTML Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “tabindex dan accesskey” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran HTML Academy ini?

Ya. Setiap pelajaran HTML Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. id, class, style dan title
  2. Atribut hidden
  3. tabindex dan accesskey
  4. Atribut Data Tersuai data-*
← Kembali ke HTML Academy