# Създаване на достъпни уеб страници ![Всичко за достъпността](../../../../translated_images/webdev101-a11y.8ef3025c858d897a403a1a42c0897c76e11b724d9a8a0c0578dd4316f7507622.bg.png) > Скица от [Tomomi Imura](https://twitter.com/girlie_mac) ## Тест преди лекцията [Тест преди лекцията](https://ff-quizzes.netlify.app/web/) > Силата на интернет е в неговата универсалност. Достъпът за всеки, независимо от уврежданията, е съществен аспект. > > \- Сър Тимъти Бърнърс-Лий, директор на W3C и изобретател на Световната мрежа Ето нещо, което може да ви изненада: когато създавате достъпни уебсайтове, не само помагате на хората с увреждания – всъщност правите интернет по-добър за всички! Забелязвали ли сте онези наклонени рампи на уличните ъгли? Първоначално те са били проектирани за инвалидни колички, но сега помагат на хора с детски колички, доставчици с колички, пътници с куфари на колелца и велосипедисти. Точно така работи достъпният уеб дизайн – решенията, които помагат на една група, често се оказват полезни за всички. Доста впечатляващо, нали? В този урок ще разгледаме как да създаваме уебсайтове, които наистина работят за всички, независимо как използват интернет. Ще откриете практични техники, които вече са вградени в уеб стандартите, ще се запознаете с инструменти за тестване и ще видите как достъпността прави вашите сайтове по-удобни за всички потребители. До края на този урок ще имате увереността да направите достъпността естествена част от вашия работен процес на разработка. Готови ли сте да изследвате как внимателните дизайнерски решения могат да отворят интернет за милиарди потребители? Да започваме! > Можете да вземете този урок на [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 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] ``` **Контролен списък за тестване стъпка по стъпка:** 1. **Навигация с клавиатура**: Използвайте само Tab, Shift+Tab, Enter, Space и стрелките 2. **Тестване с екранен четец**: Активирайте NVDA, VoiceOver или Narrator и навигирайте със затворени очи 3. **Тестване на увеличение**: Тествайте при нива на увеличение от 200% и 400% 4. **Проверка на контраста на цветовете**: Проверете целия текст и компонентите на потребителския интерфейс 5. **Тестване на индикатор за фокус**: Уверете се, че всички интерактивни елементи имат видими състояния на фокус ✅ **Започнете с 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%. Адаптира ли се вашето оформление добре? Можете ли все още да използвате всички функции без прекомерно превъртане? ## Съвременни инструменти за тестване на достъпност Сега, когато разбирате как хората навигират в интернет с помощта на помощни технологии, нека разгледаме инструментите, които ви помагат да създавате и тествате достъпни уебсайтове. Мислете за това така: автоматизираните инструменти са чудесни за откриване на очевидни проблеми (като липсващ alt текст), докато ръчното тестване ви помага да се уверите, че сайтът ви е удобен за използване в реалния свят. Заедно те ви дават увереност, че вашите сайтове работят за всички. ### Тестване на контраста на цветовете Ето добри новини: контрастът на цветовете е един от най-често срещаните проблеми с достъпността, но също така е един от най-лесните за коригиране. Добрият контраст е полезен за всички – от потребители с увредено зрение до хора, които се опитват да четат телефоните си на плажа. **Изисквания за контраст според 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 одит за достъпност + панел за достъпност - **Firefox**: Инспектор за достъпност с подробен изглед на дървото - **Safari**: Таб за одит в 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% от проблемите с достъпността – ръчното тестване все още е от съществено значение! ## Изграждане на достъпност от самото начало Ключът към успеха в достъпността е да я включите в основата си от самото начало. Знам, че е изкушаващо да мислите "Ще добавя достъпност по-късно", но това е като да се опитвате да добавите рампа към къща, след като вече е построена. Възможно? Да. Лесно? Не съвсем. Мислете за достъпността като за планиране на къща – много по-лесно е да включите достъпността за инвалидни колички в първоначалните архитектурни планове, отколкото да променяте всичко по-късно. ### Принципите POUR: Основата на достъпността Насоките за достъпност на уеб съдържание (WCAG) са изградени около четири основни принципа, които се обобщават като POUR. Не се притеснявайте – това не са сухи академични концепции! Всъщност те са практични насоки за създаване на съдържание, което работи за всички. След като разберете принципите на POUR, вземането на решения за достъпност става много по-интуитивно. Това е като да имате мисловен контролен списък, който насочва вашите дизайнерски избори. Нека ги разгледаме: **🔍 Възприемаемо**: Информацията трябва да бъде представена по начини, които потребителите могат да възприемат чрез наличните си сетива - Осигурете текстови алтернативи за съдържание, което не е текст (изображения, видеа, аудио) - Осигурете достатъчен контраст на цветовете за целия текст и компонентите на потребителския интерфейс - Предоставете субтитри и транскрипции за мултимедийно съдържание - Проектирайте съдържание, което остава функционално при увеличаване до 200% - Използвайте множество сетивни характеристики (не само цвят), за да пред Цветът е мощен инструмент за комуникация, но никога не трябва да бъде единственият начин за предаване на важна информация. Дизайнът, който надхвърля цветовете, създава по-устойчиви и достъпни преживявания, които работят в повече ситуации. **Дизайн за различия в цветното зрение:** Приблизително 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 със заобикалящите елементи - **Ширина**: Минимум 2px дебелина около целия елемент - **Постоянство**: Трябва да останат видими, докато фокусът не се премести другаде - **Различие**: Трябва визуално да се различават от други състояния на потребителския интерфейс > 💡 **Съвет за дизайн**: Отличните индикатори за фокус често използват комбинация от контур, сенки и промени в цвета, за да осигурят видимост на различни фонове и контексти. ✅ **Проверете индикаторите за фокус**: Прегледайте сайта си с клавиша Tab и отбележете кои елементи имат ясни индикатори за фокус. Има ли такива, които са трудни за виждане или напълно липсват? ### Семантичен HTML: Основата на достъпността Семантичният HTML е като GPS система за помощните технологии на вашия уебсайт. Когато използвате правилните HTML елементи за тяхната предназначена цел, всъщност предоставяте на екранните четци, клавиатурите и други инструменти подробна карта, която помага на потребителите да се ориентират ефективно. Ето една аналогия, която наистина ми помогна да разбера: семантичният HTML е разликата между добре организирана библиотека с ясни категории и полезни знаци и склад, където книгите са разхвърляни на случаен принцип. И двете места имат едни и същи книги, но в кое бихте предпочели да търсите нещо? Точно така! **Основни елементи за достъпна структура на страницата:** ```html

Your Site Name

Article Title

Published on

First Section

Content that relates to this section...

Second Section

More related content...

``` **Защо семантичният HTML трансформира достъпността:** | Семантичен елемент | Цел | Полза за екранните четци | |--------------------|-----|--------------------------| | `
` | Заглавие на страница или секция | "Banner landmark" - бърза навигация до горната част | | `