tabindex dan accesskey
Atur urutan navigasi keyboard dan pintasan.
tabindex dan accesskey adalah pelajaran HTML Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar HTML Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus HTML Academy mencakup 4 pelajaran total.
Navigasi Papan Ketik
Pengguna tanpa tetikus mengandalkan Tab untuk menavigasi elemen interaktif:
- Dapat menerima fokus secara alami:
<a href>,<button>,<input>,<select>,<textarea> - Elemen noninteraktif (
<div>,<span>) tidak berada dalam urutan tab tabindexmengontrol apakah dan di mana elemen muncul dalam urutan tab
tabindex="0"
tabindex="0" menambahkan elemen noninteraktif ke urutan tab alami:
<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" membuat elemen dapat menerima fokus secara terprogram, tetapi menghapusnya dari urutan 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 — Hindari
Nilai tabindex positif (misalnya tabindex="3") menetapkan urutan tab khusus — hindari ini:
<!-- 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 -->Manajemen Fokus dalam SPA
Aplikasi satu halaman harus mengelola 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 Dialog Modal
Perangkap fokus di dalam dialog modal yang terbuka agar Tab tetap berada 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 menetapkan pintasan papan ketik untuk sebuah 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>Keterbatasan accesskey
accesskey memiliki beberapa masalah besar:
- Tombol aktivasi berbeda-beda di setiap peramban dan sistem operasi
- Bertabrakan dengan pintasan peramban (misalnya Alt+F = menu Berkas)
- Secara bawaan tidak diumumkan oleh pembaca layar
- Jarang digunakan dalam praktik — dokumentasikan jika Anda menggunakannya
Indikator Fokus yang Terlihat
Jangan pernah menyembunyikan garis luar fokus — garis ini penting bagi pengguna papan ketik:
/* 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 */Pola Tautan Lewati
Tautan lewati memungkinkan pengguna papan ketik melewati 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 ke sebuah elemen saat halaman dimuat:
<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 -->Pemeriksaan Singkat
Nilai tabindex berapa yang membuat elemen dapat menerima fokus melalui JavaScript, tetapi melewatinya dalam navigasi Tab biasa?
Ringkasan: tabindex dan accesskey
Hal-hal penting tentang aksesibilitas papan ketik:
tabindex="0"— tambahkan ke urutan tab alamitabindex="-1"— dapat menerima fokus secara terprogram, tetapi tidak berada dalam urutan tab- Hindari nilai tabindex positif
- Jangan pernah menghapus garis luar
:focus-visible - Terapkan tautan lewati untuk pengguna papan ketik
accesskeytersedia, tetapi jarang praktis karena konflik
Belajar HTML dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 40
- Pelajaran
- 159
Pertanyaan yang Sering Diajukan
Apakah pelajaran “tabindex dan accesskey” gratis?
Ya — teks lengkap “tabindex dan accesskey” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus HTML Academy, upgrade ke CoddyKit PRO. Kursus HTML Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “tabindex dan accesskey”?
Atur urutan navigasi keyboard dan pintasan. Kamu berlatih HTML Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai HTML Academy?
Tidak diperlukan pengalaman sebelumnya. HTML Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “tabindex dan accesskey” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran HTML Academy ini?
Ya. Setiap pelajaran HTML Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- id class style dan title
- Atribut hidden
- tabindex dan accesskey
- Atribut Data Khusus data-*