# Креирање приступачних веб страница ![Све о приступачности](../../../../translated_images/sr/webdev101-a11y.8ef3025c858d897a.webp) > Скетчнот од [Томоми Имура](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 трансформише приступачност:** | Семантички Елемент | Сврха | Корист за Читач Екрана | |------------------|---------|----------------------| | `
` | Заглавље странице или секције | "Банер лендинг" - брза навигација до врха | | `