О книге "Адаптивный веб-дизайн" Аарона Густавсона
Всего АГ выделяет пять больших слоев:
Текст -> HTML-разметка -> CSS -> Javascript -> WAI-ARIA
Мне всегда казалось, что тот факт, что браузер никак не ругается на "фигню" вставленную в html- или css-файл - это недостаток. Так сложнее отслеживать ошибки. А вот в книге АГ это рассматривается как одна из причин, по которым концепция постепенного улучшения имеет место быть. Вот, например, рассмотрим CSS. Мы делаем набор правил, которые железобетонно работают во всех браузерах. А потом, следующим слоем, добавляем "красивости", которые старые браузеры могут молча не понять (ну и ладно), а новые браузеры поймут, придав при этом лучшие эстетические качества сайту. Именно из-за этой особенности постепенное улучшение на этапе верстки и стилизации достаточно тривиально работает. С JS все обстоит иначе. Он умеет ругаться. Не в рабочую область браузера, конечно. Но сайт из-за ошибок в JS начинает работать некорректно.
А теперь коротко о "разумном, добром, вечном", что посеяла в меня эта книга (основные тезисы):
HTML:
1) Автор является сторонником использования максимально семантичой разметки, то есть использования HTML5. Безграничные возможности CSS, конечно, позволяют нам и из лошади сделать жирафа. Но, с другой стороны, - зачем, если у нас есть в наличии сам жираф. Еще один аргумет в пользу семантичной разметки - скрин-ридеры лучше воспринимают такой сайт.
2) АГ обращает внимание на использование разного рода невидимых в хороших условиях, но играющих важную роль если что-то пошло не так, атрибутов. Например, alt.
3) Той самой вишенкой на HTML-торте является микроразметка. Существуют различные микроформаты, призванные описывать разного рода сущности (события, товары, контактную информацию). Это необходимо, чтобы приложения или поисковики могли извлекать из сайта нужную им информацию.
CSS:
1) АГ предлагает разделять стили на 3 больших блока: типографика, расположение блоков, цвет.
2) АГ обращает внимание, что CSS - это вообще очень благодатная почва для постепенного улучшения: возможность перезаписи стилей, игнорирование старыми браузерами непонятных свойств и т.д.
3) Media-запросы позволяют решить ряд проблем и разделить стили. Тут стоит вспомнить о концепции mobile first (сначала мобильные). Интерфейс на телефоне, как правило, легче, чем на десктопе. Поэтому постепенное улучшение тут должно работать так: сначала надо писать стили для мобильных, а потом при помощи media-запросов усложнять интерфейс для устройств с бОльшим экраном.
JS:
1) Контент должен быть доступен и без JS. Честно говоря, звучит как лозунг: "За мир во всем мир" - несколько мечтательно и утопично. Хо-хо)))
2) Существует проблема использования обработчиков на контенте, подгруженном Ajax-ом. А именно - обработчики перестают работать на блоках, подгруженных ajax-ом. Это имеет место быть из-за того, что инициализация обработчика происходит на загрузку страницы. Автор рекомендует использовать всплытие и вешать обработчики на корневой тег, а внутри обработчика уже проверять, на каком именно теге сработало событие, и выполнять соответствующие действия.
3) Разметка, которая нужна исключительно для работы JS-скрипта, должна генерироваться в самом скрипте.
4) Dependency testing. Разделать скрипт на фрагменты и в каждом проверять доступность сущностей (библиотек, объектов, методов). В общем, страховаться-перестраховаться.
5) JS и стили. Автор рекомендует не задавать правила для HTML-элементов внутри JS-кода. Правильнее сделать набор классов со свойствами, которые устанавливаются программно, и в коде уже оперировать этими классами.
WAI-ARIA (Web Accessibility Initiative - Accessible Internet Application) - стандарт, который позволяет пользоваться интернетом людям с ограниченными возможностями. Повторюсь - для меня это вообще очень новая штука.
1) Применение некоторых стилей (CSS-правил) оказывает влияние на поток информации, воспринимаемый скрин-ридером. Например, скрыть блок можно скрыть разными способами:
- visibility: hidden (скрин-ридер пропустит этот блок)
- display: none (скрин-ридер пропустит блок)
- height: 0, width: 0; overflow: hidden (скрин-ридер снова пропустит блок)
- text-indent: -999em (скрин-ридер увидит блок, но в этом случае содержимое блока должно быть ограничено текстом и инлайновыми элементами )
- position: absolute; left: -999em (в этом случае скрин-ридер увидит блок, и в блоке может содержаться любая информация)
2) В рамках ARIA-стандарта разработаны роли и состояния (на практике это атрибуты тегов). Атрибут role часто перекливается с названиями HTML5-тегов, но все равно имеет место быть пока существует несемантическая разметка.
3) Использование Ajax также являлось бы проблемой для скрин-ридеров. Но в рамках ARIA есть атрибут aria-live, который позволяет следить за изменениями на странице.
4) Для людей с проблемным зрением клавиатуры - гораздо более значимый инструмент, чем мышь. Поэтому автор обращает внимание, как важно, чтобы по сайту можно было перемещаться при помощи клавиатуры.
***
Ну и общее резюме о книге: для меня книжка практически не открыла ничего нового (если не считать стандарта WAI-ARIA), но полезна тем, что многое разложила по полочкам.
Ярлыки: Аарон Густавсон, адаптивная верстка, Адаптивный веб-дизайн, верстка, дизайн, книги, frontend, web-дизайн