# Креирање приступачних веб страница

> Скетчнот од [Томоми Имура](https://twitter.com/girlie_mac)
```mermaid
journey
title Ваше Путовање Учeњa Приступачности
section Основа
Разумевање Корисника: 5: You
Алати за Тестирање: 4: You
ПОРУ Принципи: 5: You
section Развој Вештина
Семантички ХТМЛ: 4: You
Визуелни Дизајн: 5: You
АРИА Технике: 4: You
section Савладавање Практике
Кућна Навигација: 5: You
Приступачност Форми: 4: You
Тестирање у Практици: 5: You
```
## Пре-предавачки квиз
[Пре-предавачки квиз](https://ff-quizzes.netlify.app/web/)
> Снага Веба је у његовој универзалности. Приступ за све без обзира на инвалидитет је суштински аспект.
>
> \- Сир Тимоти Бернерс-Ли, директор W3C и проналазач Ворлд Вајд Веба
Ево нечега што би вас могло изненадити: када правите приступачне веб сајтове, ви не помажете само особама са инвалидитетом — заправо побољшавате веб за све!
Јесте ли икада приметили оне успоне на тротоарима на угловима улица? Првобитно су били направљени за колица, али сада помажу људима са колицима за бебе, радницима за доставу са колицима, путницима са точковима на пртљагу и бициклистима такође. Управо тако функционише приступачан веб дизајн — решења која помажу једној групи често на крају користе свима. Лепо, зар не?
У овој лекцији ћемо истражити како да направимо веб странице које заиста раде за све, без обзира како претражују веб. Открићете практичне технике које су већ уграђене у веб стандарде, пробати алате за тестирање и видети како приступачност чини ваше сајтове функционалнијим за све кориснике.
До краја ове лекције имаћете самопоуздање да учините приступачност природним делом вашег развојног тока рада. Спремни да истражимо како промишљени дизајн може отворити веб за милијарде корисника? Хајде да почнемо!
```mermaid
mindmap
root((Веб приступачност))
Users
Читаоци екрана
Навигација тастатуром
Гласовна контрола
Зумање
Technologies
HTML семантика
ARIA атрибути
CSS индикатори фокуса
Догађаји тастатуре
Benefits
Шира публика
Бољи SEO
Законска usklađenost
Универзални дизајн
Testing
Аутоматизовани алати
Ручно тестирање
Повратне информације корисника
Стварна помагала технологија
```
> Ову лекцију можете проћи на [Microsoft Learn](https://docs.microsoft.com/learn/modules/web-development-101/accessibility/?WT.mc_id=academic-77807-sagibbon)!
## Разумевање асистивних технологија
Пре него што заронимо у кодирање, хајде да одвојимо минут и разумемо како људи са различитим способностима заправо доживљавају веб. Ово није само теорија — разумевање ових стварних образаца навигације учиниће вас много бољим програмером!
Асистивне технологије су сјајни алати који помажу особама са инвалидитетом да интерагују са веб страницама на начине који вас могу изненадити. Када схватите како ове технологије функционишу, креирање приступачних веб искустава постаје много интуитивније. Као да учите да гледате свој код очима неког другог.
### Читачи екрана
[Читачи екрана](https://en.wikipedia.org/wiki/Screen_reader) су прилично софистицирани технолошки алати који претварају дигитални текст у говор или брајев излаз. Иако их углавном користе особе са оштећењем вида, такође су веома корисни за кориснике са тешкоћама у учењу као што је дислексија.
Волим да замислим читача екрана као паметног приповедача који вам чита књигу. Чита садржај наглас у логичном редоследу, најављује интерактивне елементе као „дугме“ или „линк“ и пружа тастатурне пречице за скокове по страници. Али ево ствари — читачи екрана могу да раде свој чар само ако направимо веб сајтове са исправном структуром и смисленим садржајем. Ту долазите ви као програмер!
**Популарни читачи екрана на различитим платформама:**
- **Windows**: [NVDA](https://www.nvaccess.org/about-nvda/) (бесплатан и најпопуларнији), [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) (уграђени)
- **macOS/iOS**: [VoiceOver](https://support.apple.com/guide/voiceover/welcome/10) (уграђен и веома способан)
- **Android**: [TalkBack](https://support.google.com/accessibility/android/answer/6283677) (уграђен)
- **Linux**: [Orca](https://wiki.gnome.org/Projects/Orca) (бесплатан и отвореног кода)
**Како читачи екрана навигирају кроз веб садржаје:**
Читачи екрана пружају више начина навигације који чине прегледање ефикасним за искусне кориснике:
- **Секвенцијално читање**: Чита садржај од врха према дну, као читање књиге
- **Навигација према оријентирима**: Скочи између секција странице (заглавље, мени, главни садржај, фуснота)
- **Навигација по насловима**: Прескаче између наслова да би разумео структуру странице
- **Листе линкова**: Генерише листу свих линкова за брзи приступ
- **Управљање формама**: Навигира директно између уносних поља и дугмади
> 💡 **Ово ме је задивило**: 68% корисника читача екрана најчешће се креће помоћу наслова ([WebAIM Survey](https://webaim.org/projects/screenreadersurvey9/#finding)). То значи да ваша структура наслова представља мапу за кориснике — када је исправна, буквално помажете људима да брже пронађу пут кроз ваш садржај!
### Креирање вашег тестирачког тока рада
Ево добре вести — ефикасно тестирање приступачности не мора бити преоптерећујуће! Треба да комбинујете аутоматизоване алате (одлични су у хватању очигледних проблема) са ручним тестирањем. Ево систематског приступа који сам открио да хвата највише проблема без трошења целог дана:
**Основни ручни тестирачки ток рада:**
```mermaid
flowchart TD
A[🚀 Почетак тестирања] --> B{⌨️ Навигација тастатуром}
B --> C[Табом кроз све интерактивне елементе]
C --> D{🎧 Тестирање читача екрана}
D --> E[Тестирајте са NVDA/VoiceOver]
E --> F{🔍 Тестирање зумирања}
F --> G[Зумирајте на 200% и тестирате функционалност]
G --> H{🎨 Провера боје/контраста}
H --> I[Потврдите да сав текст задовољава контрастне односе]
I --> J{👁️ Управљање фокусом}
J --> K[Осигурајте да су индикатори фокуса видљиви]
K --> L[✅ Тестирање завршено]
style A fill:#e3f2fd
style L fill:#e8f5e8
style B fill:#fff3e0
style D fill:#f3e5f5
style F fill:#e0f2f1
style H fill:#fce4ec
style J fill:#e8eaf6
```
**Чеклист за корак по корак тестирање:**
1. **Тастатурна навигација**: Користите само Tab, Shift+Tab, Enter, Space и стрелице
2. **Тестирање читача екрана**: Укључите NVDA, VoiceOver или Narrator и навигирајте са затвореним очима
3. **Тестирање зумирања**: Тестирајте на 200% и 400% нивоу зума
4. **Провера контраста боја**: Проверите сав текст и UI компоненте
5. **Тестирање индикатора фокуса**: Осигурајте да сви интерактивни елементи имају видљиве стањe фокуса
✅ **Почните са Lighthouse**: Отворите DevTools у прегледачу, покрените Lighthouse приступачност аудит, затим користите резултате за усмеравање ручних тестова.
### Алатке за зум и повећање
Знате како понекад шчепате екран телефона да увећате текст када је премали, или шкљоцнете очима у екран лаптопа на јаком сунцу? Многи корисници се свакодневно ослањају на алатке за увећање да би садржај био читљив. Ово укључује особе слабијег вида, старије особе и сваки пут некога ко је икада покушао да чита веб напољу.
Модерне зум технологије су много више од само увећања. Разумевање како ови алати функционишу помоћи ће вам да креирате одзивне дизајне који остају функционални и привлачни при било ком нивоу увећања.
**Модерне могућности зума прегледача:**
- **Зум странице**: Пропорционално увећава сав садржај (текст, слике, распореде) — ово је препоручени метод
- **Зум само текста**: Повећава величину фонта док задржава оригиналну структуру
- **Пинч-то-зум**: Подршка покретима на мобилним уређајима за привремено увећање
- **Подршка прегледача**: Сви модерни прегледачи подржавају зум до 500% без губитка функционалности
**Специјализовани софтвер за увећање:**
- **Windows**: [Magnifier](https://support.microsoft.com/windows/use-magnifier-to-make-things-on-the-screen-easier-to-see-414948ba-8b1c-d3bd-8615-0e5e32204198) (уграђен), [ZoomText](https://www.freedomscientific.com/training/zoomtext/getting-started/)
- **macOS/iOS**: [Zoom](https://www.apple.com/accessibility/mac/vision/) (уграђен са напредним функцијама)
> ⚠️ **Дизајнерски аспект**: WCAG захтева да садржај остане функционалан при увећању од 200%. На овом нивоу, хоризонтално скроловање би требало бити минимално, а сви интерактивни елементи приступачни.
✅ **Тестирајте свој одзивни дизајн**: Увећајте прегледач на 200% и 400%. Да ли се ваш распоред лепо прилагођава? Можете ли и даље приступити свим функционалностима без превише скроловања?
## Модерни алати за тестирање приступачности
Сад када разумете како људи користе асистивне технологије да навигирају вебом, хајде да истражимо алате који вам помажу да креирате и тестирате приступачне веб сајтове.
Замислите ово овако: аутоматизовани алати су одлични у хватању очигледних проблема (нпр. недостатак алт тега), док ручно тестирање помаже да осигурате да је сајт пријатан за коришћење у стварном свету. Заједно вам дају уверење да сајтови раде за све.
### Тестирање контраста боја
Ево добре вести: контраст боја је један од најчешћих проблема са приступачношћу, али и један од најлаже решивих. Добар контраст користи свима — од корисника са оштећењем вида до оних који покушавају да читају телефоне на плажи.
**WCAG захтеви за контраст:**
| Тип текста | WCAG AA (Минимално) | WCAG AAA (Побољшано) |
|------------|---------------------|----------------------|
| **Обичан текст** (испод 18pt) | однос контраста 4.5:1 | однос контраста 7:1 |
| **Велики текст** (18pt+ или 14pt+ дебео) | однос контраста 3:1 | однос контраста 4.5:1 |
| **UI компоненте** (дугмад, границе форми) | однос контраста 3:1 | однос контраста 3:1 |
**Неопходни алати за тестирање:**
- [Colour Contrast Analyser](https://www.tpgi.com/color-contrast-checker/) - Десктоп апликација са алатом за бирање боја
- [WebAIM Contrast Checker](https://webaim.org/resources/contrastchecker/) - Веб-апликација са тренутном повратном информацијом
- [Stark](https://www.getstark.co/) - Плугин за дизајн алате као што су Figma, Sketch, Adobe XD
- [Accessible Colors](https://accessible-colors.com/) - Проналажење приступачних палета боја
✅ **Креирајте боље палете боја**: Почните са бојама бренда и користите провераче контраста за прављење приступачних варијанти. Документујте их као приступачне бојне токене у вашем дизајн систему.
### Комплетни аудити приступачности
Најефикасније тестирање приступачности комбинује више приступа. Ниједан алат не хвата све, стога изградња рутине тестирања са различитим методама обезбеђује темељну проверу.
**Тестирање у прегледачу (уграђено у DevTools):**
- **Chrome/Edge**: Lighthouse приступачност аудит + Accessibility панел
- **Firefox**: Accessibility инспектор са детаљним приказом стабла
- **Safari**: Audit таб у Web Inspector-у са симулацијом VoiceOver-а
**Професионални тестирачки екстензије:**
- [axe DevTools](https://www.deque.com/axe/devtools/) - индустријски стандард за аутоматизовано тестирање
- [WAVE](https://wave.webaim.org/extension/) - визуелна повратна информација са истицањем грешака
- [Accessibility Insights](https://accessibilityinsights.io/) - Microsoft-ов комплетан тестирачки алат
**Командна линија и CI/CD интеграција:**
- [axe-core](https://github.com/dequelabs/axe-core) - JavaScript библиотека за аутоматизовано тестирање
- [Pa11y](https://pa11y.org/) - алат за тестирање приступачности преко командне линије
- [Lighthouse CI](https://github.com/GoogleChrome/lighthouse-ci) - аутоматизовани систем за оцену приступачности
> 🎯 **Циљ тестирања**: Настојте да остварите Lighthouse оцену приступачности 95+ као основни праг. Имајте на уму да аутоматизовани алати хватају само 30-40% проблема — ручно тестирање је и даље неопходно!
### 🧠 **Провера знања о тестирању: Спремни да пронађете проблеме?**
**Погледајмо како се осећате по питању тестирања приступачности:**
- Која вам се метода тестирања тренутно чини најприступачнијом?
- Можете ли замислити коришћење тастатурне навигације цео дан?
- Која је једна баријера приступачности коју сте лично искусили на интернету?
```mermaid
pie title "Проблеми приступачности откривени различитим методама"
"Аутоматизовани алати" : 35
"Ручно тестирање" : 40
"Повратне информације корисника" : 25
```
> **Поткрепљење самопоуздања**: Професионални тестери приступачности користе управо ову комбинацију метода. Учите индустријски стандард!
## Креирање приступачности од самог почетка
Кључ успешне приступачности је укључивање у темеље већ од првог дана. Знам да је примамљиво помислити „додаћу приступачност касније“, али то је као да покушавате да додате рампу кући кад је већ саграђена. Могуће? Да. Лако? Не баш.
Замислите приступачност као планирање куће — много је лакше укључити приступ за колица у почетне архитектонске планове него касније радити преслагивања.
### Принципи POUR: Ваш темељ приступачности
Водич за приступачност веб садржаја (WCAG) заснован је на четири основна принципа који се скраћују као POUR. Не брините — ово нису сувопарне академске категорије! Заправо, то су практичне смернице за прављење садржаја који ради за све.
Када савладате POUR, доношење одлука о приступачности постаје много интуитивније. Као да имате менталну листу која води ваше дизајнерске изборе. Ево прегледа:
```mermaid
flowchart LR
A[🔍 ПЕРЦЕПТИВНО Да ли корисници могу да га осете?] --> B[🎮 ОПЕРАТИВНО Да ли корисници могу да га користе?]
B --> C[📖 РАЗУМЉИВО Да ли корисници могу да га разумеју?]
C --> D[💪 РОБУСТНО Да ли ради свуда?]
A1[Алтернативни текст Наслови Контраст] --> A
B1[Приступ тастатури Без напада Временска ограничења] --> B
C1[Јасан језик Предвидиво Помоћ при грешкама] --> C
D1[Валидан код Компатибилно Отпорно на будућност] --> D
style A fill:#e1f5fe
style B fill:#e8f5e8
style C fill:#fff3e0
style D fill:#f3e5f5
```
**🔍 Перцептиван**: Информације морају бити представљене на начине које корисници могу доживети својим расположивим чулима
- Обезбедите алтернативе текста за не-текстуални садржај (слике, видео, аудио)
- Осигурајте довољан контраст боја за сав текст и UI компоненте
- Понудите титлове и транскрипте за мултимедијални садржај
- Дизајнирајте садржај који остаје функционалан при повећању величине до 200%
- Користите више сензорних карактеристика (не само боју) за пренос информација
**🎮 Оперативан**: Сви интерфејсни елементи морају бити управљиви преко доступних уноса
- Омогућите сву функционалност коришћењем тастатуре
- Обезбедите корисницима довољно времена за читање и интеракцију са садржајем
- Избегавајте садржај који изазива нападе или вестибуларне поремећаје
- Помозите корисницима да ефикасно навигирају са јасном структуром и оријентирима
- Осигурајте да интерактивни елементи имају довољно велику површину (најмање 44px)
**📖 Разумљив**: Информације и рад интерфејса морају бити јасни и схватљиви
- Користите јасан, једноставан језик прикладан за вашу публику
- Осигурајте да садржај изгледа и функционише на предвидљив, доследан начин
- Обезбедите јасна упутства и поруке о грешкама за унос корисника
- Помозите корисницима да разумеју и исправе грешке у формама
- Организујте садржај са логичним редом читања и хијерархијом информација
**💪 Робустан**: Садржај мора поуздано радити на различитим технологијама и асистивним уређајима
- **Користите валидан, семантички HTML као темељ**
- **Осигурајте компатибилност са тренутним и будућим асистивним технологијама**
- **Пратите веб стандарде и најбоље праксе за маркирање**
- **Тестирајте кроз различите прегледаче, уређаје и асистивне алате**
- **Структуришите садржај тако да се лепо прилагоди када напредне функције нису подржане**
### 🎯 **ПРОВЕРА POUR Принципа: Како га Утемељити**
**Брза рефлексија о основама:**
- Можете ли се сетити неке веб функције која не испуњава сваки POUR принцип?
- Који принцип вам делује најпријатније као програмеру?
- Како би ови принципи могли побољшати дизајн за све, а не само за особе са инвалидитетом?
```mermaid
quadrantChart
title Матица утицаја POUR принципа
x-axis Низак напор --> Висок напор
y-axis Низак утицај --> Висок утицај
quadrant-1 Брзи добици
quadrant-2 Главни пројекти
quadrant-3 Размотри касније
quadrant-4 Стратешки фокус
Alt Text: [0.2, 0.9]
Color Contrast: [0.3, 0.8]
Semantic HTML: [0.4, 0.9]
Keyboard Nav: [0.6, 0.8]
ARIA Complex: [0.8, 0.7]
Screen Reader Testing: [0.7, 0.6]
```
> **Запамтите**: Почните са променама које имају велики утицај, а захтевају мало труда. Семантички HTML и алтернативни текст пружају највећи појачавач приступачности за минималан напор!
## Креирање Приступачног Визуелног Дизајна
Добар визуелни дизајн и приступачност иду руку под руку. Када дизајнирате са приступачношћу на уму, често откријете да ови ограничења воде ка чистијим, елегантнијим решењима која користе свим корисницима.
Хајде да истражимо како направити визуелно привлачан дизајн који функционише за све, без обзира на њихове визуелне могућности или услове под којима прегледају ваш садржај.
### Стратегије боја и визуелне приступачности
Боја је моћна за комуникацију, али никада не би требало да буде једини начин преношења важних информација. Дизајн који иде даље од боје ствара робуснија, инклузивна искуства која функционишу у више ситуација.
**Дизајнирајте за разлике у бојном виду:**
Око 8% мушкараца и 0,5% жена имају неку врсту разлике у бојном виду (често називану "сљепило за боје"). Најчешћи типови су:
- **Деутеранопија**: Тешкоћа у разликовању црвене и зелене
- **Протанопија**: Црвена изгледа замућено
- **Тританопија**: Тешкоћа са плавом и жутом (ретко)
**Инклузивне стратегије боја:**
```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;
}
```
**Више од основних захтева за контраст:**
- Тестирајте избор боја користећи симулаторе сљепила за боје
- Користите узорке, текстуре или облике уз кодирање бојом
- Обезбедите да интерактивна стања остану препознатљива без боје
- Размотрите како изгледа ваш дизајн у режиму високог контраста
✅ **Тестирајте приступачност боја**: Користите алате као [Coblis](https://www.color-blindness.com/coblis-color-blindness-simulator/) да видите како ваш сајт изгледа корисницима са различитим врстама бојне сљепиле.
### Индикатори фокуса и дизајн интеракције
Индикатори фокуса су дигитални еквивалент курсора — показују корисницима који користе тастатуру где се налазе на страници. Добро дизајнирани индикатори фокуса побољшавају искуство за све тако што чине интеракције јасним и предвидљивим.
**Најбоље праксе савременог индикатора фокуса:**
```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;
}
```
**Захтеви за индикаторе фокуса:**
- **Видљивост**: Морају имати најмање контраст 3:1 у односу на околне елементе
- **Ширина**: Минимално 2пк дебљине око целог елемента
- **Постојаност**: Требају остати видљиви док се фокус не помери
- **Различитост**: Морате бити визуелно одвојени од других UI стања
> 💡 **Савет у дизајну**: Одлични индикатори фокуса често користе комбинацију ивице, сенке и промена боја да би обезбедили видљивост на различитим позадинама и контекстима.
✅ **Проверите индикаторе фокуса**: Навигацијом тастатуром кроз вашу веб страницу забележите који елементи имају јасне индикаторе. Да ли их је тешко видети или их нема потпуно?
### Семантички HTML: Основа приступачности
Семантички HTML је као да вашим асистивним технологијама дајете GPS систем за вашу веб страницу. Када користите праве HTML елементе за њихову намењену сврху, у основи дајете читачима екрана, тастатурама и другим алатима детаљан мапу да помогну корисницима да ефикасно навигирају.
Ево једне аналогије која ми је стварно „кликнула“: семантички HTML је разлика између добро организоване библиотеке са јасним категоријама и корисним знацима у односу на складиште у којем су књиге расуте насумично. Обе локације имају исте књиге, али у којој бисте радо тражили нешто? Управо тако!
```mermaid
flowchart TD
A[🏠 HTML документ] --> B[📰 заглавље]
A --> C[🧭 нав]
A --> D[📄 главни део]
A --> E[📋 подножје]
B --> B1[h1: Име сајта Лого и брендирање]
C --> C1[ul: Навигација Примарни линкови]
D --> D1[чланак: Садржај одељак: Пододељци]
D --> D2[aside: Бочна трака Повезан садржај]
E --> E1[нав: Линкови у подножју Подаци о ауторским правима]
D1 --> D1a[h1: Наслов странице h2: Главни одељци h3: Пододељци]
style A fill:#e3f2fd
style B fill:#e8f5e8
style C fill:#fff3e0
style D fill:#f3e5f5
style E fill:#e0f2f1
```
**Грађевински блокови приступачне структуре странице:**
```html
Your Site Name
Article Title
Published on
First Section
Content that relates to this section...
Second Section
More related content...
```
**Зашто семантички HTML трансформише приступачност:**
| Семантички Елемент | Сврха | Корист за Читач Екрана |
|------------------|---------|----------------------|
| `` | Заглавље странице или секције | "Банер лендинг" - брза навигација до врха |
| `