SlideShare a Scribd company logo
1 of 27
Download to read offline
Веб  для  незрячих
Сергей  Горобцов
Руководитель  группы  
интерфейсов  смежных  сервисов


Я.Субботник,  Новосибирск,  19  ноября  2011  года
Картина  мира
• более  250  млн.  людей  со  зрительной  дисфункцией
• около  100  млн.  людей  с  полной  слепотой
• в  России  официально  зарегистрированных  незрячих  
  около  275  тысяч  человек

• Примерно  6-­‐12%  от  270  тысяч  человек  пользуются  
  интернетом

• в  РФ  не  принята  практика  внедрения  accessability



2
Проблема




3
4
5
6
7
Системы  считывания  экранной  
информации
• анализ  страницы

• построение  структуры  страницы

• озвучивание  элементов,  на  которых  в  данный  
  момент  находится  фокус,  озвучивание  действий  
  пользователя




8
Узкие  места

• отсутствие  семантики

• отсутствие  поддержки  клавиатурной  навигации

• кастомные  элементы  форм,  а,  как  следствие,  
  отсутствие  понимания  сценария  и  состояния  этого  
  элемента

• фоновые  изменения  внутри  виджетов


9
Проблемный  пример

• кастомный  чекбокс

• кастомная  кнопка,  доступная  только  при  
  отмеченном  чекбоксе




               принимаю правила   Подтвердить




10
Проблемный  пример

 <div class="b-checkbox" id="ch1"></div>

 <label for="ch1">принимаю правила</label>

 <div class="b-button">Подтвердить</div>




                принимаю правила   Подтвердить




11
WAI-­‐ARIA

WAI-­‐ARIA,  the  Accessible  Rich  Internet  Applica4ons  Suite,  
определяет  способы,  как  сделать  веб-­‐контент  
и  веб-­‐приложения  более  доступными  для  людей  
с  ограниченными  возможностями.  В  особенности  
это  касается  динамического  контента  
и  продвинутых  пользовательских  интерфейсов,  
разработанных  при  помощи  Ajax,  HTML,  JavaScript  и  
им  подобных  технологий.

                      h_p://www.w3.org/WAI/intro/aria

12
Клавиатурная  навигация
Элементы  имеющие  фокус  «по-­‐дефолту»
 <a>, <input>, <button>, <object>, <area>, <select>,
 <textarea>


tabindex  =  0,  tabindex  =  [n]

 <div tabindex="0">div имеющий фокус «в потоке»</div>


tabindex  =  -­‐1

 <div tabindex="-1">div доступный через focus()</div>


13
Клавиатурная  навигация

 <div class="b-checkbox" id="ch1" tabindex="0"></div>

 <label for="ch1">принимаю правила</label>

 <div class="b-button" tabindex="0">Подтвердить</div>




                принимаю правила   Подтвердить




14
Кто  я?
Атрибут  role  помогает  вспомогательным  технологиям  
определиться  с  исполняемым  сценарием

 role=...
 ...alert, button, checkbox, columnheader, combobox,
 dialog, document, grid, gridcell, group, heading, img,
 link, list, listbox, listitem, log, menu, menubar,
 menuitem, menuitemradio, option, presentation, radio,
 radiogroup, row, rowheader, separator, slider...




15
Кто  я?

 <div class="b-checkbox" id="ch1"
 tabindex="0" role="checkbox"></div>

 <label for="ch1">принимаю правила</label>

 <div class="b-button" tabindex="0" role="button"
 >Подтвердить</div>




                принимаю правила   Подтвердить




16
Значения  и  свойства
Атрибут  aria-­‐  помогает  описать  значение  или  текущее  
состояние  элемента

 aria-...
 ...activedescendant, busy, checked, describedby,
 disabled, expanded, haspopup, hidden, invalid, label,
 labelledby, level, multiline, orientation, posinset,
 pressed, readonly, required, selected, setsize,
 valuetext, valuemin, valuemax, valuenow...




17
Значения  и  свойства

 <div class="b-checkbox" id="ch1"
 tabindex="0" role="checkbox"
 aria-checked="false" aria-required="true"></div>

 <label for="ch1">принимаю правила</label>

 <div class="b-button" tabindex="0" role="button"
 aria-disabled="true">Подтвердить</div>




                принимаю правила   Подтвердить




18
Значения  и  свойства

 <div class="b-checkbox" id="ch1"
 tabindex="0" role="checkbox"
 aria-checked="checked" aria-required="true"></div>

 <label for="ch1">принимаю правила</label>

 <div class="b-button" tabindex="0" role="button"
 aria-disabled="false">Подтвердить</div>




                принимаю правила   Подтвердить




19
Значения  и  свойства

 <div id="sliderlabel">вес в граммах</div>

 <div class="b-slider">
   <div class="b-slider__min">минимальное</div>
   <div class="b-slider__max">максимальное</div>
   <div class="b-slider__train" tabindex="0" role="slider"
 aria-valuemin="64" aria-valuemax="2048"
 aria-valuenow="512" aria-valuetext="512 грамм"
 aria-labelledby="sliderlabel">512</div>
 </div>




         минимальное        512              максимальное




20
Роли  уровня  landmark
Помогают  определить  структуру  документа,  а  так  же  
добавляют  дополнительный  уровень  навигации.  
Имеют  аналогии  в  HTML5  тегах.

 role=...
 application, banner, complementary, contentinfo, form,
 main, navigation, search, article, dirrectory, log,
 note, region, status




21
Роли  уровня  landmark
banner        <header>,  <header  role=banner>

complementary <aside>


contenznfo    <footer>,  <footer  role=contenznfo>


main          <seczon>,  <seczon  role=main>


navigazon     <nav>,  <nav  role=navigazon>


22
Роли  уровня  landmark
      banner                      search




     navigazon     main       complementary




                 contenznfo

23
Live  Regions

• aria-­‐live:  off  /  polite  /  asserzve

• aria-­‐busy:  false  /  true

• aria-­‐atomic:  false  /  true

• aria-­‐relevant:  addizons  /  removals  /  text  /  all




24
Использование  уже  сейчас

• Отсутствие  побочных  эффектов.  Для  начала  
  достаточно  простой  поддержки  landmark  roles

• все  4  основных  браузерных  движка  реализовали  
  поддержку

• поддержка  на  стороне  систем:  VoiceOver,  JAWS,  
  Window-­‐Eyes,  NVDA,  Zoomtext  и  т.д



25
Пример  

h•ps://github.com/greyevil/yasubbotnik-­‐nsk




26
Сергей  Горобцов
Руководитель  группы
интерфейсов  смежных  сервисов

greyevil@yandex-­‐team.ru

@greyevil

More Related Content

What's hot

basis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкbasis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворк
Roman Dvornov
 
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...
Ontico
 
Web весна 2013 лекция 4
Web весна 2013 лекция 4Web весна 2013 лекция 4
Web весна 2013 лекция 4
Technopark
 
Произвольная смена дизайна системного скроллбара
Произвольная смена дизайна системного скроллбараПроизвольная смена дизайна системного скроллбара
Произвольная смена дизайна системного скроллбара
DevDay
 
Михаил Черномордиков Ie9
Михаил Черномордиков   Ie9Михаил Черномордиков   Ie9
Михаил Черномордиков Ie9
Siel01
 
МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016
Anastasia Goryacheva
 
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScriptCSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
Alexey Ivanov
 

What's hot (20)

basis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкbasis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворк
 
JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.
 
Как построить DOM
Как построить DOMКак построить DOM
Как построить DOM
 
Быстро о быстром
Быстро о быстромБыстро о быстром
Быстро о быстром
 
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...
 
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
 
Алексей Андросов "Тотальная заморозка = быстрая загрузка"
Алексей Андросов "Тотальная заморозка = быстрая загрузка"Алексей Андросов "Тотальная заморозка = быстрая загрузка"
Алексей Андросов "Тотальная заморозка = быстрая загрузка"
 
Svyatoslav Login "360 View of XSS"
Svyatoslav Login "360 View of XSS"Svyatoslav Login "360 View of XSS"
Svyatoslav Login "360 View of XSS"
 
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)
 
Web весна 2013 лекция 4
Web весна 2013 лекция 4Web весна 2013 лекция 4
Web весна 2013 лекция 4
 
Scino: Front-end [part-1]
Scino: Front-end [part-1]Scino: Front-end [part-1]
Scino: Front-end [part-1]
 
Произвольная смена дизайна системного скроллбара
Произвольная смена дизайна системного скроллбараПроизвольная смена дизайна системного скроллбара
Произвольная смена дизайна системного скроллбара
 
Изоморфный JavaScript — будущее уже здесь
Изоморфный JavaScript — будущее уже здесьИзоморфный JavaScript — будущее уже здесь
Изоморфный JavaScript — будущее уже здесь
 
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
 
Михаил Черномордиков Ie9
Михаил Черномордиков   Ie9Михаил Черномордиков   Ie9
Михаил Черномордиков Ie9
 
МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016
 
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScriptCSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
 
JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.
 
DOM-шаблонизаторы – не только "быстро"
DOM-шаблонизаторы – не только "быстро"DOM-шаблонизаторы – не только "быстро"
DOM-шаблонизаторы – не только "быстро"
 
ДАМП 2015 Екатеринбург
ДАМП 2015 ЕкатеринбургДАМП 2015 Екатеринбург
ДАМП 2015 Екатеринбург
 

Viewers also liked

Михаил Трошев — «Общий цикл разработки»
Михаил Трошев — «Общий цикл разработки»Михаил Трошев — «Общий цикл разработки»
Михаил Трошев — «Общий цикл разработки»
Yandex
 

Viewers also liked (17)

Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"
 
Роман Бусыгин "Автосборки iOS-проектов в Яндексе"
Роман Бусыгин "Автосборки iOS-проектов в Яндексе"Роман Бусыгин "Автосборки iOS-проектов в Яндексе"
Роман Бусыгин "Автосборки iOS-проектов в Яндексе"
 
Богдан Гаркушин "Способы организации поиска по сайту"
Богдан Гаркушин "Способы организации поиска по сайту"Богдан Гаркушин "Способы организации поиска по сайту"
Богдан Гаркушин "Способы организации поиска по сайту"
 
Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Сергей Чистович "Подходы к кешированию на UGC-сервисе"Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Сергей Чистович "Подходы к кешированию на UGC-сервисе"
 
Виталий Харисов "Настоящее и будущее БЭМ"
Виталий Харисов "Настоящее и будущее БЭМ"Виталий Харисов "Настоящее и будущее БЭМ"
Виталий Харисов "Настоящее и будущее БЭМ"
 
Вадим Макеев "С ножом против паровоза 2. Оптимизация и нарезка графики для пр...
Вадим Макеев "С ножом против паровоза 2. Оптимизация и нарезка графики для пр...Вадим Макеев "С ножом против паровоза 2. Оптимизация и нарезка графики для пр...
Вадим Макеев "С ножом против паровоза 2. Оптимизация и нарезка графики для пр...
 
Михаил Трошев — «Общий цикл разработки»
Михаил Трошев — «Общий цикл разработки»Михаил Трошев — «Общий цикл разработки»
Михаил Трошев — «Общий цикл разработки»
 
Наталия Макишвили "Вёрстка для мобильных устройств"
Наталия Макишвили "Вёрстка для мобильных устройств"Наталия Макишвили "Вёрстка для мобильных устройств"
Наталия Макишвили "Вёрстка для мобильных устройств"
 
Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"
Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"
Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"
 
Валентин Коновалов "Кэш МЯК"
Валентин Коновалов "Кэш МЯК"Валентин Коновалов "Кэш МЯК"
Валентин Коновалов "Кэш МЯК"
 
Кир Белевич "Используем БЭМ для создания сайтов под iOS/Android"
Кир Белевич "Используем БЭМ для создания сайтов под iOS/Android"Кир Белевич "Используем БЭМ для создания сайтов под iOS/Android"
Кир Белевич "Используем БЭМ для создания сайтов под iOS/Android"
 
Константин Заикин "Разработка Яндекс.Карт для Windows Phone 7"
Константин Заикин "Разработка Яндекс.Карт для Windows Phone 7"Константин Заикин "Разработка Яндекс.Карт для Windows Phone 7"
Константин Заикин "Разработка Яндекс.Карт для Windows Phone 7"
 
Сергей Перескоков "JS API Яндекс.Карт 2.0: что нового и как это работает"
Сергей Перескоков "JS API Яндекс.Карт 2.0: что нового и как это работает"Сергей Перескоков "JS API Яндекс.Карт 2.0: что нового и как это работает"
Сергей Перескоков "JS API Яндекс.Карт 2.0: что нового и как это работает"
 
Ольга Онойко "Асессоры Яндекса: откуда взялись, зачем нужны, как работают"
Ольга Онойко "Асессоры Яндекса: откуда взялись, зачем нужны, как работают"Ольга Онойко "Асессоры Яндекса: откуда взялись, зачем нужны, как работают"
Ольга Онойко "Асессоры Яндекса: откуда взялись, зачем нужны, как работают"
 
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
 
Олесь Писаренко "Открываем Яндекс.Танк"
Олесь Писаренко "Открываем Яндекс.Танк"Олесь Писаренко "Открываем Яндекс.Танк"
Олесь Писаренко "Открываем Яндекс.Танк"
 
Андрей Субботин "Локализация приложений для iOS: как не прострелить себе ногу"
Андрей Субботин "Локализация приложений для iOS: как не прострелить себе ногу"Андрей Субботин "Локализация приложений для iOS: как не прострелить себе ногу"
Андрей Субботин "Локализация приложений для iOS: как не прострелить себе ногу"
 

Similar to Сергей Горобцов "Веб для незрячих"

Принципы разработки гибких и поддерживаемых интерфейсов
Принципы разработки гибких и поддерживаемых интерфейсовПринципы разработки гибких и поддерживаемых интерфейсов
Принципы разработки гибких и поддерживаемых интерфейсов
Vasiliy Aksyonov
 
DUMP-2013 Frontend - Принципы разработки поддерживаемых и гибких интерфейсов ...
DUMP-2013 Frontend - Принципы разработки поддерживаемых и гибких интерфейсов ...DUMP-2013 Frontend - Принципы разработки поддерживаемых и гибких интерфейсов ...
DUMP-2013 Frontend - Принципы разработки поддерживаемых и гибких интерфейсов ...
it-people
 
Принципы разработки поддерживаемых и гибких интерфейсов / Василий Аксёнов (Ян...
Принципы разработки поддерживаемых и гибких интерфейсов / Василий Аксёнов (Ян...Принципы разработки поддерживаемых и гибких интерфейсов / Василий Аксёнов (Ян...
Принципы разработки поддерживаемых и гибких интерфейсов / Василий Аксёнов (Ян...
Ontico
 
Конструктор карточек Docsvision 5: конструктор состояний
Конструктор карточек Docsvision 5: конструктор состоянийКонструктор карточек Docsvision 5: конструктор состояний
Конструктор карточек Docsvision 5: конструктор состояний
Docsvision
 
Ролевая модель Docsvision 5
 Ролевая модель Docsvision 5 Ролевая модель Docsvision 5
Ролевая модель Docsvision 5
Docsvision
 
Адаптивный веб-дизайн на практике (Антон Епрев)
Адаптивный веб-дизайн на практике (Антон Епрев)Адаптивный веб-дизайн на практике (Антон Епрев)
Адаптивный веб-дизайн на практике (Антон Епрев)
Ontico
 
Конструктор карточек Docsvision 5: конструктор разметок
Конструктор карточек Docsvision 5: конструктор разметокКонструктор карточек Docsvision 5: конструктор разметок
Конструктор карточек Docsvision 5: конструктор разметок
Docsvision
 
Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"
Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"
Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"
Yandex
 
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...
Yandex
 

Similar to Сергей Горобцов "Веб для незрячих" (20)

Принципы разработки гибких и поддерживаемых интерфейсов
Принципы разработки гибких и поддерживаемых интерфейсовПринципы разработки гибких и поддерживаемых интерфейсов
Принципы разработки гибких и поддерживаемых интерфейсов
 
DUMP-2013 Frontend - Принципы разработки поддерживаемых и гибких интерфейсов ...
DUMP-2013 Frontend - Принципы разработки поддерживаемых и гибких интерфейсов ...DUMP-2013 Frontend - Принципы разработки поддерживаемых и гибких интерфейсов ...
DUMP-2013 Frontend - Принципы разработки поддерживаемых и гибких интерфейсов ...
 
Принципы разработки поддерживаемых и гибких интерфейсов / Василий Аксёнов (Ян...
Принципы разработки поддерживаемых и гибких интерфейсов / Василий Аксёнов (Ян...Принципы разработки поддерживаемых и гибких интерфейсов / Василий Аксёнов (Ян...
Принципы разработки поддерживаемых и гибких интерфейсов / Василий Аксёнов (Ян...
 
Bootstrap 3. Адаптивная верстка для WordPress
Bootstrap 3. Адаптивная верстка для WordPressBootstrap 3. Адаптивная верстка для WordPress
Bootstrap 3. Адаптивная верстка для WordPress
 
Bubnov
BubnovBubnov
Bubnov
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
 
Конструктор карточек Docsvision 5: конструктор состояний
Конструктор карточек Docsvision 5: конструктор состоянийКонструктор карточек Docsvision 5: конструктор состояний
Конструктор карточек Docsvision 5: конструктор состояний
 
Bootstrap 3
Bootstrap 3Bootstrap 3
Bootstrap 3
 
2014 Jeeconf - Geb Spock
2014 Jeeconf - Geb Spock2014 Jeeconf - Geb Spock
2014 Jeeconf - Geb Spock
 
Ролевая модель Docsvision 5
 Ролевая модель Docsvision 5 Ролевая модель Docsvision 5
Ролевая модель Docsvision 5
 
Адаптивный веб-дизайн на практике (Антон Епрев)
Адаптивный веб-дизайн на практике (Антон Епрев)Адаптивный веб-дизайн на практике (Антон Епрев)
Адаптивный веб-дизайн на практике (Антон Епрев)
 
Конструктор карточек Docsvision 5: конструктор разметок
Конструктор карточек Docsvision 5: конструктор разметокКонструктор карточек Docsvision 5: конструктор разметок
Конструктор карточек Docsvision 5: конструктор разметок
 
Denis Bugarchev
Denis BugarchevDenis Bugarchev
Denis Bugarchev
 
Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"
Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"
Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"
 
04 - Web-технологии. CSS - язык описания стилей
04 - Web-технологии. CSS - язык описания стилей04 - Web-технологии. CSS - язык описания стилей
04 - Web-технологии. CSS - язык описания стилей
 
State of the Standardized Web
State of the Standardized WebState of the Standardized Web
State of the Standardized Web
 
Mihail Korepanov
Mihail KorepanovMihail Korepanov
Mihail Korepanov
 
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...
 
Лекция 4 Client-side
Лекция 4 Client-sideЛекция 4 Client-side
Лекция 4 Client-side
 
State of the Standardized Web. YaC 2014
State of theStandardized Web. YaC 2014State of theStandardized Web. YaC 2014
State of the Standardized Web. YaC 2014
 

More from Yandex

Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Yandex
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Yandex
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Yandex
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Yandex
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Yandex
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Yandex
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Yandex
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Yandex
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Yandex
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Yandex
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Yandex
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Yandex
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Yandex
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Yandex
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Yandex
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Yandex
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Yandex
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Yandex
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Yandex
 

More from Yandex (20)

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of Tanks
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
 

Сергей Горобцов "Веб для незрячих"

  • 1. Веб  для  незрячих Сергей  Горобцов Руководитель  группы   интерфейсов  смежных  сервисов Я.Субботник,  Новосибирск,  19  ноября  2011  года
  • 2. Картина  мира • более  250  млн.  людей  со  зрительной  дисфункцией • около  100  млн.  людей  с  полной  слепотой • в  России  официально  зарегистрированных  незрячих   около  275  тысяч  человек • Примерно  6-­‐12%  от  270  тысяч  человек  пользуются   интернетом • в  РФ  не  принята  практика  внедрения  accessability 2
  • 4. 4
  • 5. 5
  • 6. 6
  • 7. 7
  • 8. Системы  считывания  экранной   информации • анализ  страницы • построение  структуры  страницы • озвучивание  элементов,  на  которых  в  данный   момент  находится  фокус,  озвучивание  действий   пользователя 8
  • 9. Узкие  места • отсутствие  семантики • отсутствие  поддержки  клавиатурной  навигации • кастомные  элементы  форм,  а,  как  следствие,   отсутствие  понимания  сценария  и  состояния  этого   элемента • фоновые  изменения  внутри  виджетов 9
  • 10. Проблемный  пример • кастомный  чекбокс • кастомная  кнопка,  доступная  только  при   отмеченном  чекбоксе принимаю правила Подтвердить 10
  • 11. Проблемный  пример <div class="b-checkbox" id="ch1"></div> <label for="ch1">принимаю правила</label> <div class="b-button">Подтвердить</div> принимаю правила Подтвердить 11
  • 12. WAI-­‐ARIA WAI-­‐ARIA,  the  Accessible  Rich  Internet  Applica4ons  Suite,   определяет  способы,  как  сделать  веб-­‐контент   и  веб-­‐приложения  более  доступными  для  людей   с  ограниченными  возможностями.  В  особенности   это  касается  динамического  контента   и  продвинутых  пользовательских  интерфейсов,   разработанных  при  помощи  Ajax,  HTML,  JavaScript  и   им  подобных  технологий. h_p://www.w3.org/WAI/intro/aria 12
  • 13. Клавиатурная  навигация Элементы  имеющие  фокус  «по-­‐дефолту» <a>, <input>, <button>, <object>, <area>, <select>, <textarea> tabindex  =  0,  tabindex  =  [n] <div tabindex="0">div имеющий фокус «в потоке»</div> tabindex  =  -­‐1 <div tabindex="-1">div доступный через focus()</div> 13
  • 14. Клавиатурная  навигация <div class="b-checkbox" id="ch1" tabindex="0"></div> <label for="ch1">принимаю правила</label> <div class="b-button" tabindex="0">Подтвердить</div> принимаю правила Подтвердить 14
  • 15. Кто  я? Атрибут  role  помогает  вспомогательным  технологиям   определиться  с  исполняемым  сценарием role=... ...alert, button, checkbox, columnheader, combobox, dialog, document, grid, gridcell, group, heading, img, link, list, listbox, listitem, log, menu, menubar, menuitem, menuitemradio, option, presentation, radio, radiogroup, row, rowheader, separator, slider... 15
  • 16. Кто  я? <div class="b-checkbox" id="ch1" tabindex="0" role="checkbox"></div> <label for="ch1">принимаю правила</label> <div class="b-button" tabindex="0" role="button" >Подтвердить</div> принимаю правила Подтвердить 16
  • 17. Значения  и  свойства Атрибут  aria-­‐  помогает  описать  значение  или  текущее   состояние  элемента aria-... ...activedescendant, busy, checked, describedby, disabled, expanded, haspopup, hidden, invalid, label, labelledby, level, multiline, orientation, posinset, pressed, readonly, required, selected, setsize, valuetext, valuemin, valuemax, valuenow... 17
  • 18. Значения  и  свойства <div class="b-checkbox" id="ch1" tabindex="0" role="checkbox" aria-checked="false" aria-required="true"></div> <label for="ch1">принимаю правила</label> <div class="b-button" tabindex="0" role="button" aria-disabled="true">Подтвердить</div> принимаю правила Подтвердить 18
  • 19. Значения  и  свойства <div class="b-checkbox" id="ch1" tabindex="0" role="checkbox" aria-checked="checked" aria-required="true"></div> <label for="ch1">принимаю правила</label> <div class="b-button" tabindex="0" role="button" aria-disabled="false">Подтвердить</div> принимаю правила Подтвердить 19
  • 20. Значения  и  свойства <div id="sliderlabel">вес в граммах</div> <div class="b-slider"> <div class="b-slider__min">минимальное</div> <div class="b-slider__max">максимальное</div> <div class="b-slider__train" tabindex="0" role="slider" aria-valuemin="64" aria-valuemax="2048" aria-valuenow="512" aria-valuetext="512 грамм" aria-labelledby="sliderlabel">512</div> </div> минимальное 512 максимальное 20
  • 21. Роли  уровня  landmark Помогают  определить  структуру  документа,  а  так  же   добавляют  дополнительный  уровень  навигации.   Имеют  аналогии  в  HTML5  тегах. role=... application, banner, complementary, contentinfo, form, main, navigation, search, article, dirrectory, log, note, region, status 21
  • 22. Роли  уровня  landmark banner <header>,  <header  role=banner> complementary <aside> contenznfo <footer>,  <footer  role=contenznfo> main <seczon>,  <seczon  role=main> navigazon <nav>,  <nav  role=navigazon> 22
  • 23. Роли  уровня  landmark banner search navigazon main complementary contenznfo 23
  • 24. Live  Regions • aria-­‐live:  off  /  polite  /  asserzve • aria-­‐busy:  false  /  true • aria-­‐atomic:  false  /  true • aria-­‐relevant:  addizons  /  removals  /  text  /  all 24
  • 25. Использование  уже  сейчас • Отсутствие  побочных  эффектов.  Для  начала   достаточно  простой  поддержки  landmark  roles • все  4  основных  браузерных  движка  реализовали   поддержку • поддержка  на  стороне  систем:  VoiceOver,  JAWS,   Window-­‐Eyes,  NVDA,  Zoomtext  и  т.д 25
  • 27. Сергей  Горобцов Руководитель  группы интерфейсов  смежных  сервисов greyevil@yandex-­‐team.ru @greyevil