# Створення доступних веб-сторінок ![Все про доступність](../../../../translated_images/webdev101-a11y.8ef3025c858d897a403a1a42c0897c76e11b724d9a8a0c0578dd4316f7507622.uk.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 | | **Компоненти інтерфейсу** (кнопки, межі форм) | Співвідношення контрасту 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, прийняття рішень щодо доступності стане набагато інтуїтивнішим. Це як мати ментальний контрольний список, який направляє ваші дизайнерські вибори. Давайте розберемо це: **🔍 Відчутний (Perceivable)**: Інформація повинна бути представлена у спосіб, який користувачі можуть сприймати через доступні їм органи чуття - Надавайте текстові альтернативи для нетекстового контенту (зображення, відео, аудіо) - Забезпечуйте достатній контраст кольорів для всього тексту та компонентів інтерфейсу - Пропонуйте субтитри та транскрипти для мультимедійного контенту - Дизайн контенту, який залишається функціональним при зміні розміру до 200% - Використовуйте кілька сенсорних характеристик (не лише колір) для передачі інформації **🎮 Операбельний (Operable)**: Усі компоненти інтерфейсу повинні бути доступні через доступні методи вводу - Робіть всю функціональність доступною через навігацію клавіатурою - Надавайте користувачам достатньо часу для читання та взаємодії з контентом - Уникайте контенту, який вик Колір є потужним засобом комунікації, але він ніколи не повинен бути єдиним способом передачі важливої інформації. Дизайн, що виходить за межі кольору, створює більш надійний та інклюзивний досвід, який працює в різних ситуаціях. **Дизайн для людей із порушеннями кольорового зору:** Приблизно 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 змінює доступність:** | Семантичний елемент | Призначення | Перевага для екранного читача | |---------------------|-------------|------------------------------| | `
` | Заголовок сторінки або секції | "Орієнтир банера" - швидка навігація до верху | | `