Site icon Роман Теличко

Перепост: Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделывать

Вы PM. Как узнать – готова ли вёрстка к реальному использованию?
Вы заказчик. Как убедиться, что работа выполнена качественно?

Когда я стал тим-лидом, а позже PM, передо мной стала задача проверять вёрстку наших проектов. Нужно было выработать формальные, легкопроверяемые критерии, соответствие кода которым, должно было давать некую гарантию, что не будет факапов и ни клиент, ни программеры не сказажут потом “WTF?”.

Клиенту неважно насколько красив ваш код, но ему важен результат. Качественный код нужен фирме, т.к. он надёжней и в будущем его будет легче поддерживать.

Требования должны были быть такие, что соблюсти их легче, создавая качественную вёрстку, а не говнокод. Я составлял такой чек-лист в течении полутора лет. За последние полгода в него не добавилось ничего. Значит самое главное учтено.

На хабре была статья про «Требования к html-верстке». Но это ТЗ для исполнителя/соглашение о кодировании/советы хорошего тона, но не проверочный список: готова-ли работа и можно-ли её принимать. Он хороший, но увы, его соблюдение не гарантирует что проблем не будет.

0. Соответствие макету

  1. Кроссбраузерность, кодировка и DOCTYPE
  2. Валидность, доступность, микроформаты
  3. Корректная работа при вбивании реального текста, надёжность вёрстки
  4. HTML5 формы, линковка, валидация
  5. Семантичность. Отсутствие глупостей в html и css, единообразие, аккуратность
  6. Правильная структура заголовков (H1,H2,… и т.д. и TITLE)
  7. Сайт должен нормально смотреться во всех стандартных разрешениях от 1024 и выше и не иметь горизонтального скролла
  8. Работоспособность при выключенном JavaScript
  9. Работоспособность при выключенном Flash
  10. Доступность при выключенных(загружающихся) картинках
  11. Отсутствие багов при увеличенном шрифте
  12. Наличие Win/Mac/Linux-аналогов шрифтов
  13. Оптимизация скорости загрузки
  14. И последний пункт – мелкие проверки (ниже подробней)

 

Пункт номер 0. Соответствие макету

Расположение блоков должно быть 1:1 по сравнению с макетом. Допускается расхождение до 5px для текста. Разрешены и даже приветствуются правки размеров и расположения криво нарисованных блоков (разница размерах в 1-2px на разных страницах).

Ясное дело что при изменениях контента, размеры блоков могут меняться (по высоте например), это нормально. Мы используем Pixel Perfect не для попиксельного задротства (адекватный ПМ не должен затягивать сдачу проекта, тратя время, а значит и деньги фирмы, на вылизывание каждого пикселя), а для проверки что все базовые блоки находятся там где надо, их размеры, отступы — соответсвуют макету.

Проверяется в Firefox через плагин  Pixel Perfect. Для проверки в других браузерах используйтеModularGrid.

№1. Кроссбраузерность, кодировка и DOCTYPE

  1. Кодировка: UTF-8
    Зачем нужно: UTF-8 это универсальность и совместимость. Это современный стандарт, за ним будущее.
    Как проверяется: в FF Инструменты→Информация о странице, в появившемся окне должно быть написано «Кодировка: UTF8». Эта кодировка должна использоваться для всех файлов: html, css, js…
  2. DOCTYPE: HTML5
    Зачем нужно: наличие корректного doctype необходимо чтоб страницы отображались в соответсвии со стандартами. Новый doctype позволяет нам смело использовать современные тэги (canvas, header, article,…) и старые проверенные решения, ранее бывшые в опале (например embed). HTML5 — это современный стандарт, XHTML – тоже хорошо, но HTML5 – актуальней, да и в конце-концов это модный тренд сейчас. Аргументация для сомневающихся.
    Проверка: открываем исходный код страницы, первая строка должны быть .
  3. Кроссбраузерность:
    • Firefox (последний)
    • Chrome (последний)
    • Safari (последний) и если у вас нет Mac чтоб проверить «размытые Mac’овские» шрифты (они чуть большего размера, из-за этого бывает вылазят баги) то установите в Preferences→Appearance, «Font Smoothing» в Medium (по дефолту там «Windows Standart»).
    • Opera (последняя)
    • IE7+ (для IE6 выводится уведомление о неподдержке и предложении скачать другой браузер, но с возможностью всё-таки просмотреть сайт)
    • Opera Mini (проверяется в Opera Developer ToolsOpera Mini Simulator, нужно установить Java плагин к браузеру, или в крайнем случае: Opera 9.64→Вид-Маленький экран, но в 9.64 JS будет работать полноценно в отличие от настоящей Opera Mini, это нужно учитывать)
    • iPhone (смотрим в landscape и portrait режимах, т.е. вертикально и горизонтально) + Android.

    Проверяется просмотром сайта в вышеперечисленных браузерах.

    • Проверка в IE7 делается переключением IE8 в режим IE7 (F12→Режим обозревателя→Internet Explorer 7).
    • В IE6 можно посмотреть на ipinfo.info/netrenderer/ или на виртуальной машине (удобно использовать Windows XP Mode в Win7).

 

№2 Валидность, доступность, микроформаты

  1. Не должно быть js-ошибок!
  2. Титулка должна быть валидна в любом случае. Ошибки на внутряках простительны в следующих случаях:
    • Упоротая секретарша копипастит тексты из Word’а в визиг;
    • Программеру ну очень нужны какие-то кастомные атрибуты (хотя для этого в HTML5 ввели специальные пользовательские атрибуты «data-*»).
  3. CSS валидируется по версии 3.0, его валидность не требуется (да и валидатор ещё кривоват), а вот синтаксические ошибки (типа margin: 10xp) исправлять надо.
  4. Микроформаты должны быть. Как минимум – hCard. Желательно также hCalendar, XFN, hAtom.


Ошибки js проверяются просмотром сайта в IE – в левом нижнем углу не должно быть значка «есть js-ошибки».

Зачем нужна валидность? Главнейший практический плюс: валидный код обладает заранее известной структурой и упорядоченностью. Если в коде царит порядок, то такой код проще обрабатывать, обслуживать, видоизменять… Маленькое лирическое отступление: инженеры уже давно поняли, что унификация и стандартизация значительно снижают стоимость изготовления и, главное, обслуживания изделий… Код с ошибками — чаще всего именно кустарщина.

© rossomachin

HTML5 помогает нам в случае необходимости своих, кастомных, невалидных атрибутов для элементов. Просто указываем атрибут «data-чтоугодно» — и можем использовать! Это валидно!

Микроформаты не только полезны для SEO, но и здорово упорядочивают код. Не нужно полчаса думать как назвать новый блок. Выбирай из существующих стандартных имён! Бери entry-content, не ошибёшся 🙂

Валидность проверяется онлайн-валидаторами:

В идеале вёрстка должна соответствовать стандарту доступности: WCAG.
Он имеет три уровня сложности, если проходит хотя бы WCAG1 A (Priority 1) – уже хорошо. Идеальный вариант – WCAG2 Priority 3 (AAA). Самый просто способ проверить что скорей всего WCAG1 Priority A соблюдён — www.cynthiasays.com/ (или  Web Developer →Инструменты →Проверить WAI). Почему «скорей всего»? Некоторые требования WCAG невозможно проверить автоматически. Вот ещё несколько скриптов помошников:

И собственно сам чеклист WCAG2:

Некоторые ошибки в валидации допустимы.

 

№3 Корректная работа при вбивании реального текста, надёжность вёрстки

Вёрстка должна тянутся, не разваливаться и не терять дизайнерский вид при изменении контента на странице. Его может быть больше или меньше чем на макете, он может быть обёрнут во всякие 

 из визига и т.п.

  1. Проверка ввода и удаления данных.
    Проверяется: на странице с контентом, пробуем добавлять и удалять содержимое – «что будет когда текста много?», «а когда мало?».
  2. Проверка корректности работы стилей.
    Проверяется: на страницы с контентом вбиваем текст с абзацами и без абзацев (важно! бывает горе-верстальщики прописывают стили только для абзацев), со списками и картинками, таблицами и заголовками разных уровней.

Это нужно чтоб на живом сайте потом не полезли проблемы при заполнении реальными данными.
Правки содержимого страницы делаются в FF через плагин  Firebug: HTML→Edit – меняем/добавляем/удаляем текст. Хороший пример проверочного текста находится в m5cssframework в index.html между и .

Хорошо использовать html5-тэги для разметкиheader, footer, aside, nav, section, article и т.д. Кроме того что это семантично, также повышается надёжность, «пуленепробиваемость» вёрстки. Лишний открытый или закрытый div легко может поломать вёрстку. Но когда каркас сайта — атомарные и редко повторяющиеся html5-тэги, то «поломка» локализуется в пределах html5-тэга.

 

№4 HTML5 формы, линковка, валидация

  1. Label и input/select должны быть слинкованы.
    Это нужно для удобства юзеров. Также это очень облегчает жизнь пользователям с ограниченными физическими возможностями.
    Проверяется кликом по label – должен активироваться соответствующий ему элемент ввода.
  2. HTML5 валидация заполнения формы.
    Практическая ценность пока-что невелика, ведь серверная проверка ввода данных тоже может быть реализована без перезагрузки страницы (через ajax), но это говорит о проф. уровне исполнителя — у редкого числа юзеров современных браузеров с отключенным javascript, проверка ввода данных произойдёт средствами браузера, а не сервера.
    Проверяется в Opera: выключаем javascript, не заполняем форму, жмём Submit – должны появится уведомления о необходимости заполнить поля.
  3. JS-валидация формы.
    Это ожидаемое поведение. Пользователи привыкли что если они неправильно заполнят форму, им не дадут её отправить, а укажут на ошибки.
    Проверяется в Opera/Safari/Chrome: включаем javascript, не заполняем форму, жмём Submit – должны появится уведомления о необходимости заполнить поля.
  4. Если проверяем frontend в целом — должна быть серверная валидация формы.
    Проверяется в Firefox 3.6: выключаем javascript, не заполняем форму, жмём Submit – должны появится уведомления о необходимости заполнить поля.
  5. Правильные input type=”email/url/tel”.
    Пока-что практическая ценность для пользователя лишь в том, что на iPhone будет показываться клавиатура соответствующая формату поля ввода.
    Проверяется на iPhone — в зависимости от типа поля ввода он должен показывать различную клавиатуру: стандартную/цифровую/для набора web/email-адресов.

Уведомления об ошибках должны быть не js-alert’ом, а текстом в дизайне сайта!
Всё оформление в формах должно быть повешено на классы, id — только для линковки с label (a то потом программеры прикручивают, пишут свои id и ломается внешний вид).

 

№5 Семантичность. Отсутствие глупостей в html и css, единообразие, аккуратность

Пожалуй единственный пункт, где нельзя дать чётких критериев. Про то, что такое плохо можно почитать в моей статье «Вредная вёрстка».
Как ориентир – наиболее частые ошибки:

Примеры хорошего:

 

№6 Правильная структура заголовков (H1,H2,… и т.д. и TITLE)

Это забота о семантичности кода, заголовки структурируют сайт, делают его корректным документом. Корректный Document Outline важен для SEO.

Проверяется в FF через плагин  Web Developer→Information→View Document Outline. Красных строк быть не должно!




№7 Сайт должен нормально смотреться во всех стандартных разрешениях от 1024 и выше и не иметь горизонтального скролла

Проверяется в FF через плагин  Web Developer→Resize
Список классических разрешений:

 

№8 Работоспособность при выключенном JavaScript

JS может быть выключен согласно корпоративных требований безопастности. А в Opera Mini он работает только методом перезагрузки страницы.
Но самое главное — сайт должен сохранять нормальный вид, пока он грузится на медленном 3G и js-скрипты ещё не выполнились!

Весь критически важный функционал сайта должен быть доступен без JS. Дополнительные фишки (например ссылки на увеличение шрифта или распечатку) – при выключенном JS не должны отображаться.

Если нехочется/нет возможности реализовывать функционал без JS, нужно хотя-бы выводить уведомление о необходимости его включить (реализовывается через <noscript>).

Проверяется в FF через плагин  Web Developer→Disable→Disable JavaScript→All JavaScript.




№9 Работоспособность при выключенном Flash

В идеале весь критически важный функционал сайта был доступен без Flash. В реальной жизни нужно:

Flash не работает на iOS-девайсах. Flash плохо индексируется поисковиками.

Проверяется в FF отключением flash-плагина: Tools→Add-ons→Plugins→Shockwave Flash→disable.



№10 Доступность при выключенных(загружающихся) картинках

Надписи (особенно логотип и главное меню сайта) должны оставаться читабельными, у всех информационных картинок должны быть подписи аккуратным небольшим серым шрифтом (да, для img можно задавать font – это внешний вид alt-текста, что выводится вместо картинки).
Картинки часто отключают при использовании дорогого инета, тарифицируемого по траффику (GPRS, роуминг).

Проверяется в FF через плагин  Web Developer→Images→Replace Images With Alt Attributes.




№11 Отсутствие багов при увеличенном шрифте

Проверяется в FF:

Про приведение внешнего вида сайта на 120dpi к 96 читайте в моей статье «120 dpi и шрифты в em».



№12 Наличие Win/Mac/Linux-аналогов шрифтов

Проверяется поиском по тексту css названий “Helvetica”,“Liberation”, “DejaVu”,”Meera”,”Monaco”, “ Century Schoolbook L”,” Nimbus Mono L”, “URW”. Хотя бы два из них должны быть.
Наборы аналогов популярных шрифтов:

 

№13 Оптимизация скорости загрузки

Зачем это нужно:

скорость загрузки оказывает ключевое влияние на доступность сайта (больше психологическую, чем фактическую), активность пользователей на сайте (медленными сайтами люди предпочитают не пользоваться) и его конверсию (медленным сайтам не доверяют).

© sunnybear.
В целом скорость загрузки проверяется так:

Наличие css-спрайтов проверяется поиском по коду блоков объявлений вида:

… {background-position: 0 -30px} 
… {background-position: 0 -60px} 
… {background-position: 0 -90px}

(цифры могут быть любые)
Наличие base64-encode проверяется поиском по коду блоков объявлений вида 

url(data:image/png;base64,iVBOR… )

Border-radius, gradient, box-shadow, text-shadow проверяются поиском этих слов в css 🙂
Самый простой способ проверить оптимизацию png/jpg – запустить готовые скрипты оптимизации графикидля картинок вашей вёрстки и сравнить результат с исходными файлами – если размер почти не измениться – значит всё ок.
Если js не объединены в один файл, то Page Speed скажет вам об этом: “Combine external JavaScript”.

Необходимо учитывать что спрайтов, base64 encode и css3-стилей может и не быть по причине ненужности (макет очень простой).



Для проектов, где это оговорено, проверяется:




№15 Важные мелочи:

Где же 14? Пропущено, правильно, тест на внимание, не спи, чья-то рука в твоём кармане, йо!
И последнее, но самое важное тем не менее – на “WTF?” манагера — имей своё мнение 🙂

Оригинал: http://habrahabr.ru/blogs/webdev/114256/

Exit mobile version