# Membuat Laman Web yang Mudah Diakses

> Sketchnote oleh [Tomomi Imura](https://twitter.com/girlie_mac)
## Kuiz Pra-Kuliah
[Kuiz pra-kuliah](https://ff-quizzes.netlify.app/web/)
> Kuasa Web terletak pada sifat sejagatnya. Akses oleh semua orang tanpa mengira kecacatan adalah aspek penting.
>
> \- Sir Timothy Berners-Lee, Pengarah W3C dan pencipta World Wide Web
Ada sesuatu yang mungkin mengejutkan anda: apabila anda membina laman web yang mudah diakses, anda bukan sahaja membantu orang kurang upaya—anda sebenarnya menjadikan web lebih baik untuk semua orang!
Pernah perasan potongan tepi jalan di sudut jalan? Ia pada asalnya direka untuk kerusi roda, tetapi kini ia membantu orang dengan stroller, pekerja penghantaran dengan troli, pelancong dengan beg beroda, dan penunggang basikal juga. Begitulah cara reka bentuk web yang mudah diakses berfungsi—penyelesaian yang membantu satu kumpulan sering kali memberi manfaat kepada semua orang. Menarik, bukan?
Dalam pelajaran ini, kita akan meneroka cara mencipta laman web yang benar-benar berfungsi untuk semua orang, tidak kira bagaimana mereka melayari web. Anda akan menemui teknik praktikal yang sudah tertanam dalam piawaian web, mencuba alat ujian, dan melihat bagaimana kebolehcapaian menjadikan laman web anda lebih mesra pengguna untuk semua.
Menjelang akhir pelajaran ini, anda akan yakin untuk menjadikan kebolehcapaian sebagai sebahagian semula jadi daripada aliran kerja pembangunan anda. Bersedia untuk meneroka bagaimana pilihan reka bentuk yang bijak boleh membuka web kepada berbilion pengguna? Jom kita mulakan!
> Anda boleh mengikuti pelajaran ini di [Microsoft Learn](https://docs.microsoft.com/learn/modules/web-development-101/accessibility/?WT.mc_id=academic-77807-sagibbon)!
## Memahami Teknologi Bantuan
Sebelum kita mula menulis kod, mari luangkan masa untuk memahami bagaimana orang dengan keupayaan berbeza sebenarnya mengalami web. Ini bukan sekadar teori—memahami corak navigasi dunia sebenar ini akan menjadikan anda seorang pembangun yang jauh lebih baik!
Teknologi bantuan adalah alat yang sangat menakjubkan yang membantu orang kurang upaya berinteraksi dengan laman web dengan cara yang mungkin mengejutkan anda. Setelah anda memahami cara teknologi ini berfungsi, mencipta pengalaman web yang mudah diakses menjadi lebih intuitif. Ia seperti belajar melihat kod anda melalui mata orang lain.
### Pembaca skrin
[Pembaca skrin](https://en.wikipedia.org/wiki/Screen_reader) adalah teknologi yang cukup canggih yang menukar teks digital kepada output suara atau braille. Walaupun ia digunakan terutamanya oleh orang yang mengalami masalah penglihatan, ia juga sangat membantu pengguna dengan masalah pembelajaran seperti disleksia.
Saya suka menganggap pembaca skrin seperti mempunyai seorang narator pintar yang membaca buku kepada anda. Ia membaca kandungan dengan kuat mengikut susunan logik, mengumumkan elemen interaktif seperti "butang" atau "pautan," dan menyediakan pintasan papan kekunci untuk melompat ke seluruh halaman. Tetapi inilah perkara penting—pembaca skrin hanya boleh berfungsi dengan baik jika kita membina laman web dengan struktur yang betul dan kandungan yang bermakna. Di sinilah peranan anda sebagai pembangun!
**Pembaca skrin popular di pelbagai platform:**
- **Windows**: [NVDA](https://www.nvaccess.org/about-nvda/) (percuma dan paling popular), [JAWS](https://webaim.org/articles/jaws/), [Narrator](https://support.microsoft.com/windows/complete-guide-to-narrator-e4397a0d-ef4f-b386-d8ae-c172f109bdb1/?WT.mc_id=academic-77807-sagibbon) (terbina dalam)
- **macOS/iOS**: [VoiceOver](https://support.apple.com/guide/voiceover/welcome/10) (terbina dalam dan sangat berkemampuan)
- **Android**: [TalkBack](https://support.google.com/accessibility/android/answer/6283677) (terbina dalam)
- **Linux**: [Orca](https://wiki.gnome.org/Projects/Orca) (percuma dan sumber terbuka)
**Cara pembaca skrin menavigasi kandungan web:**
Pembaca skrin menyediakan pelbagai kaedah navigasi yang menjadikan pelayaran lebih efisien untuk pengguna berpengalaman:
- **Pembacaan berurutan**: Membaca kandungan dari atas ke bawah, seperti membaca buku
- **Navigasi penanda**: Melompat antara bahagian halaman (header, nav, main, footer)
- **Navigasi tajuk**: Melompat antara tajuk untuk memahami struktur halaman
- **Senarai pautan**: Menjana senarai semua pautan untuk akses cepat
- **Kawalan borang**: Menavigasi secara langsung antara medan input dan butang
> 💡 **Ini sesuatu yang mengejutkan saya**: 68% pengguna pembaca skrin menavigasi terutamanya melalui tajuk ([Kajian WebAIM](https://webaim.org/projects/screenreadersurvey9/#finding)). Ini bermakna struktur tajuk anda seperti peta jalan untuk pengguna—apabila anda melakukannya dengan betul, anda secara literal membantu orang mencari jalan di sekitar kandungan anda dengan lebih cepat!
### Membina aliran kerja ujian anda
Berita baik—ujian kebolehcapaian yang berkesan tidak perlu membebankan! Anda perlu menggabungkan alat automatik (mereka hebat dalam menangkap isu yang jelas) dengan beberapa ujian manual. Berikut adalah pendekatan sistematik yang saya dapati menangkap kebanyakan isu tanpa memakan masa seharian anda:
**Aliran kerja ujian manual penting:**
```mermaid
graph TD
A[Start Testing] --> B{Keyboard Navigation}
B --> C[Tab through all interactive elements]
C --> D{Screen Reader Testing}
D --> E[Test with NVDA/VoiceOver]
E --> F{Zoom Testing}
F --> G[Zoom to 200% and test functionality]
G --> H{Color/Contrast Check}
H --> I[Verify all text meets contrast ratios]
I --> J{Focus Management}
J --> K[Ensure focus indicators are visible]
K --> L[Testing Complete]
```
**Senarai semak ujian langkah demi langkah:**
1. **Navigasi papan kekunci**: Gunakan hanya Tab, Shift+Tab, Enter, Space, dan kekunci anak panah
2. **Ujian pembaca skrin**: Aktifkan NVDA, VoiceOver, atau Narrator dan navigasi dengan mata tertutup
3. **Ujian zum**: Uji pada tahap zum 200% dan 400%
4. **Pengesahan kontras warna**: Periksa semua teks dan komponen UI
5. **Ujian penunjuk fokus**: Pastikan semua elemen interaktif mempunyai keadaan fokus yang kelihatan
✅ **Mulakan dengan Lighthouse**: Buka DevTools pelayar anda, jalankan audit kebolehcapaian Lighthouse, kemudian gunakan hasilnya untuk memfokuskan kawasan ujian manual anda.
### Alat zum dan pembesaran
Anda tahu bagaimana kadang-kadang anda mencubit untuk zum pada telefon anda apabila teks terlalu kecil, atau memicingkan mata pada skrin komputer riba anda dalam cahaya matahari yang terang? Ramai pengguna bergantung pada alat pembesaran untuk menjadikan kandungan dapat dibaca setiap hari. Ini termasuk orang yang mengalami masalah penglihatan, warga emas, dan sesiapa sahaja yang pernah cuba membaca laman web di luar rumah.
Teknologi zum moden telah berkembang melampaui sekadar membesarkan sesuatu. Memahami cara alat ini berfungsi akan membantu anda mencipta reka bentuk responsif yang kekal berfungsi dan menarik pada setiap tahap pembesaran.
**Keupayaan zum pelayar moden:**
- **Zum halaman**: Menskalakan semua kandungan secara berkadar (teks, imej, susun atur) - ini adalah kaedah yang disukai
- **Zum teks sahaja**: Meningkatkan saiz fon sambil mengekalkan susun atur asal
- **Pinch-to-zoom**: Sokongan gerak isyarat mudah alih untuk pembesaran sementara
- **Sokongan pelayar**: Semua pelayar moden menyokong zum sehingga 500% tanpa memecahkan fungsi
**Perisian pembesaran khusus:**
- **Windows**: [Magnifier](https://support.microsoft.com/windows/use-magnifier-to-make-things-on-the-screen-easier-to-see-414948ba-8b1c-d3bd-8615-0e5e32204198) (terbina dalam), [ZoomText](https://www.freedomscientific.com/training/zoomtext/getting-started/)
- **macOS/iOS**: [Zoom](https://www.apple.com/accessibility/mac/vision/) (terbina dalam dengan ciri lanjutan)
> ⚠️ **Pertimbangan Reka Bentuk**: WCAG memerlukan kandungan kekal berfungsi apabila dizum sehingga 200%. Pada tahap ini, penggulungan mendatar harus minimum, dan semua elemen interaktif harus kekal mudah diakses.
✅ **Uji reka bentuk responsif anda**: Zum pelayar anda kepada 200% dan 400%. Adakah susun atur anda menyesuaikan dengan baik? Adakah anda masih boleh mengakses semua fungsi tanpa penggulungan yang berlebihan?
## Alat Ujian Kebolehcapaian Moden
Sekarang anda memahami bagaimana orang menavigasi web dengan teknologi bantuan, mari kita terokai alat yang membantu anda membina dan menguji laman web yang mudah diakses.
Anggaplah begini: alat automatik sangat bagus untuk menangkap isu yang jelas (seperti teks alt yang hilang), manakala ujian manual membantu anda memastikan laman web anda selesa digunakan dalam dunia sebenar. Gabungan kedua-duanya memberikan keyakinan bahawa laman web anda berfungsi untuk semua orang.
### Ujian kontras warna
Berita baik: kontras warna adalah salah satu isu kebolehcapaian yang paling biasa, tetapi ia juga salah satu yang paling mudah untuk diperbaiki. Kontras yang baik memberi manfaat kepada semua orang—daripada pengguna yang mengalami masalah penglihatan hingga mereka yang cuba membaca telefon mereka di pantai.
**Keperluan kontras WCAG:**
| Jenis Teks | WCAG AA (Minimum) | WCAG AAA (Dipertingkatkan) |
|------------|-------------------|---------------------------|
| **Teks biasa** (di bawah 18pt) | Nisbah kontras 4.5:1 | Nisbah kontras 7:1 |
| **Teks besar** (18pt+ atau 14pt+ tebal) | Nisbah kontras 3:1 | Nisbah kontras 4.5:1 |
| **Komponen UI** (butang, sempadan borang) | Nisbah kontras 3:1 | Nisbah kontras 3:1 |
**Alat ujian penting:**
- [Colour Contrast Analyser](https://www.tpgi.com/color-contrast-checker/) - Aplikasi desktop dengan pemilih warna
- [WebAIM Contrast Checker](https://webaim.org/resources/contrastchecker/) - Berasaskan web dengan maklum balas segera
- [Stark](https://www.getstark.co/) - Plugin alat reka bentuk untuk Figma, Sketch, Adobe XD
- [Accessible Colors](https://accessible-colors.com/) - Cari palet warna yang mudah diakses
✅ **Bina palet warna yang lebih baik**: Mulakan dengan warna jenama anda dan gunakan pemeriksa kontras untuk mencipta variasi yang mudah diakses. Dokumentasikan ini sebagai token warna yang mudah diakses dalam sistem reka bentuk anda.
### Audit kebolehcapaian yang menyeluruh
Ujian kebolehcapaian yang paling berkesan menggabungkan pelbagai pendekatan. Tiada satu alat pun yang dapat menangkap segalanya, jadi membina rutin ujian dengan pelbagai kaedah memastikan liputan yang menyeluruh.
**Ujian berasaskan pelayar (terbina dalam DevTools):**
- **Chrome/Edge**: Audit kebolehcapaian Lighthouse + panel Kebolehcapaian
- **Firefox**: Pemeriksa Kebolehcapaian dengan paparan pokok terperinci
- **Safari**: Tab Audit dalam Web Inspector dengan simulasi VoiceOver
**Sambungan ujian profesional:**
- [axe DevTools](https://www.deque.com/axe/devtools/) - Ujian automatik standard industri
- [WAVE](https://wave.webaim.org/extension/) - Maklum balas visual dengan penonjolan ralat
- [Accessibility Insights](https://accessibilityinsights.io/) - Suite ujian komprehensif Microsoft
**Integrasi baris perintah dan CI/CD:**
- [axe-core](https://github.com/dequelabs/axe-core) - Perpustakaan JavaScript untuk ujian automatik
- [Pa11y](https://pa11y.org/) - Alat ujian kebolehcapaian baris perintah
- [Lighthouse CI](https://github.com/GoogleChrome/lighthouse-ci) - Penilaian kebolehcapaian automatik
> 🎯 **Matlamat Ujian**: Sasarkan skor kebolehcapaian Lighthouse 95+ sebagai asas anda. Ingat, alat automatik hanya menangkap kira-kira 30-40% isu kebolehcapaian—ujian manual masih penting!
## Membina Kebolehcapaian dari Awal
Kunci kejayaan kebolehcapaian adalah membinanya ke dalam asas anda sejak hari pertama. Saya tahu ia menggoda untuk berfikir "Saya akan tambah kebolehcapaian kemudian," tetapi itu seperti cuba menambah tanjakan ke rumah selepas ia dibina. Boleh? Ya. Mudah? Tidak begitu.
Anggaplah kebolehcapaian seperti merancang rumah—jauh lebih mudah untuk memasukkan kebolehcapaian kerusi roda dalam rancangan seni bina awal anda daripada menyesuaikan semuanya kemudian.
### Prinsip POUR: Asas kebolehcapaian anda
Garis Panduan Kebolehcapaian Kandungan Web (WCAG) dibina berdasarkan empat prinsip asas yang disebut sebagai POUR. Jangan risau—ini bukan konsep akademik yang membosankan! Ia sebenarnya garis panduan praktikal untuk mencipta kandungan yang berfungsi untuk semua orang.
Setelah anda memahami POUR, membuat keputusan kebolehcapaian menjadi lebih intuitif. Ia seperti mempunyai senarai semak mental yang membimbing pilihan reka bentuk anda. Mari kita pecahkan:
**🔍 Boleh Dipercepatkan**: Maklumat mesti dapat disampaikan dengan cara yang dapat dirasakan oleh pengguna melalui deria yang tersedia
- Sediakan alternatif teks untuk kandungan bukan teks (imej, video, audio)
- Pastikan kontras warna mencukupi untuk semua teks dan komponen UI
- Tawarkan kapsyen dan transkrip untuk kandungan multimedia
- Reka kandungan yang kekal berfungsi apabila dizum sehingga 200%
- Gunakan ciri deria berganda (bukan hanya warna) untuk menyampaikan maklumat
**🎮 Boleh Dikendalikan**: Semua komponen antara muka mesti boleh dikendalikan melalui kaedah input yang tersedia
- Pastikan semua fungsi boleh diakses melalui navigasi papan kekunci
- Berikan pengguna masa yang mencukupi untuk membaca dan berinteraksi dengan kandungan
- Elakkan kandungan yang menyebabkan sawan atau gangguan vestibular
- Bantu pengguna menavigasi dengan struktur dan penanda yang jelas
- Pastikan elemen interaktif mempunyai saiz sasaran yang mencukupi (minimum 44px)
**📖 Boleh Difahami**: Maklumat dan operasi UI mesti jelas dan mudah difahami
- Gunakan bahasa yang jelas dan mudah sesuai untuk audiens anda
- Pastikan kandungan muncul dan beroperasi dengan cara yang boleh diramal dan konsisten
- Sediakan arahan dan mesej ralat yang jelas untuk input pengguna
- Bantu pengguna memahami dan membetulkan kesilapan dalam borang
- Susun kandungan dengan susunan bacaan logik dan hierarki maklumat
**💪 Kukuh**: Kandungan mesti berfungsi dengan boleh dipercayai di pelbagai teknologi dan peranti bantuan
- Gunakan HTML yang sah dan semantik sebagai asas anda
- Pastikan keserasian dengan teknologi bantuan semasa dan masa depan
- Ikuti piawaian web dan amalan terbaik untuk markup
- Uji di pelbagai pelayar, peranti, dan alat bantuan
- Struktur kandungan supaya ia merosot dengan baik apabila ciri lanjutan tidak disokong
## Mencipta Reka Bentuk Visual yang Mudah Diakses
Reka bentuk visual yang baik dan kebolehcapaian berjalan seiring. Apabila anda mereka bentuk dengan kebolehcapaian dalam fikiran, anda sering mendapati bahawa kekangan ini membawa kepada penyelesaian yang lebih bersih dan elegan yang memberi manfaat kepada semua pengguna.
Mari kita terokai cara mencipta reka bentuk yang menarik secara visual yang berfungsi untuk semua orang, tanpa mengira keupayaan visual mereka atau keadaan di mana mereka melihat kandungan anda.
### Strategi warna dan kebolehcapaian visual
Warna adalah alat komunikasi yang kuat, tetapi ia tidak seharusnya menjadi satu-satunya cara untuk menyampaikan maklumat penting. Reka bentuk yang melangkaui warna mencipta pengalaman yang lebih kukuh dan inklusif yang berfungsi dalam pelbagai situasi.
**Reka bentuk untuk perbezaan penglihatan warna:**
Kira-kira 8% lelaki dan 0.5% wanita mempunyai beberapa bentuk perbezaan penglihatan warna (sering disebut "buta warna"). Jenis yang paling biasa adalah:
- **Deuteranopia**: Sukar membezakan warna merah dan hijau
- **Protanopia**: Warna merah kelihatan lebih malap
- **Tritanopia**: Sukar membezakan warna biru dan kuning (jarang berlaku)
**Strategi warna inklusif:**
```css
/* ❌ Bad: Using only color to indicate status */
.error { color: red; }
.success { color: green; }
/* ✅ Good: Color plus icons and context */
.error {
color: #d32f2f;
border-left: 4px solid #d32f2f;
}
.error::before {
content: "⚠️";
margin-right: 8px;
}
.success {
color: #2e7d32;
border-left: 4px solid #2e7d32;
}
.success::before {
content: "✅";
margin-right: 8px;
}
```
**Melangkaui keperluan kontras asas:**
- Uji pilihan warna anda dengan simulator buta warna
- Gunakan corak, tekstur, atau bentuk bersama kod warna
- Pastikan keadaan interaktif tetap dapat dibezakan tanpa warna
- Pertimbangkan bagaimana reka bentuk anda kelihatan dalam mod kontras tinggi
✅ **Uji kebolehcapaian warna anda**: Gunakan alat seperti [Coblis](https://www.color-blindness.com/coblis-color-blindness-simulator/) untuk melihat bagaimana laman web anda muncul kepada pengguna dengan jenis penglihatan warna yang berbeza.
### Penunjuk fokus dan reka bentuk interaksi
Penunjuk fokus adalah setara digital dengan kursor—ia menunjukkan kepada pengguna papan kekunci di mana mereka berada di halaman. Penunjuk fokus yang direka dengan baik meningkatkan pengalaman untuk semua orang dengan menjadikan interaksi jelas dan boleh diramal.
**Amalan terbaik penunjuk fokus moden:**
```css
/* Enhanced focus styles that work across browsers */
button:focus-visible {
outline: 2px solid #0066cc;
outline-offset: 2px;
box-shadow: 0 0 0 4px rgba(0, 102, 204, 0.25);
}
/* Remove focus outline for mouse users, preserve for keyboard users */
button:focus:not(:focus-visible) {
outline: none;
}
/* Focus-within for complex components */
.card:focus-within {
box-shadow: 0 0 0 3px rgba(74, 144, 164, 0.5);
border-color: #4A90A4;
}
/* Ensure focus indicators meet contrast requirements */
.custom-focus:focus-visible {
outline: 3px solid #ffffff;
outline-offset: 2px;
box-shadow: 0 0 0 6px #000000;
}
```
**Keperluan penunjuk fokus:**
- **Keterlihatan**: Mesti mempunyai nisbah kontras sekurang-kurangnya 3:1 dengan elemen sekeliling
- **Lebar**: Ketebalan minimum 2px di sekeliling elemen
- **Kekal**: Harus tetap kelihatan sehingga fokus beralih ke tempat lain
- **Perbezaan**: Mesti berbeza secara visual daripada keadaan UI lain
> 💡 **Tip Reka Bentuk**: Penunjuk fokus yang hebat sering menggunakan gabungan garis luar, bayang kotak, dan perubahan warna untuk memastikan keterlihatan di pelbagai latar belakang dan konteks.
✅ **Audit penunjuk fokus**: Tab melalui laman web anda dan perhatikan elemen mana yang mempunyai penunjuk fokus yang jelas. Adakah ada yang sukar dilihat atau hilang sepenuhnya?
### HTML Semantik: Asas kebolehcapaian
HTML semantik adalah seperti memberikan teknologi bantuan sistem GPS untuk laman web anda. Apabila anda menggunakan elemen HTML yang betul untuk tujuan yang dimaksudkan, anda pada dasarnya menyediakan pembaca skrin, papan kekunci, dan alat lain dengan peta terperinci untuk membantu pengguna menavigasi dengan berkesan.
Berikut adalah analogi yang benar-benar membuat saya faham: HTML semantik adalah perbezaan antara perpustakaan yang teratur dengan kategori yang jelas dan tanda yang berguna berbanding gudang di mana buku-buku berselerak secara rawak. Kedua-dua tempat mempunyai buku yang sama, tetapi yang mana satu yang anda lebih suka untuk mencari sesuatu? Tepat sekali!
**Blok binaan struktur halaman yang boleh diakses:**
```html
Your Site Name
Article Title
Published on
First Section
Content that relates to this section...
Second Section
More related content...
```
**Mengapa HTML semantik mengubah kebolehcapaian:**
| Elemen Semantik | Tujuan | Manfaat Pembaca Skrin |
|------------------|---------|----------------------|
| `` | Tajuk halaman atau bahagian | "Landmark banner" - navigasi cepat ke atas |
| `