Содержание

Создание веб-сайта. Курс молодого бойца / Хабр

Как-то меня попросили провести небольшой семинар в лицее, где я когда-то учился, по созданию веб-сайта. В процессе написания речи я подумал, что она может вылиться в материал, который, возможно, будет полезен многим начинающим в области веб-дизайна, вёрстки веб-страниц и пр. Я не претендую на истину в первой инстанции и всё изложенное носит чисто личностный взгляд на работу с дизайном и кодом. Статья даёт поверхностный взгляд на понятия и средства, которые, на мой взгляд, могут стать неплохим стартом для того, кто готов идти дальше.

Условно процесс создания сайта (web-проекта) можно разделить на 3 этапа:

  • Планирование
  • Дизайн
  • Разработка

Данный этап можно разделить на несколько подэтапов:

  • Создание идеи
  • Разработка структуры проекта
  • Проработка макета проекта

Создание идеи

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

Разработка структуры проекта

Когда мы определились с темой проекта, подобрали необходимый материал, следующим этапом будет разработка структуры проекта. Структура проекта подразумевает под собой разделы сайта, в соответствии с которыми будет формироваться навигационное меню и строиться дизайн проекта. На данном этапе можно классифицировать материал по темам и разделам.

Проработка макета проекта

После того, как мы определились со структурой проекта можно составить макет проекта (схематично).

Для отрисовки наброска можно использовать бумагу и ручку, Photoshop, любой другой редактор графики (раньше часто использовали Adobe Fireworks). Важно отметить, что данный этап – это не отрисовка готового дизайн-макета, а всего лишь схематичный набросок, выполненный для понимания того, как на сайте будут располагаться основные информационные блоки, графика и прочие элементы дизайна.

Основные элементы страницы

Зачастую основными элементами страницы являются: содержащий блок (wrapper, container),

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

Содержащий блок (контейнер)

Роль контейнера на странице может выполнять непосредственно элемент body или же div. Ширина содержащего блока может быть резиновой (fluid), а может быть фиксированной (fixed).

Логотип

Текстовая или графическая составляющая проекта и выделяющая его среди других. Логотип чаще всего располагается в верхнем левом углу страницы или же посередине (в зависимости от идеи, макета).

Навигация

Основная навигационная панель содержит ссылки на основные разделы сайта. Навигационная панель часто располагается в верхней части страницы (в независимости от того вертикально или горизонтально располагаются элементы навигации).

Контент

Контент – это основная составляющая веб-страницы. Он занимает главенствующую роль в дизайне страницы, поэтому занимает большее пространство, подкреплён, помимо текста, графикой.

Нижний колонтитул (footer)

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

Резиновый и фиксированный макет


Фиксированный макет

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

Резиновый макет

«Резиновый» макет подразумевает, что страница сайта будет стараться занять всё доступное ей пространство на экране пользователя, подстраиваясь под разрешение.

В данном контексте стоит уяснить такие понятия, как отзывчивый веб-дизайн (Responsive Web Design aka. RWD) и адаптивный веб-дизайн (Adaptive Web Desing aka. AWD). Первое понятие укладывается в концепцию «резинового» и означает, что при изменении размера экрана ваш сайт подстраивается под него, второе понятие подразумевает, что при разработке вы определяете основные разрешения (размеры экрана), под которые будет подстраиваться (адаптироваться) ваш контент. В обоих случаях следует разрабатывать не один, а несколько макетов, которые будут соответствовать разным разрешениям экрана. Часто создаётся 3 макета под разрешения iPhone (Android Phone), iPad (Android Tablet) и Desktop.

На данном изображении показаны оба подхода. Сверху блок «отзывается» на любые изменения размера контейнера, снизу «адаптируется» под определённую ширину

Полезные ссылки по теме:

  • Пример сайта, использующего концепцию адаптивного веб-дизайна
  • Статья, в которой разбирается данная концепция (eng. )
  • Книга об отзывчивом веб-дизайне

Почему при «резиновом» дизайне создаётся несколько макетов, а не используется один?

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

Модульная сетка

Перед составлением схемы проекта так же необходимо уяснить понятие модульной сетки. Модульная сетка подразумевает под собой разделение страницы на отдельные колонки по вертикали и выстраивание контента, при разработке дизайн макета, именно по этой сетке.

Наиболее популярной системой является модульная сетка 960 Grid System (http://960.gs), которая максимально делит страницу на 12, 16 и 24 колонки.

Максимум в ширине сетка имеет 960 пикселей. Данное решение основано на том, что большинство современных мониторов, на момент создания сетки, имели разрешение не меньше 1024 на 768 пикселей. Создание макета на основе данной сетки, в дальнейшем, поможет ускорить процесс разработки (вёрстки).

Так же стоит отметить, что при разработке «резинового» макета страницы существует понятие максимальной ширины. Данное утверждение основывается на удобстве восприятия информации. Если предположить, что наш сайт не имеет максимального значения по ширине, то на больших мониторах информация будет сильно растягиваться и её неудобно будет читать. Чаще всего ограничиваются шириной в 1280 пикселей.

Модульная сетка 960GS отвечает концепции «фиксированного» дизайна, для «резинового» дизайна можно обратить внимание на адаптацию этой же сетки на сайте http://www.designinfluences.com/fluid960gs/ или воспользоваться сеткой, которую предлагает фрэймворк Bootstrap (http://getbootstrap.com/css/#grid).

Благодаря модульной сетке блоки контента и элементы будут располагаться на определённом расстоянии друг от друга, будут иметь удобоваримую ширину, что в дальнейшем визуально будет приятно пользователю и не будет вызывать у него какие-либо неудобства в восприятии сайта.

Модульная сетка, по сути, – это некая визуальная абстракция, визуальное деление страницы на равные по ширине столбцы с равными отступами между ними. Визуализировать данную модель можно посредствам направляющих или отдельного слоя, на котором будут изображены эти столбцы. Именно такое решение вы найдёте в шаблонах сетки 960gs.

Полезные ссылки и материалы:

  • Паттерны адаптивной сетки
  • Создание прототипа на основе 960gs (eng.)
  • Использование сетки 960gs как основы для дизайна (eng.)

Макеты веб-страниц

Среди всего многообразия составления макета веб-страницы можно выделить четыре наиболее распространённых:

  • Навигация в левом столбце

  • Навигация в правом столбце

  • Навигация в трёх столбцах

  • Горизонтальная навигация. На данном этапе сайты с таким типом навигации составляют большинство. Удобство такого подхода легко объяснить тем, что в данном случае у нас остаётся больше пространства для контента, составляющего наш сайт.

Но данный список типов макетов нельзя назвать исчерпывающим, поэтому перед разработкой макета и дизайна страницы так же можно погулять по различным сайтам с примерами других работ, а так же по сайтам схожей с вашей тематикой:

  • http://unmatchedstyle.com/gallery
  • http://cssdrive.com
  • http://foundation.zurb.com/templates.html
  • http://zurb.com/patterntap

На первых двух сайтах можно посмотреть какие цвета использовались в дизайне.

Mobile First

С учётом тенденций последних лет данный подход плотно занимает свою нишу в разработке и дизайне сайтов. Тенденция такова, что практически около 60% пользователей интернета используют для доступа в сеть мобильные устройства, поэтому правилом хорошего тона становится разработка не только десктопной версии сайта, но и мобильной версии. При использовании данного подхода разработка макета сайта, дизайна и вёрстки начинается с мобильной версии, а затем уже прорабатываются макеты для других разрешений: добавляются блоки, баннеры, дополнительные элементы дизайна и пр.

Данный подход учитывает практически весь цикл разработки, поэтому мы ещё к нему вернёмся.

Усвоив всё вышесказанное можно переходить к следующему этапу – Дизайн.

После создания макета проекта можно переходить непосредственно к созданию дизайн-макета. На данном этапе начать стоит с определения цветовой гаммы проекта.

Один из способов определения основного цвета в проекте – это составление mood board. Для этого необходимо выписать себе все синонимы, связанные с темой проекта, а затем каждый синоним набрать в поиске по картинкам Google или Yandex. На основе найденных изображений выписать себе цвета, которые чаще всего встречаются на них (каких цветов больше). Найденные цвета будут составлять визуальное восприятие нашего проекта и вызывать у пользователя соответствующие чувства.

Для работы с выбранным цветом и составлением палитры цветов нашего сайта можно использовать следующие инструменты:

  • Color Scheme Designer 3 (http://colorschemedesigner.com/csd-3.5/). Помимо выбора цветовой схемы данный сервис позволяет посмотреть пример того, как выбранные цвета будут смотреться на сайте

  • Adobe Color CC (https://color.adobe.com/ru/). Данный ресурс, в отличие от Color Scheme Designer 3, позволяет создавать палитры ещё и на основе загруженных изображений (которые, например, могли появиться у нас на этапе составления mood board). Так же данный сервис обладает большим архивом палитр других пользователей.

  • COLORlovers (http://www.colourlovers.com/). Обширное сообщество, где можно подобрать различные палитры.

Важно отметить, что при подборе цветов для палитры всегда стоит выбирать как минимум 2 контрастирующих цвета. Достижение нужного контраста между цветами – необходимое условие для того, чтобы у вас получился хороший интерактивный дизайн.

При работе над дизайном главной и внутренних страниц стоит помнить о некоторых основных принципах.

Элементы Call to Action

Понятие призыва к действию относится к интерактивным элементам сайта: кнопки, баннеры и пр. Данные элементы оформляются таким образом, что пользователю должно хотеться непременно на них нажать. Например, это может быть кнопка с призывом к действию (Нажми, Купи, Сэкономь), яркий баннер с заманчивым предложением, яркой картинкой и пр.

Данное понятие хорошо вписывается в принцип AIDA (Attraction Interest Desire Action).

AIDA

Данное понятие применяется чаще при дизайне главных страниц, страниц акций и пр., где необходимо подтолкнуть пользователя к тому или иному действию: подписка, покупка и пр. Если перевести данный акроним на русский, то мы получим следующие понятия:

  • Привлечение внимания
  • Интерес
  • Желание
  • Действие

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

Но и данный принцип не работает сам по себе без некоторых других: схема просмотра страницы (наиболее, естественный путь движения глаз по странице), визуальные направляющие.

Схема просмотра страницы

Довольно часто встречается Z-схема просмотра страницы. В соответствии с этим элементы страницы обычно располагают следующим образом: логотип слева вверху, меню справа вверху, информационные блоки, картинки слева внизу, кнопка с призывом к действию справа внизу.

Визуальные направляющие

Визуальными направляющими называют декоративные элементы страницы, которые перенаправляют взгляд пользователя на те или иные элементы дизайна, формы, кнопки и пр. В качестве визуальных направляющих могут выступать стрелка, направление взгляда человека на изображении, направление указательного пальца, в общем всё, что может как-то указывать в ту или иную сторону.

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

Тот же эффект продемонстрирован на втором изображении с наложенной тепловой картой: в первом случае нас привлекает в основном прямой взгляд ребенка (прямо в глаза), во втором случае направление взгляда ребенка и его поза невольно обращают взгляд пользователя на блок справа.

Фрэймворки

Стоит так же отметить, что иногда, при разработке дизайна страницы, используют фрэймворки Bootstrap, Foundation, Material Design Lite, которые, помимо готовых элементов дизайна (кнопки, формы ввода и пр.), предлагают свою модульную сетку, CSS сниппеты (часть кода, разметки, которая может неоднократно использоваться) для вставки элементов в страницу (тех же кнопок, элементов форм и пр.) и классы разметки, а так же JS скрипты для соответствующих интерактивных элементов.

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


Готовые элементы дизайна из Bootstrap, Foundation и Material Design Lite (MDL)

Трэнды

Нельзя не упомянуть о некоторых наметившихся трендах последнего времени в качестве компоновки и дизайна страниц.

Во-первых, стоит упомянуть о так называемых лэндинговых страницах, которые подразумевают под собой длинную страницу, разделённую на соответствующие секции и знакомящие пользователя с основным контентом сайта. Часто лэндинг является единственной страницей, на которой сразу удаётся показать всю необходимую информацию, не заставляя пользователя переходить по страницам. Лэндингам обычно сопутствует хороший дизайн, выверенная и продуманная подача информации, элементы call-to-action, интерактивность (счётчики, анимация и пр.).

Стоит так же сказать о внешнем виде страниц и вспомнить такие понятия как скевоморфизм и плоский дизайн.

Скевоморфизм

Скевоморфизм уже продолжительное время уступает свои позиции плоскому дизайну. Данное понятие означает наделение интерактивных элементов качествами реальных. Например, оформление страницы с книгами в виде книжной полки, оформление кнопки на подобии настоящей с соответствующей имитацией нажатия, использование реальных текстур и пр. Данный принцип активно использовался при создании страниц буквально пару лет назад, но затем тенденции сменились и на первый план вышел плоский дизайн (Flat, Material).

Плоский дизайн

Плоский дизайн использует минимум текстур и оформление, создание дизайна базируется на понятиях контраста, соотношения цветов и размеров.

Не маловажную роль на тренды в веб-дизайне оказало развитие мобильных операционных систем. Чаще всего двигателем прогресса становятся решения от компании Apple, которая в своих дизайн-решениях iOS сначала использовала имитацию реальных объектов, а затем всё упростила до плоского дизайна (Flat UI). Сейчас в вебе главенствует Flat дизайн и Material дизайн, который активно развивает Google.

Неплохой сайт-сравнение двух концепций: http://www.flatvsrealism.com/

По основам веб-дизайна и прототипированию неплохим подспорьем может стать данная книга: Джейсон Берд: Веб-дизайн. Руководство разработчика.

Итак, процесс дизайна макета страницы плавно перетекает в процесс «оживления» сделанного на предыдущих этапах. Прежде чем сразу начинать писать HTML, CSS и JS стоит немного поговорить о редакторах кода и структуре проекта.

Редакторы кода

Из наиболее популярных редакторов кода на сегодня можно выделить три:

  • Sublime Text (http://www.sublimetext.com/3)
  • Atom (https://atom.io/)
  • Brackets (http://brackets.io/)

От части, все эти редакторы похожи по принципу работы, когда при установке мы получаем редактор, в который затем можем «доставить» необходимые модули и плагины, так сказать, «редакторы на стероидах». Разница лишь в технологиях, которые были использованы при написании редакторов, если Sublime Text написан при помощи C++ и Python, то 2 других используют JavaScript, HTML, CSS (Less). За счёт этой разницы Sublime Text может работать чуть быстрее своих коллег.

Существуют так же более продвинутые IDE (студии) такие, как Web Storm, PHP Storm и пр., но для вёрстки проекта вполне подойдёт редактор кода, а не целая студия (IDE).

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

Обзоры текстовых редакторов:

  • Atom
  • Sublime Text
  • Brackets

Структура проекта

Под структурой проекта понимается хранение файлов проекта в его директории. Часто приходится видеть, когда все файлы «свалены» вместе, названия файлам даны «капсом», цифрами или русскими буквами и пр. Во-первых, это банальное неуважение к тому, кто будет работать с вашим проектом далее, во-вторых, чем больше будет ваш проект, тем больше будет становиться файлов и, в конце концов, вы просто запутаетесь, что к чему относится и что нужно, а что нет.

Лучше всего отдельные категории файлов помещать в свои папки: картинки в папку images или img, css в папку css, javascript в папку js. В корне будет лежать только index.html и страницы сайта, либо только index.html, а страницы в отдельной папке pages. Соблюдая эти правила вы никогда не запутаетесь в проекте.

Так же стоит сказать и об именовании файлов проекта. Чаще всего применяются следующие имена: главная страница – это index.html, стили проекта styles.css, скрипты scripts.js или app.js, минимизированные версии файлов имеют префикс .min, картинки носят не пространные названия на русском языке или набора цифр, а отражают то, что на них изображено, например, button.png, download-icon.png, logo.png и т.д.

Работа над проектом

Итак, определившись с редактором кода, структурой мы можем приступать к разработке. Прежде всего стоит отметить, что вёрстка страницы делается поэтапно: сначала пишется HTML-структура (HTML-код), затем добавляются стили, а после, если необходимо, пишутся скрипты (JS), добавляются необходимые плагины и библиотеки.

Учитывая вышесказанное, мы можем условно разделить работу над проектом на следующие этапы:

  • Написание HTML
  • Написание CSS
  • Написание JS

Написание HTML

Сейчас при написании HTML кода уже смело можно использовать тэги и элементы разметки, которые появились вместе с стандартом HTML5, если вам необходимо поддерживать старые браузеры, то можно использовать, например, плагин html5shiv (https://github.com/afarkas/html5shiv), который обеспечивает поддержку новых стандартов в старых браузерах или библиотеку Modernizr (https://modernizr.com/) (html5shiv входит в сборку Modernizr), которая определяет возможности браузера, с помощью которого просматривается сайт.

При вёрстке сайтов в настоящее время, априори, используется блочный подход, никаких таблиц, iframe’ов и пр. Таблицы выполняют только свою прямую роль – представление информации в виде таблицы. В вёрстке таблицы используются лишь при работе с электронными письмами.

На этапе написания HTML мы, как бы, создаём скелет страницы, её абстрактную модель при помощи тэгов (языка разметки HTML). Стоит отметить, что структуру может быть проще написать, если у нас есть прототип, составленный на первом этапе или же, если мы сами, глядя на дизайн-макет, на бумаге схематично разрисовали себе все блоки страницы.

При написании разметки мы так же сразу можем прописывать элементам классы и идентификаторы.

Правила именования классов

В проекте во всём должен быть порядок: от структуры проекта до имен классов, разметки и написания кода. Если при разметке важно следить за типом информации и размещением её в соответствующих блоках (заголовок, список, ссылка, строчный элемент, параграф и пр.), то при именовании классов и идентификаторов важно соблюдать здравый смысл. Классы должны давать абстрактное понятие о блоке, к которому они относятся, чтобы код было легче читать, а затем и писать стили. В принципе здесь не должно быть ничего сложного, если мы размечаем меню, то логично содержащему блоку дать класс . nav или .navigation, если это блок с текстом, то можно дать ему класс .block-text и т.д.

БЭМ

На сегодняшний день есть один популярный подход, который касается принципов построения проекта в целом, но на данном этапе нас интересует именно именование классов. Подход называется БЭМ и расшифровывается, как Блок Элемент Модификатор.

Вкратце можно описать данный подход, как некое соглашение по именованию классов и представлению разметки страницы. Каждый элемент страницы являет собой сущность, которая может существовать независимо от контекста, тогда мы говорим о Блоке (.block) или же только в контексте другой сущности, тогда мы говорим об Элементе (.block__element). Каждый Блок или Элемент могут иметь различные модели представления: цвет, форму, прозрачность и пр. За подобные свойства будет отвечать Модификатор (.block__element_mod).

Таким образом мы представляем наш код, как композицию блоков, элементов и их модификаций.

Более полная информация о методологии: https://ru.bem.info/

SMACSS

Так же существует подход SMACSS (расшифровывается данный акроним как Scalable and Modular Architecture for CSS – Масштабируемая и Модульная Архитерктура для CSS), который разделяет понятие о классах и разметке на несколько уровней: базовый, макет, модуль, состояние, тема.

  • К базовому уровню будет относиться всё, что касается непосредственно тэгов html.
  • К уровню макета мы будем относить всё, что касается основных составляющих страницы: секции.
  • К уровню модуль мы будем относить всё, что касается переиспользуемых элементов страницы: баннеры, навигация, списки, блоки информации и пр.
  • Уровень Состояние описывает как будут выглядеть модули и секции в том или ином состоянии: отображаются или не отображаются, сжатые или раскрытые, активны или неактивны и пр.
  • Уровень темы чем-то схож с уровнем Состояния и отражает как модули или секции могут выглядеть.

В данном подходе используются следующие соглашения по именованию. Уровни определяются при помощи префиксов и соответствующего буквенного обозначения:

  • Макет: .l- или .layout-
  • Так как модули составляют основную часть проекта именовать их, используя префикс module- избыточно. Поэтому для них используются имена как есть, например: .example {}, .afisha {} и пр.
  • Состояния имеют префикс .is-, например .is-hidden {}
  • Уровень Темы именуется подобно модулям.

При данном подходе часто бывает удобно каждый уровень абстракции и его классы держать в отдельном файле.

Информация о методологии и онлайн книга: https://smacss.com/
Русскоязычный перевод книги по SMACSS: https://github.com/andrew—r/smacss

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

Небольшой курс по основам HTML: Смотреть

Написание CSS

Правила именования классов подводят нас к следующему этапу. Когда написана html структура проекта, определены классы можно переходить к написанию CSS стилей и нарезке макета.

Стоит упомянуть о 2-х CSS файлах-дополнениях: normalize.css и reset.css.

Reset.css

Изначально в проектах повсеместно использовался reset.css, написанный Эриком Мейером. Цель данного свода правил – сбросить стили браузера, которые он по умолчанию использует для отображения элементов разметки. Таким образом при использовании reset.css нам не нужно переписывать стили браузера, по сути мы работаем с «чистым листом» и можем сосредоточиться на написании собственных стилей с нуля.

Normalize.css

Normalize.css наоборот, не сбрасывает все стили «в ноль», а нормализует их, приводит отображение стилей проекта к более-менее однообразию во всех современных браузерах.

У обоих сводов правил есть свои плюсы и минусы, на данный момент популярен normalize.css. Популярность данного свода правил обусловлена ещё и тем, что вам не приходится при разработке заново прописывать основные свойства для базовых элементов страниц, а лишь модифицировать их по необходимости.

Так же стоит упомянуть о, так называемом, «быстром сбросе», когда мы абсолютно для всех элементов страницы с помощью селектора * прописываем свойства {margin: 0; padding: 0}. Таким образом мы сбрасываем все внутренние и внешние отступы для всех элементов страницы. Но данную технику не рекомендуется использовать, так как она замедляет процесс отрисовки страницы, да и по сути имеет мало смыла (на мой взгляд).

Так же стоит отметить, что все размеры и отступы берутся непосредственно из дизайн-макета. Для получения данных значений нам необходимо использовать инструмент «линейка» и направляющие (речь про инcтрументарий Adobe Photoshop), а затем переносить полученные значения в код. Если мы работаем с фиксированным макетом, то значения переносятся в пикселях как есть, если же у нас «резиновый», то значения нужно переводить в проценты. Основная формула – это ширина элемента, делённая на ширину контекста (ширина содержащего блока). Например, если блок, содержащий текст и картинку имеет на макете ширину 400px, а блок с текстом в нём должен иметь ширину 340px, то в процентном выражении это будет (340 / 400) * 100%, то есть 85% будет занимать блок с текстом.

Не стоит перегружать ваши стили чрезмерной специфичностью, например, если мы хотим, чтобы ссылка внутри списка имела красный цвет, то не обязательно записывать всю линейку классов и тэгов: .main –nav ul li a, достаточно просто указать .main-nav a. Слишком «специфичные» правила делают правила контекстно зависимым и заставляют вас писать лишний код, а так же влияют на скорость отрисовки страницы, так как при разборе правил CSS парсер читает их справа налево и ему сначала, если брать описанный выше пример, нужно взять все ссылки (a), затем отбросить все ссылки, которые не лежат в li и т.д. пока он не доберётся до содержащего класса.

Специфичность кода, так же означает чрезмерную привязку к базовым тэгам. Например, если мы хотим, чтобы элемент внутри .block был синим и при разметке использовали элемент span (в правилах мы написали .block span {background-color: blue}), то при замене его на div, например, нам нужно будет написать новое правило уже для div внутри .block. Таким образом наш код будет обрастать ненужными правилами, которые по сути дублируют друг друга. Гораздо проще определить всего лишь один класс (класс элемента), который при присвоении внутренним элементам будет приводить нас к желаемому результату.

Ещё один пример контекстной зависимости кода – это использование имен тэгов вместе с именами классов, например, div.block {display: block}. Если мы захотим тот же класс применить к span, то нам придётся написать опять span.block {display: block} или span.block, div.block {display: block}, что в любом случае приведёт к увеличению кода на лишнюю строчку.

Почему это важно? Во-первых, вы не делаете лишнюю работу, во-вторых, вам не нужно потом среди 10000 строк искать нужное правило и, наконец, чем больше строк кода, тем больше размер файла, а большие по объему файлы медленнее передаются по сети, что в свою очередь может быть причиной долгой загрузки, а излишняя специфичность причиной долгой отрисовки вашей страницы.

Если, вы используете правила, относящиеся к спецификации CSS3, то не поленитесь проверить необходимость использования браузерных префиксов на сайте http://caniuse.com.

Возвращаясь к Mobile First, стоит сказать, что при работе в данной концепции написание стилей стоит начинать с мобильной версии, а затем с помощью медиа запросов добавлять правила, которые будут работать на других разрешениях. Зачастую, при расширении правил от мобильной версии к десктопной, приходится писать гораздо меньше кода, чем при работе наоборот: от десктопной версии к мобильной.

Полезные ссылки и материалы:

  • Книга Сначала мобильные
  • Книга CSS. Рецепты программирования
  • Книга Большая книга CSS3
  • Книга CSS3. Руководство разработчика
  • Небольшой курс по основам CSS: Смотреть

Написание JS

Итак, заключительным этапом является написание JS скриптов. При создании веб страниц стало, практически, стандартом использование библиотеки jQuery, которая позволяет с лёгкостью манипулировать элементами web-страницы (DOM узлами), навешивать прослушку событий, отправлять запросы на сервер, обрабатывать результат выполнения и пр. Но не стоит слепо доверять трендам, на сегодняшний день нативный JavaScript достиг такого уровня, что вам возможно уже не нужен jQuery. Поэтому, прежде чем слепо прикреплять jQuery, стоит задуматься, так ли он нужен для ваших задач и не достаточно ли встроенных возможностей языка JavaScript.

Есть неплохой ресурс, который приводит альтернативы одних и тех же манипуляций на языке JavaScript и с помощью библиотеки jQuery: http://youmightnotneedjquery.com/, так же неплохим подспорьем является сайт https://developer.mozilla.org/ru/, на котором, помимо описания методов и свойств JavaScript, можно найти полифиллы для тех или иных методов (библиотека или часть кода, которая добавляет в старые браузеры поддержку возможностей современных функций и методов JavaScript).

Важно отметить, что не рекомендуется использовать JavaScript для стилизации, то есть не стоит для того или иного объекта DOM (элемента страницы) добавлять портянку CSS свойств с помощью JavaScript, чтобы выделить его состояние и пр. Рекомендуется использовать классы, то есть заранее в CSS определить классы-состояния (активный, не активный, скрытый, использованный и пр.) и при манипуляции элементами просто добавлять или убирать соответствующие классы.

Например, у нас есть элемент списка с классом .list__item, для того, чтобы показать активный элемент в данный момент (выбран пользователем) или нет, можно просто добавить класс (.list__item—active), а не прописывать все стили, присущие этому классу в JS:

document.querySelector(‘.list__item’).style.color = ‘red’;

и т.д.
Небольшой пример с возможными способами присваивания класса (присвоение модификатора происходит при нажатии на зелёный квадрат): http://jsbin.com/.

Не рекомендуется решать задачи, которые явно относятся к уровню CSS с помощью JavaScript, пытаясь как-то выровнять объект или добавить ему стили при наведении и пр.

Опять-таки, возвращаясь к теме Mobile First, нельзя не упомянуть о 2-х концепциях, которые коррелируют с данной техникой. Progressive Enhacement и Graceful Degradation, что переводится как прогрессивное улучшение и последовательное ухудшение. Данные принципы описывают 2 разных подхода к разработке: в первом случае мы разрабатываем наш сайт, пишем скрипты с учётом старых браузеров и систем или же определяем поведение при невозможности запуска скриптов, а затем постепенно улучшаем скрипт, вводя современные функции и методы, таким образом мы получаем сайт, который будет одинаково хорошо работать в старых и новых браузерах и средах (то же касается и css).

При Graceful Degradation подход противоположный – мы разрабатываем для современных браузеров и, лишь, потом начинаем вносить доработки и изменения с учётом старых версий.

Подход Mobile First чем-то схож с Progressive Enhacement.

Проверка кода

После написания html, css и js для нашей страницы необходимо проверить всё ли сделано верно. Для этого можно использовать online средства:

  • Для проверки html: https://validator. w3.org/
  • Для проверки CSS: http://jigsaw.w3.org/css-validator/
  • Для проверки JS: http://www.jslint.com/

Благодаря данным сервисам можно проверить не забыли ли вы где-то закрыть тэг, верно ли используете параметры и атрибуты, всё ли в порядке с вашими стилями и правилами в них, а так же проверить ваш код на правильность написания функций, методов и пр.

Статьи с рекомендациями по написанию JS, HTML и CSS:

  • 10 советов по написанию нативного JavaScript без jQuery
  • Сайт-сборник рекомендаций по JS, HTML и CSS

Средства автоматизации

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

960GS

Мы уже говорили об этом средстве разработки в разделе про модульные сетки и дизайн. Нужно сказать, что 960GS предлагает не только макеты для создания дизайна, но и свою систему именования классов. Используя предлагаемые классы при вёрстке и при подключении css файла системы в проект, блоки сайта будут выстроены по этой сетке, что сэкономит время на написании практически того же самого самостоятельно.

<div>
  <div>
      <div>
          ...
      </div>
      <div>
          ...
      </div>
      <div>
          ...
      </div>
  </div>
  <div>
      ...
  </div>
</div>

Emmet

Emmet – это средство работы с html и css (http://emmet.io/). Плагин для работы с данным средством можно установить, например, в Sublime Text, тогда у вас появляется возможность не писать громоздкие куски кода на html и css, а записывать их в строчку, раскрывая затем в полноценную разметку. Например, строка .block>ul.list>li.list__item*3, может быть раскрыта в полноценный код:

<div>
  <ul>
    <li></li>
    <li></li>
    <li></li>
  </ul>
</div>

Затем вам просто необходимо вписать текстовые значения в элементы списка. То же касается и css: строка w:100px+h:150px+bgc:#ff0 раскрывается в:

width: 100px;
height: 150px;
background-color: #ff0;

Благодаря данным средствам писать код становится быстрее и приятнее, так как вы меньше времени тратите на написания закрывающих блоков, переходам по строчкам, а так же уменьшается возможность, касательно html, не закрыть тот или иной элемент разметки. В плане CSS, например, становится легче работать с браузерными префиксами, так как одна строчка с CSS3 свойством может быть раскрыта в несколько с добавлением необходимых префиксов.

Jade

Далее стоит упомянуть и о таком языке работе с шаблонами, как jade (http://jade-lang.com/). Опять-таки, с помощью jade писать html становится быстрее и удобнее, а так же появляется возможность создания переиспользуемых блоков кода и миксинов, передавая которым на вход те или иные параметры мы будет получать нужную нам разметку. Благодаря jade в проекте, касательно разметки и написания страниц, может поддерживаться модульность, а часто используемые названия и блоки кода могут выноситься в качестве переменных (названия, имена страниц и пр.) или миксинов в отдельные файлы настроек и файлы, соответственно. Для работы с jade, а точнее для преобразования написанного кода из jade в html, необходимо использовать командную строку, а так же установить на ваш компьютер платформу nodejs (https://nodejs.org/en/, http://nodejs.ru/).

Командная строка

Работа в командной строке так же может ускорить некоторые этапы работы над проектом, например, создание папок и файлов. Запустив консоль в директории проекта и набрав в ней всего лишь одну строку:

mkdir project && cd project && mkdir css && touch css/styles.css && mkdir images && mkdir js && touch js/app.js && touch index.html

После нажатия enter мы получим папку project в которой будут находиться папки css, images, js, в папках css и js файлы styles. css и app.js, соответственно, а в корне project лежать файл index.html. Таким образом мы сэкономили время на создание папки, написание её названия, создание файлов и пр. Так же командная строка используется для работы с остальными средствами автоматизации.

Sass

Далее стоит поговорить о таком языке как Sass (http://sass-lang.com/). Данный язык упрощает работу с css. Благодаря Sass можно записывать вложенные классы, проводить математические вычисления прямо в коде, выносить переиспользуемые величины в качестве переменных в отдельные файлы или в начало файла, что в значительной степени упрощает дальнейшую работу со стилями и упрощает изменение тех или иных величин, так как они все будут храниться в одном месте и не нужно будет «ходить» по всему проекту и вносить соответствующие правки. Так же, благодаря Sass в проекте можно придерживаться принципа модульности, храня части разметки в соответствующих файлах и подключать их все в основной, затем с помощью консольной команды можно собрать весь код в один css файл, так же поддерживается сборка результирующего файла на лету по мере написания стилей. Опять-таки для работы с Sass потребуется командная строка. Процесс установки пакета можно изучить здесь: http://sass-lang.com/install.

HTML5Boilerplate

HTML5Boilerplate (https://html5boilerplate.com/) представляет собой заранее скомпонованный проект, в котором уже есть index.html, normalize.css и пр. В index.html, например, уже заранее прописаны основные куски кода, которые необходимы при написании html страницы. Проект позволяет скачать архив со всеми файлами как есть или же использовать кастомную сборку: http://www.initializr.com/. Опять-таки, принцип прост: зачем тратить время на написание одних и тех же строк или на проделывание одних и тех же манипуляций, если мы сразу можем сосредоточиться непосредственно на работе с проектом.

Gulp и Grunt

Gulp (http://gulpjs.com/) и Grunt (http://gruntjs.com/) представляют собой сервисы запуска задач, которые описываются в основных файлах данных сервисов, выполняются с помощью совместимых модулей и запускаются на выполнение с помощью консоли.

Данные сервисы помогают использовать в разработке, например, вышеописанные средства Jade и Sass, автоматически преобразовывать их в соответствующие файлы html и css, сжимать их, если необходимо, а так же проверять, например css свойства, на необходимость использования браузерных префиксов и подставлять их в автоматическом режиме.

Оба сервиса используют различный подход в описании выполнения задач, но суть их работы одинакова. Полезным будет данное сравнение: http://frontender.info/gulp-grunt-whatever/

Так же многие сервисы вроде autoprefixer (автоматическая простановка браузерных префиксов), jshint (проверка JS кода на валидность) могут быть установлены как сторонние плагины в текстовом редакторе (Sumblime Text, Atom, Brackets) и инициализированы при нажатии определённого сочетания клавиш.

Bootrstrap, Foundation, Material Design Lite

Данные фрэймворки уже упоминались в разделе про дизайн. Но стоит опять вспомнить о них, так как они, в определённой степени, помогают автоматизировать процесс разметки веб-страницы и работы с ней.

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

Со всеми возможностями и примерами можно ознакомиться на соответствующих сайтах:

  • Bootstrap: http://getbootstrap.com/
  • Foundation: http://foundation.zurb.com/
  • Material Design Lite: http://www.getmdl.io/

Данное описание не является исчерпывающим и представляет собой лишь поверхностный взгляд на некоторые технологии. Но прежде чем пускаться во все тяжкие, используя средства автоматизации, библиотеки, framework’и, готовый код и прочее, стоит, всё-таки, изучить основы работы с html, css и js.

Надеюсь, что все описанные вещи будут полезны вам в изучении темы веб-дизайна и фронтенд разработки.

Создание веб-сайта. Курс молодого бойца / Хабр

Как-то меня попросили провести небольшой семинар в лицее, где я когда-то учился, по созданию веб-сайта. В процессе написания речи я подумал, что она может вылиться в материал, который, возможно, будет полезен многим начинающим в области веб-дизайна, вёрстки веб-страниц и пр. Я не претендую на истину в первой инстанции и всё изложенное носит чисто личностный взгляд на работу с дизайном и кодом. Статья даёт поверхностный взгляд на понятия и средства, которые, на мой взгляд, могут стать неплохим стартом для того, кто готов идти дальше.

Условно процесс создания сайта (web-проекта) можно разделить на 3 этапа:

  • Планирование
  • Дизайн
  • Разработка

Данный этап можно разделить на несколько подэтапов:

  • Создание идеи
  • Разработка структуры проекта
  • Проработка макета проекта

Создание идеи

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

Разработка структуры проекта

Когда мы определились с темой проекта, подобрали необходимый материал, следующим этапом будет разработка структуры проекта. Структура проекта подразумевает под собой разделы сайта, в соответствии с которыми будет формироваться навигационное меню и строиться дизайн проекта. На данном этапе можно классифицировать материал по темам и разделам.

Проработка макета проекта

После того, как мы определились со структурой проекта можно составить макет проекта (схематично).

Для отрисовки наброска можно использовать бумагу и ручку, Photoshop, любой другой редактор графики (раньше часто использовали Adobe Fireworks). Важно отметить, что данный этап – это не отрисовка готового дизайн-макета, а всего лишь схематичный набросок, выполненный для понимания того, как на сайте будут располагаться основные информационные блоки, графика и прочие элементы дизайна.

Основные элементы страницы

Зачастую основными элементами страницы являются: содержащий блок (wrapper, container), логотип, навигация, контент, футер (нижний колонтитул), свободное пространство (по сути свободное пространство — это не элемент дизайна, но понятие, помня о котором при составлении макета страницы, наш проект не будет выглядеть как нагромождение блоков).

Содержащий блок (контейнер)

Роль контейнера на странице может выполнять непосредственно элемент body или же div. Ширина содержащего блока может быть резиновой (fluid), а может быть фиксированной (fixed).

Логотип

Текстовая или графическая составляющая проекта и выделяющая его среди других. Логотип чаще всего располагается в верхнем левом углу страницы или же посередине (в зависимости от идеи, макета).

Навигация

Основная навигационная панель содержит ссылки на основные разделы сайта. Навигационная панель часто располагается в верхней части страницы (в независимости от того вертикально или горизонтально располагаются элементы навигации).

Контент

Контент – это основная составляющая веб-страницы. Он занимает главенствующую роль в дизайне страницы, поэтому занимает большее пространство, подкреплён, помимо текста, графикой.

Нижний колонтитул (footer)

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

Резиновый и фиксированный макет


Фиксированный макет

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

Резиновый макет

«Резиновый» макет подразумевает, что страница сайта будет стараться занять всё доступное ей пространство на экране пользователя, подстраиваясь под разрешение.

В данном контексте стоит уяснить такие понятия, как отзывчивый веб-дизайн (Responsive Web Design aka. RWD) и адаптивный веб-дизайн (Adaptive Web Desing aka. AWD). Первое понятие укладывается в концепцию «резинового» и означает, что при изменении размера экрана ваш сайт подстраивается под него, второе понятие подразумевает, что при разработке вы определяете основные разрешения (размеры экрана), под которые будет подстраиваться (адаптироваться) ваш контент. В обоих случаях следует разрабатывать не один, а несколько макетов, которые будут соответствовать разным разрешениям экрана. Часто создаётся 3 макета под разрешения iPhone (Android Phone), iPad (Android Tablet) и Desktop.

На данном изображении показаны оба подхода. Сверху блок «отзывается» на любые изменения размера контейнера, снизу «адаптируется» под определённую ширину

Полезные ссылки по теме:

  • Пример сайта, использующего концепцию адаптивного веб-дизайна
  • Статья, в которой разбирается данная концепция (eng. )
  • Книга об отзывчивом веб-дизайне

Почему при «резиновом» дизайне создаётся несколько макетов, а не используется один?

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

Модульная сетка

Перед составлением схемы проекта так же необходимо уяснить понятие модульной сетки. Модульная сетка подразумевает под собой разделение страницы на отдельные колонки по вертикали и выстраивание контента, при разработке дизайн макета, именно по этой сетке.

Наиболее популярной системой является модульная сетка 960 Grid System (http://960.gs), которая максимально делит страницу на 12, 16 и 24 колонки. Максимум в ширине сетка имеет 960 пикселей. Данное решение основано на том, что большинство современных мониторов, на момент создания сетки, имели разрешение не меньше 1024 на 768 пикселей. Создание макета на основе данной сетки, в дальнейшем, поможет ускорить процесс разработки (вёрстки).

Так же стоит отметить, что при разработке «резинового» макета страницы существует понятие максимальной ширины. Данное утверждение основывается на удобстве восприятия информации. Если предположить, что наш сайт не имеет максимального значения по ширине, то на больших мониторах информация будет сильно растягиваться и её неудобно будет читать. Чаще всего ограничиваются шириной в 1280 пикселей.

Модульная сетка 960GS отвечает концепции «фиксированного» дизайна, для «резинового» дизайна можно обратить внимание на адаптацию этой же сетки на сайте http://www.designinfluences.com/fluid960gs/ или воспользоваться сеткой, которую предлагает фрэймворк Bootstrap (http://getbootstrap.com/css/#grid).

Благодаря модульной сетке блоки контента и элементы будут располагаться на определённом расстоянии друг от друга, будут иметь удобоваримую ширину, что в дальнейшем визуально будет приятно пользователю и не будет вызывать у него какие-либо неудобства в восприятии сайта.

Модульная сетка, по сути, – это некая визуальная абстракция, визуальное деление страницы на равные по ширине столбцы с равными отступами между ними. Визуализировать данную модель можно посредствам направляющих или отдельного слоя, на котором будут изображены эти столбцы. Именно такое решение вы найдёте в шаблонах сетки 960gs.

Полезные ссылки и материалы:

  • Паттерны адаптивной сетки
  • Создание прототипа на основе 960gs (eng.)
  • Использование сетки 960gs как основы для дизайна (eng.)

Макеты веб-страниц

Среди всего многообразия составления макета веб-страницы можно выделить четыре наиболее распространённых:

  • Навигация в левом столбце

  • Навигация в правом столбце

  • Навигация в трёх столбцах

  • Горизонтальная навигация. На данном этапе сайты с таким типом навигации составляют большинство. Удобство такого подхода легко объяснить тем, что в данном случае у нас остаётся больше пространства для контента, составляющего наш сайт.

Но данный список типов макетов нельзя назвать исчерпывающим, поэтому перед разработкой макета и дизайна страницы так же можно погулять по различным сайтам с примерами других работ, а так же по сайтам схожей с вашей тематикой:

  • http://unmatchedstyle.com/gallery
  • http://cssdrive.com
  • http://foundation.zurb.com/templates.html
  • http://zurb.com/patterntap

На первых двух сайтах можно посмотреть какие цвета использовались в дизайне.

Mobile First

С учётом тенденций последних лет данный подход плотно занимает свою нишу в разработке и дизайне сайтов. Тенденция такова, что практически около 60% пользователей интернета используют для доступа в сеть мобильные устройства, поэтому правилом хорошего тона становится разработка не только десктопной версии сайта, но и мобильной версии. При использовании данного подхода разработка макета сайта, дизайна и вёрстки начинается с мобильной версии, а затем уже прорабатываются макеты для других разрешений: добавляются блоки, баннеры, дополнительные элементы дизайна и пр.

Данный подход учитывает практически весь цикл разработки, поэтому мы ещё к нему вернёмся.

Усвоив всё вышесказанное можно переходить к следующему этапу – Дизайн.

После создания макета проекта можно переходить непосредственно к созданию дизайн-макета. На данном этапе начать стоит с определения цветовой гаммы проекта.

Один из способов определения основного цвета в проекте – это составление mood board. Для этого необходимо выписать себе все синонимы, связанные с темой проекта, а затем каждый синоним набрать в поиске по картинкам Google или Yandex. На основе найденных изображений выписать себе цвета, которые чаще всего встречаются на них (каких цветов больше). Найденные цвета будут составлять визуальное восприятие нашего проекта и вызывать у пользователя соответствующие чувства.

Для работы с выбранным цветом и составлением палитры цветов нашего сайта можно использовать следующие инструменты:

  • Color Scheme Designer 3 (http://colorschemedesigner.com/csd-3.5/). Помимо выбора цветовой схемы данный сервис позволяет посмотреть пример того, как выбранные цвета будут смотреться на сайте

  • Adobe Color CC (https://color.adobe.com/ru/). Данный ресурс, в отличие от Color Scheme Designer 3, позволяет создавать палитры ещё и на основе загруженных изображений (которые, например, могли появиться у нас на этапе составления mood board). Так же данный сервис обладает большим архивом палитр других пользователей.

  • COLORlovers (http://www.colourlovers.com/). Обширное сообщество, где можно подобрать различные палитры.

Важно отметить, что при подборе цветов для палитры всегда стоит выбирать как минимум 2 контрастирующих цвета. Достижение нужного контраста между цветами – необходимое условие для того, чтобы у вас получился хороший интерактивный дизайн.

При работе над дизайном главной и внутренних страниц стоит помнить о некоторых основных принципах.

Элементы Call to Action

Понятие призыва к действию относится к интерактивным элементам сайта: кнопки, баннеры и пр. Данные элементы оформляются таким образом, что пользователю должно хотеться непременно на них нажать. Например, это может быть кнопка с призывом к действию (Нажми, Купи, Сэкономь), яркий баннер с заманчивым предложением, яркой картинкой и пр.

Данное понятие хорошо вписывается в принцип AIDA (Attraction Interest Desire Action).

AIDA

Данное понятие применяется чаще при дизайне главных страниц, страниц акций и пр., где необходимо подтолкнуть пользователя к тому или иному действию: подписка, покупка и пр. Если перевести данный акроним на русский, то мы получим следующие понятия:

  • Привлечение внимания
  • Интерес
  • Желание
  • Действие

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

Но и данный принцип не работает сам по себе без некоторых других: схема просмотра страницы (наиболее, естественный путь движения глаз по странице), визуальные направляющие.

Схема просмотра страницы

Довольно часто встречается Z-схема просмотра страницы. В соответствии с этим элементы страницы обычно располагают следующим образом: логотип слева вверху, меню справа вверху, информационные блоки, картинки слева внизу, кнопка с призывом к действию справа внизу.

Визуальные направляющие

Визуальными направляющими называют декоративные элементы страницы, которые перенаправляют взгляд пользователя на те или иные элементы дизайна, формы, кнопки и пр. В качестве визуальных направляющих могут выступать стрелка, направление взгляда человека на изображении, направление указательного пальца, в общем всё, что может как-то указывать в ту или иную сторону.

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

Тот же эффект продемонстрирован на втором изображении с наложенной тепловой картой: в первом случае нас привлекает в основном прямой взгляд ребенка (прямо в глаза), во втором случае направление взгляда ребенка и его поза невольно обращают взгляд пользователя на блок справа.

Фрэймворки

Стоит так же отметить, что иногда, при разработке дизайна страницы, используют фрэймворки Bootstrap, Foundation, Material Design Lite, которые, помимо готовых элементов дизайна (кнопки, формы ввода и пр.), предлагают свою модульную сетку, CSS сниппеты (часть кода, разметки, которая может неоднократно использоваться) для вставки элементов в страницу (тех же кнопок, элементов форм и пр.) и классы разметки, а так же JS скрипты для соответствующих интерактивных элементов.

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


Готовые элементы дизайна из Bootstrap, Foundation и Material Design Lite (MDL)

Трэнды

Нельзя не упомянуть о некоторых наметившихся трендах последнего времени в качестве компоновки и дизайна страниц.

Во-первых, стоит упомянуть о так называемых лэндинговых страницах, которые подразумевают под собой длинную страницу, разделённую на соответствующие секции и знакомящие пользователя с основным контентом сайта. Часто лэндинг является единственной страницей, на которой сразу удаётся показать всю необходимую информацию, не заставляя пользователя переходить по страницам. Лэндингам обычно сопутствует хороший дизайн, выверенная и продуманная подача информации, элементы call-to-action, интерактивность (счётчики, анимация и пр.).

Стоит так же сказать о внешнем виде страниц и вспомнить такие понятия как скевоморфизм и плоский дизайн.

Скевоморфизм

Скевоморфизм уже продолжительное время уступает свои позиции плоскому дизайну. Данное понятие означает наделение интерактивных элементов качествами реальных. Например, оформление страницы с книгами в виде книжной полки, оформление кнопки на подобии настоящей с соответствующей имитацией нажатия, использование реальных текстур и пр. Данный принцип активно использовался при создании страниц буквально пару лет назад, но затем тенденции сменились и на первый план вышел плоский дизайн (Flat, Material).

Плоский дизайн

Плоский дизайн использует минимум текстур и оформление, создание дизайна базируется на понятиях контраста, соотношения цветов и размеров.

Не маловажную роль на тренды в веб-дизайне оказало развитие мобильных операционных систем. Чаще всего двигателем прогресса становятся решения от компании Apple, которая в своих дизайн-решениях iOS сначала использовала имитацию реальных объектов, а затем всё упростила до плоского дизайна (Flat UI). Сейчас в вебе главенствует Flat дизайн и Material дизайн, который активно развивает Google.

Неплохой сайт-сравнение двух концепций: http://www.flatvsrealism.com/

По основам веб-дизайна и прототипированию неплохим подспорьем может стать данная книга: Джейсон Берд: Веб-дизайн. Руководство разработчика.

Итак, процесс дизайна макета страницы плавно перетекает в процесс «оживления» сделанного на предыдущих этапах. Прежде чем сразу начинать писать HTML, CSS и JS стоит немного поговорить о редакторах кода и структуре проекта.

Редакторы кода

Из наиболее популярных редакторов кода на сегодня можно выделить три:

  • Sublime Text (http://www.sublimetext.com/3)
  • Atom (https://atom.io/)
  • Brackets (http://brackets.io/)

От части, все эти редакторы похожи по принципу работы, когда при установке мы получаем редактор, в который затем можем «доставить» необходимые модули и плагины, так сказать, «редакторы на стероидах». Разница лишь в технологиях, которые были использованы при написании редакторов, если Sublime Text написан при помощи C++ и Python, то 2 других используют JavaScript, HTML, CSS (Less). За счёт этой разницы Sublime Text может работать чуть быстрее своих коллег.

Существуют так же более продвинутые IDE (студии) такие, как Web Storm, PHP Storm и пр., но для вёрстки проекта вполне подойдёт редактор кода, а не целая студия (IDE).

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

Обзоры текстовых редакторов:

  • Atom
  • Sublime Text
  • Brackets

Структура проекта

Под структурой проекта понимается хранение файлов проекта в его директории. Часто приходится видеть, когда все файлы «свалены» вместе, названия файлам даны «капсом», цифрами или русскими буквами и пр. Во-первых, это банальное неуважение к тому, кто будет работать с вашим проектом далее, во-вторых, чем больше будет ваш проект, тем больше будет становиться файлов и, в конце концов, вы просто запутаетесь, что к чему относится и что нужно, а что нет.

Лучше всего отдельные категории файлов помещать в свои папки: картинки в папку images или img, css в папку css, javascript в папку js. В корне будет лежать только index.html и страницы сайта, либо только index.html, а страницы в отдельной папке pages. Соблюдая эти правила вы никогда не запутаетесь в проекте.

Так же стоит сказать и об именовании файлов проекта. Чаще всего применяются следующие имена: главная страница – это index.html, стили проекта styles.css, скрипты scripts.js или app.js, минимизированные версии файлов имеют префикс .min, картинки носят не пространные названия на русском языке или набора цифр, а отражают то, что на них изображено, например, button.png, download-icon.png, logo.png и т.д.

Работа над проектом

Итак, определившись с редактором кода, структурой мы можем приступать к разработке. Прежде всего стоит отметить, что вёрстка страницы делается поэтапно: сначала пишется HTML-структура (HTML-код), затем добавляются стили, а после, если необходимо, пишутся скрипты (JS), добавляются необходимые плагины и библиотеки.

Учитывая вышесказанное, мы можем условно разделить работу над проектом на следующие этапы:

  • Написание HTML
  • Написание CSS
  • Написание JS

Написание HTML

Сейчас при написании HTML кода уже смело можно использовать тэги и элементы разметки, которые появились вместе с стандартом HTML5, если вам необходимо поддерживать старые браузеры, то можно использовать, например, плагин html5shiv (https://github.com/afarkas/html5shiv), который обеспечивает поддержку новых стандартов в старых браузерах или библиотеку Modernizr (https://modernizr.com/) (html5shiv входит в сборку Modernizr), которая определяет возможности браузера, с помощью которого просматривается сайт.

При вёрстке сайтов в настоящее время, априори, используется блочный подход, никаких таблиц, iframe’ов и пр. Таблицы выполняют только свою прямую роль – представление информации в виде таблицы. В вёрстке таблицы используются лишь при работе с электронными письмами.

На этапе написания HTML мы, как бы, создаём скелет страницы, её абстрактную модель при помощи тэгов (языка разметки HTML). Стоит отметить, что структуру может быть проще написать, если у нас есть прототип, составленный на первом этапе или же, если мы сами, глядя на дизайн-макет, на бумаге схематично разрисовали себе все блоки страницы.

При написании разметки мы так же сразу можем прописывать элементам классы и идентификаторы.

Правила именования классов

В проекте во всём должен быть порядок: от структуры проекта до имен классов, разметки и написания кода. Если при разметке важно следить за типом информации и размещением её в соответствующих блоках (заголовок, список, ссылка, строчный элемент, параграф и пр.), то при именовании классов и идентификаторов важно соблюдать здравый смысл. Классы должны давать абстрактное понятие о блоке, к которому они относятся, чтобы код было легче читать, а затем и писать стили. В принципе здесь не должно быть ничего сложного, если мы размечаем меню, то логично содержащему блоку дать класс . nav или .navigation, если это блок с текстом, то можно дать ему класс .block-text и т.д.

БЭМ

На сегодняшний день есть один популярный подход, который касается принципов построения проекта в целом, но на данном этапе нас интересует именно именование классов. Подход называется БЭМ и расшифровывается, как Блок Элемент Модификатор.

Вкратце можно описать данный подход, как некое соглашение по именованию классов и представлению разметки страницы. Каждый элемент страницы являет собой сущность, которая может существовать независимо от контекста, тогда мы говорим о Блоке (.block) или же только в контексте другой сущности, тогда мы говорим об Элементе (.block__element). Каждый Блок или Элемент могут иметь различные модели представления: цвет, форму, прозрачность и пр. За подобные свойства будет отвечать Модификатор (.block__element_mod).

Таким образом мы представляем наш код, как композицию блоков, элементов и их модификаций.

Более полная информация о методологии: https://ru.bem.info/

SMACSS

Так же существует подход SMACSS (расшифровывается данный акроним как Scalable and Modular Architecture for CSS – Масштабируемая и Модульная Архитерктура для CSS), который разделяет понятие о классах и разметке на несколько уровней: базовый, макет, модуль, состояние, тема.

  • К базовому уровню будет относиться всё, что касается непосредственно тэгов html.
  • К уровню макета мы будем относить всё, что касается основных составляющих страницы: секции.
  • К уровню модуль мы будем относить всё, что касается переиспользуемых элементов страницы: баннеры, навигация, списки, блоки информации и пр.
  • Уровень Состояние описывает как будут выглядеть модули и секции в том или ином состоянии: отображаются или не отображаются, сжатые или раскрытые, активны или неактивны и пр.
  • Уровень темы чем-то схож с уровнем Состояния и отражает как модули или секции могут выглядеть.

В данном подходе используются следующие соглашения по именованию. Уровни определяются при помощи префиксов и соответствующего буквенного обозначения:

  • Макет: .l- или .layout-
  • Так как модули составляют основную часть проекта именовать их, используя префикс module- избыточно. Поэтому для них используются имена как есть, например: .example {}, .afisha {} и пр.
  • Состояния имеют префикс .is-, например .is-hidden {}
  • Уровень Темы именуется подобно модулям.

При данном подходе часто бывает удобно каждый уровень абстракции и его классы держать в отдельном файле.

Информация о методологии и онлайн книга: https://smacss.com/
Русскоязычный перевод книги по SMACSS: https://github.com/andrew—r/smacss

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

Небольшой курс по основам HTML: Смотреть

Написание CSS

Правила именования классов подводят нас к следующему этапу. Когда написана html структура проекта, определены классы можно переходить к написанию CSS стилей и нарезке макета.

Стоит упомянуть о 2-х CSS файлах-дополнениях: normalize.css и reset.css.

Reset.css

Изначально в проектах повсеместно использовался reset.css, написанный Эриком Мейером. Цель данного свода правил – сбросить стили браузера, которые он по умолчанию использует для отображения элементов разметки. Таким образом при использовании reset.css нам не нужно переписывать стили браузера, по сути мы работаем с «чистым листом» и можем сосредоточиться на написании собственных стилей с нуля.

Normalize.css

Normalize.css наоборот, не сбрасывает все стили «в ноль», а нормализует их, приводит отображение стилей проекта к более-менее однообразию во всех современных браузерах.

У обоих сводов правил есть свои плюсы и минусы, на данный момент популярен normalize.css. Популярность данного свода правил обусловлена ещё и тем, что вам не приходится при разработке заново прописывать основные свойства для базовых элементов страниц, а лишь модифицировать их по необходимости.

Так же стоит упомянуть о, так называемом, «быстром сбросе», когда мы абсолютно для всех элементов страницы с помощью селектора * прописываем свойства {margin: 0; padding: 0}. Таким образом мы сбрасываем все внутренние и внешние отступы для всех элементов страницы. Но данную технику не рекомендуется использовать, так как она замедляет процесс отрисовки страницы, да и по сути имеет мало смыла (на мой взгляд).

Так же стоит отметить, что все размеры и отступы берутся непосредственно из дизайн-макета. Для получения данных значений нам необходимо использовать инструмент «линейка» и направляющие (речь про инcтрументарий Adobe Photoshop), а затем переносить полученные значения в код. Если мы работаем с фиксированным макетом, то значения переносятся в пикселях как есть, если же у нас «резиновый», то значения нужно переводить в проценты. Основная формула – это ширина элемента, делённая на ширину контекста (ширина содержащего блока). Например, если блок, содержащий текст и картинку имеет на макете ширину 400px, а блок с текстом в нём должен иметь ширину 340px, то в процентном выражении это будет (340 / 400) * 100%, то есть 85% будет занимать блок с текстом.

Не стоит перегружать ваши стили чрезмерной специфичностью, например, если мы хотим, чтобы ссылка внутри списка имела красный цвет, то не обязательно записывать всю линейку классов и тэгов: .main –nav ul li a, достаточно просто указать .main-nav a. Слишком «специфичные» правила делают правила контекстно зависимым и заставляют вас писать лишний код, а так же влияют на скорость отрисовки страницы, так как при разборе правил CSS парсер читает их справа налево и ему сначала, если брать описанный выше пример, нужно взять все ссылки (a), затем отбросить все ссылки, которые не лежат в li и т.д. пока он не доберётся до содержащего класса.

Специфичность кода, так же означает чрезмерную привязку к базовым тэгам. Например, если мы хотим, чтобы элемент внутри .block был синим и при разметке использовали элемент span (в правилах мы написали .block span {background-color: blue}), то при замене его на div, например, нам нужно будет написать новое правило уже для div внутри .block. Таким образом наш код будет обрастать ненужными правилами, которые по сути дублируют друг друга. Гораздо проще определить всего лишь один класс (класс элемента), который при присвоении внутренним элементам будет приводить нас к желаемому результату.

Ещё один пример контекстной зависимости кода – это использование имен тэгов вместе с именами классов, например, div.block {display: block}. Если мы захотим тот же класс применить к span, то нам придётся написать опять span.block {display: block} или span.block, div.block {display: block}, что в любом случае приведёт к увеличению кода на лишнюю строчку.

Почему это важно? Во-первых, вы не делаете лишнюю работу, во-вторых, вам не нужно потом среди 10000 строк искать нужное правило и, наконец, чем больше строк кода, тем больше размер файла, а большие по объему файлы медленнее передаются по сети, что в свою очередь может быть причиной долгой загрузки, а излишняя специфичность причиной долгой отрисовки вашей страницы.

Если, вы используете правила, относящиеся к спецификации CSS3, то не поленитесь проверить необходимость использования браузерных префиксов на сайте http://caniuse.com.

Возвращаясь к Mobile First, стоит сказать, что при работе в данной концепции написание стилей стоит начинать с мобильной версии, а затем с помощью медиа запросов добавлять правила, которые будут работать на других разрешениях. Зачастую, при расширении правил от мобильной версии к десктопной, приходится писать гораздо меньше кода, чем при работе наоборот: от десктопной версии к мобильной.

Полезные ссылки и материалы:

  • Книга Сначала мобильные
  • Книга CSS. Рецепты программирования
  • Книга Большая книга CSS3
  • Книга CSS3. Руководство разработчика
  • Небольшой курс по основам CSS: Смотреть

Написание JS

Итак, заключительным этапом является написание JS скриптов. При создании веб страниц стало, практически, стандартом использование библиотеки jQuery, которая позволяет с лёгкостью манипулировать элементами web-страницы (DOM узлами), навешивать прослушку событий, отправлять запросы на сервер, обрабатывать результат выполнения и пр. Но не стоит слепо доверять трендам, на сегодняшний день нативный JavaScript достиг такого уровня, что вам возможно уже не нужен jQuery. Поэтому, прежде чем слепо прикреплять jQuery, стоит задуматься, так ли он нужен для ваших задач и не достаточно ли встроенных возможностей языка JavaScript.

Есть неплохой ресурс, который приводит альтернативы одних и тех же манипуляций на языке JavaScript и с помощью библиотеки jQuery: http://youmightnotneedjquery.com/, так же неплохим подспорьем является сайт https://developer.mozilla.org/ru/, на котором, помимо описания методов и свойств JavaScript, можно найти полифиллы для тех или иных методов (библиотека или часть кода, которая добавляет в старые браузеры поддержку возможностей современных функций и методов JavaScript).

Важно отметить, что не рекомендуется использовать JavaScript для стилизации, то есть не стоит для того или иного объекта DOM (элемента страницы) добавлять портянку CSS свойств с помощью JavaScript, чтобы выделить его состояние и пр. Рекомендуется использовать классы, то есть заранее в CSS определить классы-состояния (активный, не активный, скрытый, использованный и пр.) и при манипуляции элементами просто добавлять или убирать соответствующие классы.

Например, у нас есть элемент списка с классом .list__item, для того, чтобы показать активный элемент в данный момент (выбран пользователем) или нет, можно просто добавить класс (.list__item—active), а не прописывать все стили, присущие этому классу в JS:

document.querySelector(‘.list__item’).style.color = ‘red’;

и т.д.
Небольшой пример с возможными способами присваивания класса (присвоение модификатора происходит при нажатии на зелёный квадрат): http://jsbin.com/.

Не рекомендуется решать задачи, которые явно относятся к уровню CSS с помощью JavaScript, пытаясь как-то выровнять объект или добавить ему стили при наведении и пр.

Опять-таки, возвращаясь к теме Mobile First, нельзя не упомянуть о 2-х концепциях, которые коррелируют с данной техникой. Progressive Enhacement и Graceful Degradation, что переводится как прогрессивное улучшение и последовательное ухудшение. Данные принципы описывают 2 разных подхода к разработке: в первом случае мы разрабатываем наш сайт, пишем скрипты с учётом старых браузеров и систем или же определяем поведение при невозможности запуска скриптов, а затем постепенно улучшаем скрипт, вводя современные функции и методы, таким образом мы получаем сайт, который будет одинаково хорошо работать в старых и новых браузерах и средах (то же касается и css).

При Graceful Degradation подход противоположный – мы разрабатываем для современных браузеров и, лишь, потом начинаем вносить доработки и изменения с учётом старых версий.

Подход Mobile First чем-то схож с Progressive Enhacement.

Проверка кода

После написания html, css и js для нашей страницы необходимо проверить всё ли сделано верно. Для этого можно использовать online средства:

  • Для проверки html: https://validator. w3.org/
  • Для проверки CSS: http://jigsaw.w3.org/css-validator/
  • Для проверки JS: http://www.jslint.com/

Благодаря данным сервисам можно проверить не забыли ли вы где-то закрыть тэг, верно ли используете параметры и атрибуты, всё ли в порядке с вашими стилями и правилами в них, а так же проверить ваш код на правильность написания функций, методов и пр.

Статьи с рекомендациями по написанию JS, HTML и CSS:

  • 10 советов по написанию нативного JavaScript без jQuery
  • Сайт-сборник рекомендаций по JS, HTML и CSS

Средства автоматизации

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

960GS

Мы уже говорили об этом средстве разработки в разделе про модульные сетки и дизайн. Нужно сказать, что 960GS предлагает не только макеты для создания дизайна, но и свою систему именования классов. Используя предлагаемые классы при вёрстке и при подключении css файла системы в проект, блоки сайта будут выстроены по этой сетке, что сэкономит время на написании практически того же самого самостоятельно.

<div>
  <div>
      <div>
          ...
      </div>
      <div>
          ...
      </div>
      <div>
          ...
      </div>
  </div>
  <div>
      ...
  </div>
</div>

Emmet

Emmet – это средство работы с html и css (http://emmet.io/). Плагин для работы с данным средством можно установить, например, в Sublime Text, тогда у вас появляется возможность не писать громоздкие куски кода на html и css, а записывать их в строчку, раскрывая затем в полноценную разметку. Например, строка .block>ul.list>li.list__item*3, может быть раскрыта в полноценный код:

<div>
  <ul>
    <li></li>
    <li></li>
    <li></li>
  </ul>
</div>

Затем вам просто необходимо вписать текстовые значения в элементы списка. То же касается и css: строка w:100px+h:150px+bgc:#ff0 раскрывается в:

width: 100px;
height: 150px;
background-color: #ff0;

Благодаря данным средствам писать код становится быстрее и приятнее, так как вы меньше времени тратите на написания закрывающих блоков, переходам по строчкам, а так же уменьшается возможность, касательно html, не закрыть тот или иной элемент разметки. В плане CSS, например, становится легче работать с браузерными префиксами, так как одна строчка с CSS3 свойством может быть раскрыта в несколько с добавлением необходимых префиксов.

Jade

Далее стоит упомянуть и о таком языке работе с шаблонами, как jade (http://jade-lang.com/). Опять-таки, с помощью jade писать html становится быстрее и удобнее, а так же появляется возможность создания переиспользуемых блоков кода и миксинов, передавая которым на вход те или иные параметры мы будет получать нужную нам разметку. Благодаря jade в проекте, касательно разметки и написания страниц, может поддерживаться модульность, а часто используемые названия и блоки кода могут выноситься в качестве переменных (названия, имена страниц и пр.) или миксинов в отдельные файлы настроек и файлы, соответственно. Для работы с jade, а точнее для преобразования написанного кода из jade в html, необходимо использовать командную строку, а так же установить на ваш компьютер платформу nodejs (https://nodejs.org/en/, http://nodejs.ru/).

Командная строка

Работа в командной строке так же может ускорить некоторые этапы работы над проектом, например, создание папок и файлов. Запустив консоль в директории проекта и набрав в ней всего лишь одну строку:

mkdir project && cd project && mkdir css && touch css/styles.css && mkdir images && mkdir js && touch js/app.js && touch index.html

После нажатия enter мы получим папку project в которой будут находиться папки css, images, js, в папках css и js файлы styles. css и app.js, соответственно, а в корне project лежать файл index.html. Таким образом мы сэкономили время на создание папки, написание её названия, создание файлов и пр. Так же командная строка используется для работы с остальными средствами автоматизации.

Sass

Далее стоит поговорить о таком языке как Sass (http://sass-lang.com/). Данный язык упрощает работу с css. Благодаря Sass можно записывать вложенные классы, проводить математические вычисления прямо в коде, выносить переиспользуемые величины в качестве переменных в отдельные файлы или в начало файла, что в значительной степени упрощает дальнейшую работу со стилями и упрощает изменение тех или иных величин, так как они все будут храниться в одном месте и не нужно будет «ходить» по всему проекту и вносить соответствующие правки. Так же, благодаря Sass в проекте можно придерживаться принципа модульности, храня части разметки в соответствующих файлах и подключать их все в основной, затем с помощью консольной команды можно собрать весь код в один css файл, так же поддерживается сборка результирующего файла на лету по мере написания стилей. Опять-таки для работы с Sass потребуется командная строка. Процесс установки пакета можно изучить здесь: http://sass-lang.com/install.

HTML5Boilerplate

HTML5Boilerplate (https://html5boilerplate.com/) представляет собой заранее скомпонованный проект, в котором уже есть index.html, normalize.css и пр. В index.html, например, уже заранее прописаны основные куски кода, которые необходимы при написании html страницы. Проект позволяет скачать архив со всеми файлами как есть или же использовать кастомную сборку: http://www.initializr.com/. Опять-таки, принцип прост: зачем тратить время на написание одних и тех же строк или на проделывание одних и тех же манипуляций, если мы сразу можем сосредоточиться непосредственно на работе с проектом.

Gulp и Grunt

Gulp (http://gulpjs.com/) и Grunt (http://gruntjs.com/) представляют собой сервисы запуска задач, которые описываются в основных файлах данных сервисов, выполняются с помощью совместимых модулей и запускаются на выполнение с помощью консоли.

Данные сервисы помогают использовать в разработке, например, вышеописанные средства Jade и Sass, автоматически преобразовывать их в соответствующие файлы html и css, сжимать их, если необходимо, а так же проверять, например css свойства, на необходимость использования браузерных префиксов и подставлять их в автоматическом режиме.

Оба сервиса используют различный подход в описании выполнения задач, но суть их работы одинакова. Полезным будет данное сравнение: http://frontender.info/gulp-grunt-whatever/

Так же многие сервисы вроде autoprefixer (автоматическая простановка браузерных префиксов), jshint (проверка JS кода на валидность) могут быть установлены как сторонние плагины в текстовом редакторе (Sumblime Text, Atom, Brackets) и инициализированы при нажатии определённого сочетания клавиш.

Bootrstrap, Foundation, Material Design Lite

Данные фрэймворки уже упоминались в разделе про дизайн. Но стоит опять вспомнить о них, так как они, в определённой степени, помогают автоматизировать процесс разметки веб-страницы и работы с ней.

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

Со всеми возможностями и примерами можно ознакомиться на соответствующих сайтах:

  • Bootstrap: http://getbootstrap.com/
  • Foundation: http://foundation.zurb.com/
  • Material Design Lite: http://www.getmdl.io/

Данное описание не является исчерпывающим и представляет собой лишь поверхностный взгляд на некоторые технологии. Но прежде чем пускаться во все тяжкие, используя средства автоматизации, библиотеки, framework’и, готовый код и прочее, стоит, всё-таки, изучить основы работы с html, css и js.

Надеюсь, что все описанные вещи будут полезны вам в изучении темы веб-дизайна и фронтенд разработки.

Создание веб-сайта. Курс молодого бойца / Хабр

Как-то меня попросили провести небольшой семинар в лицее, где я когда-то учился, по созданию веб-сайта. В процессе написания речи я подумал, что она может вылиться в материал, который, возможно, будет полезен многим начинающим в области веб-дизайна, вёрстки веб-страниц и пр. Я не претендую на истину в первой инстанции и всё изложенное носит чисто личностный взгляд на работу с дизайном и кодом. Статья даёт поверхностный взгляд на понятия и средства, которые, на мой взгляд, могут стать неплохим стартом для того, кто готов идти дальше.

Условно процесс создания сайта (web-проекта) можно разделить на 3 этапа:

  • Планирование
  • Дизайн
  • Разработка

Данный этап можно разделить на несколько подэтапов:

  • Создание идеи
  • Разработка структуры проекта
  • Проработка макета проекта

Создание идеи

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

Разработка структуры проекта

Когда мы определились с темой проекта, подобрали необходимый материал, следующим этапом будет разработка структуры проекта. Структура проекта подразумевает под собой разделы сайта, в соответствии с которыми будет формироваться навигационное меню и строиться дизайн проекта. На данном этапе можно классифицировать материал по темам и разделам.

Проработка макета проекта

После того, как мы определились со структурой проекта можно составить макет проекта (схематично).

Для отрисовки наброска можно использовать бумагу и ручку, Photoshop, любой другой редактор графики (раньше часто использовали Adobe Fireworks). Важно отметить, что данный этап – это не отрисовка готового дизайн-макета, а всего лишь схематичный набросок, выполненный для понимания того, как на сайте будут располагаться основные информационные блоки, графика и прочие элементы дизайна.

Основные элементы страницы

Зачастую основными элементами страницы являются: содержащий блок (wrapper, container), логотип, навигация, контент, футер (нижний колонтитул), свободное пространство (по сути свободное пространство — это не элемент дизайна, но понятие, помня о котором при составлении макета страницы, наш проект не будет выглядеть как нагромождение блоков).

Содержащий блок (контейнер)

Роль контейнера на странице может выполнять непосредственно элемент body или же div. Ширина содержащего блока может быть резиновой (fluid), а может быть фиксированной (fixed).

Логотип

Текстовая или графическая составляющая проекта и выделяющая его среди других. Логотип чаще всего располагается в верхнем левом углу страницы или же посередине (в зависимости от идеи, макета).

Навигация

Основная навигационная панель содержит ссылки на основные разделы сайта. Навигационная панель часто располагается в верхней части страницы (в независимости от того вертикально или горизонтально располагаются элементы навигации).

Контент

Контент – это основная составляющая веб-страницы. Он занимает главенствующую роль в дизайне страницы, поэтому занимает большее пространство, подкреплён, помимо текста, графикой.

Нижний колонтитул (footer)

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

Резиновый и фиксированный макет


Фиксированный макет

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

Резиновый макет

«Резиновый» макет подразумевает, что страница сайта будет стараться занять всё доступное ей пространство на экране пользователя, подстраиваясь под разрешение.

В данном контексте стоит уяснить такие понятия, как отзывчивый веб-дизайн (Responsive Web Design aka. RWD) и адаптивный веб-дизайн (Adaptive Web Desing aka. AWD). Первое понятие укладывается в концепцию «резинового» и означает, что при изменении размера экрана ваш сайт подстраивается под него, второе понятие подразумевает, что при разработке вы определяете основные разрешения (размеры экрана), под которые будет подстраиваться (адаптироваться) ваш контент. В обоих случаях следует разрабатывать не один, а несколько макетов, которые будут соответствовать разным разрешениям экрана. Часто создаётся 3 макета под разрешения iPhone (Android Phone), iPad (Android Tablet) и Desktop.

На данном изображении показаны оба подхода. Сверху блок «отзывается» на любые изменения размера контейнера, снизу «адаптируется» под определённую ширину

Полезные ссылки по теме:

  • Пример сайта, использующего концепцию адаптивного веб-дизайна
  • Статья, в которой разбирается данная концепция (eng. )
  • Книга об отзывчивом веб-дизайне

Почему при «резиновом» дизайне создаётся несколько макетов, а не используется один?

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

Модульная сетка

Перед составлением схемы проекта так же необходимо уяснить понятие модульной сетки. Модульная сетка подразумевает под собой разделение страницы на отдельные колонки по вертикали и выстраивание контента, при разработке дизайн макета, именно по этой сетке.

Наиболее популярной системой является модульная сетка 960 Grid System (http://960.gs), которая максимально делит страницу на 12, 16 и 24 колонки. Максимум в ширине сетка имеет 960 пикселей. Данное решение основано на том, что большинство современных мониторов, на момент создания сетки, имели разрешение не меньше 1024 на 768 пикселей. Создание макета на основе данной сетки, в дальнейшем, поможет ускорить процесс разработки (вёрстки).

Так же стоит отметить, что при разработке «резинового» макета страницы существует понятие максимальной ширины. Данное утверждение основывается на удобстве восприятия информации. Если предположить, что наш сайт не имеет максимального значения по ширине, то на больших мониторах информация будет сильно растягиваться и её неудобно будет читать. Чаще всего ограничиваются шириной в 1280 пикселей.

Модульная сетка 960GS отвечает концепции «фиксированного» дизайна, для «резинового» дизайна можно обратить внимание на адаптацию этой же сетки на сайте http://www.designinfluences.com/fluid960gs/ или воспользоваться сеткой, которую предлагает фрэймворк Bootstrap (http://getbootstrap.com/css/#grid).

Благодаря модульной сетке блоки контента и элементы будут располагаться на определённом расстоянии друг от друга, будут иметь удобоваримую ширину, что в дальнейшем визуально будет приятно пользователю и не будет вызывать у него какие-либо неудобства в восприятии сайта.

Модульная сетка, по сути, – это некая визуальная абстракция, визуальное деление страницы на равные по ширине столбцы с равными отступами между ними. Визуализировать данную модель можно посредствам направляющих или отдельного слоя, на котором будут изображены эти столбцы. Именно такое решение вы найдёте в шаблонах сетки 960gs.

Полезные ссылки и материалы:

  • Паттерны адаптивной сетки
  • Создание прототипа на основе 960gs (eng.)
  • Использование сетки 960gs как основы для дизайна (eng.)

Макеты веб-страниц

Среди всего многообразия составления макета веб-страницы можно выделить четыре наиболее распространённых:

  • Навигация в левом столбце

  • Навигация в правом столбце

  • Навигация в трёх столбцах

  • Горизонтальная навигация. На данном этапе сайты с таким типом навигации составляют большинство. Удобство такого подхода легко объяснить тем, что в данном случае у нас остаётся больше пространства для контента, составляющего наш сайт.

Но данный список типов макетов нельзя назвать исчерпывающим, поэтому перед разработкой макета и дизайна страницы так же можно погулять по различным сайтам с примерами других работ, а так же по сайтам схожей с вашей тематикой:

  • http://unmatchedstyle.com/gallery
  • http://cssdrive.com
  • http://foundation.zurb.com/templates.html
  • http://zurb.com/patterntap

На первых двух сайтах можно посмотреть какие цвета использовались в дизайне.

Mobile First

С учётом тенденций последних лет данный подход плотно занимает свою нишу в разработке и дизайне сайтов. Тенденция такова, что практически около 60% пользователей интернета используют для доступа в сеть мобильные устройства, поэтому правилом хорошего тона становится разработка не только десктопной версии сайта, но и мобильной версии. При использовании данного подхода разработка макета сайта, дизайна и вёрстки начинается с мобильной версии, а затем уже прорабатываются макеты для других разрешений: добавляются блоки, баннеры, дополнительные элементы дизайна и пр.

Данный подход учитывает практически весь цикл разработки, поэтому мы ещё к нему вернёмся.

Усвоив всё вышесказанное можно переходить к следующему этапу – Дизайн.

После создания макета проекта можно переходить непосредственно к созданию дизайн-макета. На данном этапе начать стоит с определения цветовой гаммы проекта.

Один из способов определения основного цвета в проекте – это составление mood board. Для этого необходимо выписать себе все синонимы, связанные с темой проекта, а затем каждый синоним набрать в поиске по картинкам Google или Yandex. На основе найденных изображений выписать себе цвета, которые чаще всего встречаются на них (каких цветов больше). Найденные цвета будут составлять визуальное восприятие нашего проекта и вызывать у пользователя соответствующие чувства.

Для работы с выбранным цветом и составлением палитры цветов нашего сайта можно использовать следующие инструменты:

  • Color Scheme Designer 3 (http://colorschemedesigner.com/csd-3.5/). Помимо выбора цветовой схемы данный сервис позволяет посмотреть пример того, как выбранные цвета будут смотреться на сайте

  • Adobe Color CC (https://color.adobe.com/ru/). Данный ресурс, в отличие от Color Scheme Designer 3, позволяет создавать палитры ещё и на основе загруженных изображений (которые, например, могли появиться у нас на этапе составления mood board). Так же данный сервис обладает большим архивом палитр других пользователей.

  • COLORlovers (http://www.colourlovers.com/). Обширное сообщество, где можно подобрать различные палитры.

Важно отметить, что при подборе цветов для палитры всегда стоит выбирать как минимум 2 контрастирующих цвета. Достижение нужного контраста между цветами – необходимое условие для того, чтобы у вас получился хороший интерактивный дизайн.

При работе над дизайном главной и внутренних страниц стоит помнить о некоторых основных принципах.

Элементы Call to Action

Понятие призыва к действию относится к интерактивным элементам сайта: кнопки, баннеры и пр. Данные элементы оформляются таким образом, что пользователю должно хотеться непременно на них нажать. Например, это может быть кнопка с призывом к действию (Нажми, Купи, Сэкономь), яркий баннер с заманчивым предложением, яркой картинкой и пр.

Данное понятие хорошо вписывается в принцип AIDA (Attraction Interest Desire Action).

AIDA

Данное понятие применяется чаще при дизайне главных страниц, страниц акций и пр., где необходимо подтолкнуть пользователя к тому или иному действию: подписка, покупка и пр. Если перевести данный акроним на русский, то мы получим следующие понятия:

  • Привлечение внимания
  • Интерес
  • Желание
  • Действие

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

Но и данный принцип не работает сам по себе без некоторых других: схема просмотра страницы (наиболее, естественный путь движения глаз по странице), визуальные направляющие.

Схема просмотра страницы

Довольно часто встречается Z-схема просмотра страницы. В соответствии с этим элементы страницы обычно располагают следующим образом: логотип слева вверху, меню справа вверху, информационные блоки, картинки слева внизу, кнопка с призывом к действию справа внизу.

Визуальные направляющие

Визуальными направляющими называют декоративные элементы страницы, которые перенаправляют взгляд пользователя на те или иные элементы дизайна, формы, кнопки и пр. В качестве визуальных направляющих могут выступать стрелка, направление взгляда человека на изображении, направление указательного пальца, в общем всё, что может как-то указывать в ту или иную сторону.

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

Тот же эффект продемонстрирован на втором изображении с наложенной тепловой картой: в первом случае нас привлекает в основном прямой взгляд ребенка (прямо в глаза), во втором случае направление взгляда ребенка и его поза невольно обращают взгляд пользователя на блок справа.

Фрэймворки

Стоит так же отметить, что иногда, при разработке дизайна страницы, используют фрэймворки Bootstrap, Foundation, Material Design Lite, которые, помимо готовых элементов дизайна (кнопки, формы ввода и пр.), предлагают свою модульную сетку, CSS сниппеты (часть кода, разметки, которая может неоднократно использоваться) для вставки элементов в страницу (тех же кнопок, элементов форм и пр.) и классы разметки, а так же JS скрипты для соответствующих интерактивных элементов.

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


Готовые элементы дизайна из Bootstrap, Foundation и Material Design Lite (MDL)

Трэнды

Нельзя не упомянуть о некоторых наметившихся трендах последнего времени в качестве компоновки и дизайна страниц.

Во-первых, стоит упомянуть о так называемых лэндинговых страницах, которые подразумевают под собой длинную страницу, разделённую на соответствующие секции и знакомящие пользователя с основным контентом сайта. Часто лэндинг является единственной страницей, на которой сразу удаётся показать всю необходимую информацию, не заставляя пользователя переходить по страницам. Лэндингам обычно сопутствует хороший дизайн, выверенная и продуманная подача информации, элементы call-to-action, интерактивность (счётчики, анимация и пр.).

Стоит так же сказать о внешнем виде страниц и вспомнить такие понятия как скевоморфизм и плоский дизайн.

Скевоморфизм

Скевоморфизм уже продолжительное время уступает свои позиции плоскому дизайну. Данное понятие означает наделение интерактивных элементов качествами реальных. Например, оформление страницы с книгами в виде книжной полки, оформление кнопки на подобии настоящей с соответствующей имитацией нажатия, использование реальных текстур и пр. Данный принцип активно использовался при создании страниц буквально пару лет назад, но затем тенденции сменились и на первый план вышел плоский дизайн (Flat, Material).

Плоский дизайн

Плоский дизайн использует минимум текстур и оформление, создание дизайна базируется на понятиях контраста, соотношения цветов и размеров.

Не маловажную роль на тренды в веб-дизайне оказало развитие мобильных операционных систем. Чаще всего двигателем прогресса становятся решения от компании Apple, которая в своих дизайн-решениях iOS сначала использовала имитацию реальных объектов, а затем всё упростила до плоского дизайна (Flat UI). Сейчас в вебе главенствует Flat дизайн и Material дизайн, который активно развивает Google.

Неплохой сайт-сравнение двух концепций: http://www.flatvsrealism.com/

По основам веб-дизайна и прототипированию неплохим подспорьем может стать данная книга: Джейсон Берд: Веб-дизайн. Руководство разработчика.

Итак, процесс дизайна макета страницы плавно перетекает в процесс «оживления» сделанного на предыдущих этапах. Прежде чем сразу начинать писать HTML, CSS и JS стоит немного поговорить о редакторах кода и структуре проекта.

Редакторы кода

Из наиболее популярных редакторов кода на сегодня можно выделить три:

  • Sublime Text (http://www.sublimetext.com/3)
  • Atom (https://atom.io/)
  • Brackets (http://brackets.io/)

От части, все эти редакторы похожи по принципу работы, когда при установке мы получаем редактор, в который затем можем «доставить» необходимые модули и плагины, так сказать, «редакторы на стероидах». Разница лишь в технологиях, которые были использованы при написании редакторов, если Sublime Text написан при помощи C++ и Python, то 2 других используют JavaScript, HTML, CSS (Less). За счёт этой разницы Sublime Text может работать чуть быстрее своих коллег.

Существуют так же более продвинутые IDE (студии) такие, как Web Storm, PHP Storm и пр., но для вёрстки проекта вполне подойдёт редактор кода, а не целая студия (IDE).

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

Обзоры текстовых редакторов:

  • Atom
  • Sublime Text
  • Brackets

Структура проекта

Под структурой проекта понимается хранение файлов проекта в его директории. Часто приходится видеть, когда все файлы «свалены» вместе, названия файлам даны «капсом», цифрами или русскими буквами и пр. Во-первых, это банальное неуважение к тому, кто будет работать с вашим проектом далее, во-вторых, чем больше будет ваш проект, тем больше будет становиться файлов и, в конце концов, вы просто запутаетесь, что к чему относится и что нужно, а что нет.

Лучше всего отдельные категории файлов помещать в свои папки: картинки в папку images или img, css в папку css, javascript в папку js. В корне будет лежать только index.html и страницы сайта, либо только index.html, а страницы в отдельной папке pages. Соблюдая эти правила вы никогда не запутаетесь в проекте.

Так же стоит сказать и об именовании файлов проекта. Чаще всего применяются следующие имена: главная страница – это index.html, стили проекта styles.css, скрипты scripts.js или app.js, минимизированные версии файлов имеют префикс .min, картинки носят не пространные названия на русском языке или набора цифр, а отражают то, что на них изображено, например, button.png, download-icon.png, logo.png и т.д.

Работа над проектом

Итак, определившись с редактором кода, структурой мы можем приступать к разработке. Прежде всего стоит отметить, что вёрстка страницы делается поэтапно: сначала пишется HTML-структура (HTML-код), затем добавляются стили, а после, если необходимо, пишутся скрипты (JS), добавляются необходимые плагины и библиотеки.

Учитывая вышесказанное, мы можем условно разделить работу над проектом на следующие этапы:

  • Написание HTML
  • Написание CSS
  • Написание JS

Написание HTML

Сейчас при написании HTML кода уже смело можно использовать тэги и элементы разметки, которые появились вместе с стандартом HTML5, если вам необходимо поддерживать старые браузеры, то можно использовать, например, плагин html5shiv (https://github.com/afarkas/html5shiv), который обеспечивает поддержку новых стандартов в старых браузерах или библиотеку Modernizr (https://modernizr.com/) (html5shiv входит в сборку Modernizr), которая определяет возможности браузера, с помощью которого просматривается сайт.

При вёрстке сайтов в настоящее время, априори, используется блочный подход, никаких таблиц, iframe’ов и пр. Таблицы выполняют только свою прямую роль – представление информации в виде таблицы. В вёрстке таблицы используются лишь при работе с электронными письмами.

На этапе написания HTML мы, как бы, создаём скелет страницы, её абстрактную модель при помощи тэгов (языка разметки HTML). Стоит отметить, что структуру может быть проще написать, если у нас есть прототип, составленный на первом этапе или же, если мы сами, глядя на дизайн-макет, на бумаге схематично разрисовали себе все блоки страницы.

При написании разметки мы так же сразу можем прописывать элементам классы и идентификаторы.

Правила именования классов

В проекте во всём должен быть порядок: от структуры проекта до имен классов, разметки и написания кода. Если при разметке важно следить за типом информации и размещением её в соответствующих блоках (заголовок, список, ссылка, строчный элемент, параграф и пр.), то при именовании классов и идентификаторов важно соблюдать здравый смысл. Классы должны давать абстрактное понятие о блоке, к которому они относятся, чтобы код было легче читать, а затем и писать стили. В принципе здесь не должно быть ничего сложного, если мы размечаем меню, то логично содержащему блоку дать класс . nav или .navigation, если это блок с текстом, то можно дать ему класс .block-text и т.д.

БЭМ

На сегодняшний день есть один популярный подход, который касается принципов построения проекта в целом, но на данном этапе нас интересует именно именование классов. Подход называется БЭМ и расшифровывается, как Блок Элемент Модификатор.

Вкратце можно описать данный подход, как некое соглашение по именованию классов и представлению разметки страницы. Каждый элемент страницы являет собой сущность, которая может существовать независимо от контекста, тогда мы говорим о Блоке (.block) или же только в контексте другой сущности, тогда мы говорим об Элементе (.block__element). Каждый Блок или Элемент могут иметь различные модели представления: цвет, форму, прозрачность и пр. За подобные свойства будет отвечать Модификатор (.block__element_mod).

Таким образом мы представляем наш код, как композицию блоков, элементов и их модификаций.

Более полная информация о методологии: https://ru.bem.info/

SMACSS

Так же существует подход SMACSS (расшифровывается данный акроним как Scalable and Modular Architecture for CSS – Масштабируемая и Модульная Архитерктура для CSS), который разделяет понятие о классах и разметке на несколько уровней: базовый, макет, модуль, состояние, тема.

  • К базовому уровню будет относиться всё, что касается непосредственно тэгов html.
  • К уровню макета мы будем относить всё, что касается основных составляющих страницы: секции.
  • К уровню модуль мы будем относить всё, что касается переиспользуемых элементов страницы: баннеры, навигация, списки, блоки информации и пр.
  • Уровень Состояние описывает как будут выглядеть модули и секции в том или ином состоянии: отображаются или не отображаются, сжатые или раскрытые, активны или неактивны и пр.
  • Уровень темы чем-то схож с уровнем Состояния и отражает как модули или секции могут выглядеть.

В данном подходе используются следующие соглашения по именованию. Уровни определяются при помощи префиксов и соответствующего буквенного обозначения:

  • Макет: .l- или .layout-
  • Так как модули составляют основную часть проекта именовать их, используя префикс module- избыточно. Поэтому для них используются имена как есть, например: .example {}, .afisha {} и пр.
  • Состояния имеют префикс .is-, например .is-hidden {}
  • Уровень Темы именуется подобно модулям.

При данном подходе часто бывает удобно каждый уровень абстракции и его классы держать в отдельном файле.

Информация о методологии и онлайн книга: https://smacss.com/
Русскоязычный перевод книги по SMACSS: https://github.com/andrew—r/smacss

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

Небольшой курс по основам HTML: Смотреть

Написание CSS

Правила именования классов подводят нас к следующему этапу. Когда написана html структура проекта, определены классы можно переходить к написанию CSS стилей и нарезке макета.

Стоит упомянуть о 2-х CSS файлах-дополнениях: normalize.css и reset.css.

Reset.css

Изначально в проектах повсеместно использовался reset.css, написанный Эриком Мейером. Цель данного свода правил – сбросить стили браузера, которые он по умолчанию использует для отображения элементов разметки. Таким образом при использовании reset.css нам не нужно переписывать стили браузера, по сути мы работаем с «чистым листом» и можем сосредоточиться на написании собственных стилей с нуля.

Normalize.css

Normalize.css наоборот, не сбрасывает все стили «в ноль», а нормализует их, приводит отображение стилей проекта к более-менее однообразию во всех современных браузерах.

У обоих сводов правил есть свои плюсы и минусы, на данный момент популярен normalize.css. Популярность данного свода правил обусловлена ещё и тем, что вам не приходится при разработке заново прописывать основные свойства для базовых элементов страниц, а лишь модифицировать их по необходимости.

Так же стоит упомянуть о, так называемом, «быстром сбросе», когда мы абсолютно для всех элементов страницы с помощью селектора * прописываем свойства {margin: 0; padding: 0}. Таким образом мы сбрасываем все внутренние и внешние отступы для всех элементов страницы. Но данную технику не рекомендуется использовать, так как она замедляет процесс отрисовки страницы, да и по сути имеет мало смыла (на мой взгляд).

Так же стоит отметить, что все размеры и отступы берутся непосредственно из дизайн-макета. Для получения данных значений нам необходимо использовать инструмент «линейка» и направляющие (речь про инcтрументарий Adobe Photoshop), а затем переносить полученные значения в код. Если мы работаем с фиксированным макетом, то значения переносятся в пикселях как есть, если же у нас «резиновый», то значения нужно переводить в проценты. Основная формула – это ширина элемента, делённая на ширину контекста (ширина содержащего блока). Например, если блок, содержащий текст и картинку имеет на макете ширину 400px, а блок с текстом в нём должен иметь ширину 340px, то в процентном выражении это будет (340 / 400) * 100%, то есть 85% будет занимать блок с текстом.

Не стоит перегружать ваши стили чрезмерной специфичностью, например, если мы хотим, чтобы ссылка внутри списка имела красный цвет, то не обязательно записывать всю линейку классов и тэгов: .main –nav ul li a, достаточно просто указать .main-nav a. Слишком «специфичные» правила делают правила контекстно зависимым и заставляют вас писать лишний код, а так же влияют на скорость отрисовки страницы, так как при разборе правил CSS парсер читает их справа налево и ему сначала, если брать описанный выше пример, нужно взять все ссылки (a), затем отбросить все ссылки, которые не лежат в li и т.д. пока он не доберётся до содержащего класса.

Специфичность кода, так же означает чрезмерную привязку к базовым тэгам. Например, если мы хотим, чтобы элемент внутри .block был синим и при разметке использовали элемент span (в правилах мы написали .block span {background-color: blue}), то при замене его на div, например, нам нужно будет написать новое правило уже для div внутри .block. Таким образом наш код будет обрастать ненужными правилами, которые по сути дублируют друг друга. Гораздо проще определить всего лишь один класс (класс элемента), который при присвоении внутренним элементам будет приводить нас к желаемому результату.

Ещё один пример контекстной зависимости кода – это использование имен тэгов вместе с именами классов, например, div.block {display: block}. Если мы захотим тот же класс применить к span, то нам придётся написать опять span.block {display: block} или span.block, div.block {display: block}, что в любом случае приведёт к увеличению кода на лишнюю строчку.

Почему это важно? Во-первых, вы не делаете лишнюю работу, во-вторых, вам не нужно потом среди 10000 строк искать нужное правило и, наконец, чем больше строк кода, тем больше размер файла, а большие по объему файлы медленнее передаются по сети, что в свою очередь может быть причиной долгой загрузки, а излишняя специфичность причиной долгой отрисовки вашей страницы.

Если, вы используете правила, относящиеся к спецификации CSS3, то не поленитесь проверить необходимость использования браузерных префиксов на сайте http://caniuse.com.

Возвращаясь к Mobile First, стоит сказать, что при работе в данной концепции написание стилей стоит начинать с мобильной версии, а затем с помощью медиа запросов добавлять правила, которые будут работать на других разрешениях. Зачастую, при расширении правил от мобильной версии к десктопной, приходится писать гораздо меньше кода, чем при работе наоборот: от десктопной версии к мобильной.

Полезные ссылки и материалы:

  • Книга Сначала мобильные
  • Книга CSS. Рецепты программирования
  • Книга Большая книга CSS3
  • Книга CSS3. Руководство разработчика
  • Небольшой курс по основам CSS: Смотреть

Написание JS

Итак, заключительным этапом является написание JS скриптов. При создании веб страниц стало, практически, стандартом использование библиотеки jQuery, которая позволяет с лёгкостью манипулировать элементами web-страницы (DOM узлами), навешивать прослушку событий, отправлять запросы на сервер, обрабатывать результат выполнения и пр. Но не стоит слепо доверять трендам, на сегодняшний день нативный JavaScript достиг такого уровня, что вам возможно уже не нужен jQuery. Поэтому, прежде чем слепо прикреплять jQuery, стоит задуматься, так ли он нужен для ваших задач и не достаточно ли встроенных возможностей языка JavaScript.

Есть неплохой ресурс, который приводит альтернативы одних и тех же манипуляций на языке JavaScript и с помощью библиотеки jQuery: http://youmightnotneedjquery.com/, так же неплохим подспорьем является сайт https://developer.mozilla.org/ru/, на котором, помимо описания методов и свойств JavaScript, можно найти полифиллы для тех или иных методов (библиотека или часть кода, которая добавляет в старые браузеры поддержку возможностей современных функций и методов JavaScript).

Важно отметить, что не рекомендуется использовать JavaScript для стилизации, то есть не стоит для того или иного объекта DOM (элемента страницы) добавлять портянку CSS свойств с помощью JavaScript, чтобы выделить его состояние и пр. Рекомендуется использовать классы, то есть заранее в CSS определить классы-состояния (активный, не активный, скрытый, использованный и пр.) и при манипуляции элементами просто добавлять или убирать соответствующие классы.

Например, у нас есть элемент списка с классом .list__item, для того, чтобы показать активный элемент в данный момент (выбран пользователем) или нет, можно просто добавить класс (.list__item—active), а не прописывать все стили, присущие этому классу в JS:

document.querySelector(‘.list__item’).style.color = ‘red’;

и т.д.
Небольшой пример с возможными способами присваивания класса (присвоение модификатора происходит при нажатии на зелёный квадрат): http://jsbin.com/.

Не рекомендуется решать задачи, которые явно относятся к уровню CSS с помощью JavaScript, пытаясь как-то выровнять объект или добавить ему стили при наведении и пр.

Опять-таки, возвращаясь к теме Mobile First, нельзя не упомянуть о 2-х концепциях, которые коррелируют с данной техникой. Progressive Enhacement и Graceful Degradation, что переводится как прогрессивное улучшение и последовательное ухудшение. Данные принципы описывают 2 разных подхода к разработке: в первом случае мы разрабатываем наш сайт, пишем скрипты с учётом старых браузеров и систем или же определяем поведение при невозможности запуска скриптов, а затем постепенно улучшаем скрипт, вводя современные функции и методы, таким образом мы получаем сайт, который будет одинаково хорошо работать в старых и новых браузерах и средах (то же касается и css).

При Graceful Degradation подход противоположный – мы разрабатываем для современных браузеров и, лишь, потом начинаем вносить доработки и изменения с учётом старых версий.

Подход Mobile First чем-то схож с Progressive Enhacement.

Проверка кода

После написания html, css и js для нашей страницы необходимо проверить всё ли сделано верно. Для этого можно использовать online средства:

  • Для проверки html: https://validator. w3.org/
  • Для проверки CSS: http://jigsaw.w3.org/css-validator/
  • Для проверки JS: http://www.jslint.com/

Благодаря данным сервисам можно проверить не забыли ли вы где-то закрыть тэг, верно ли используете параметры и атрибуты, всё ли в порядке с вашими стилями и правилами в них, а так же проверить ваш код на правильность написания функций, методов и пр.

Статьи с рекомендациями по написанию JS, HTML и CSS:

  • 10 советов по написанию нативного JavaScript без jQuery
  • Сайт-сборник рекомендаций по JS, HTML и CSS

Средства автоматизации

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

960GS

Мы уже говорили об этом средстве разработки в разделе про модульные сетки и дизайн. Нужно сказать, что 960GS предлагает не только макеты для создания дизайна, но и свою систему именования классов. Используя предлагаемые классы при вёрстке и при подключении css файла системы в проект, блоки сайта будут выстроены по этой сетке, что сэкономит время на написании практически того же самого самостоятельно.

<div>
  <div>
      <div>
          ...
      </div>
      <div>
          ...
      </div>
      <div>
          ...
      </div>
  </div>
  <div>
      ...
  </div>
</div>

Emmet

Emmet – это средство работы с html и css (http://emmet.io/). Плагин для работы с данным средством можно установить, например, в Sublime Text, тогда у вас появляется возможность не писать громоздкие куски кода на html и css, а записывать их в строчку, раскрывая затем в полноценную разметку. Например, строка .block>ul.list>li.list__item*3, может быть раскрыта в полноценный код:

<div>
  <ul>
    <li></li>
    <li></li>
    <li></li>
  </ul>
</div>

Затем вам просто необходимо вписать текстовые значения в элементы списка. То же касается и css: строка w:100px+h:150px+bgc:#ff0 раскрывается в:

width: 100px;
height: 150px;
background-color: #ff0;

Благодаря данным средствам писать код становится быстрее и приятнее, так как вы меньше времени тратите на написания закрывающих блоков, переходам по строчкам, а так же уменьшается возможность, касательно html, не закрыть тот или иной элемент разметки. В плане CSS, например, становится легче работать с браузерными префиксами, так как одна строчка с CSS3 свойством может быть раскрыта в несколько с добавлением необходимых префиксов.

Jade

Далее стоит упомянуть и о таком языке работе с шаблонами, как jade (http://jade-lang.com/). Опять-таки, с помощью jade писать html становится быстрее и удобнее, а так же появляется возможность создания переиспользуемых блоков кода и миксинов, передавая которым на вход те или иные параметры мы будет получать нужную нам разметку. Благодаря jade в проекте, касательно разметки и написания страниц, может поддерживаться модульность, а часто используемые названия и блоки кода могут выноситься в качестве переменных (названия, имена страниц и пр.) или миксинов в отдельные файлы настроек и файлы, соответственно. Для работы с jade, а точнее для преобразования написанного кода из jade в html, необходимо использовать командную строку, а так же установить на ваш компьютер платформу nodejs (https://nodejs.org/en/, http://nodejs.ru/).

Командная строка

Работа в командной строке так же может ускорить некоторые этапы работы над проектом, например, создание папок и файлов. Запустив консоль в директории проекта и набрав в ней всего лишь одну строку:

mkdir project && cd project && mkdir css && touch css/styles.css && mkdir images && mkdir js && touch js/app.js && touch index.html

После нажатия enter мы получим папку project в которой будут находиться папки css, images, js, в папках css и js файлы styles. css и app.js, соответственно, а в корне project лежать файл index.html. Таким образом мы сэкономили время на создание папки, написание её названия, создание файлов и пр. Так же командная строка используется для работы с остальными средствами автоматизации.

Sass

Далее стоит поговорить о таком языке как Sass (http://sass-lang.com/). Данный язык упрощает работу с css. Благодаря Sass можно записывать вложенные классы, проводить математические вычисления прямо в коде, выносить переиспользуемые величины в качестве переменных в отдельные файлы или в начало файла, что в значительной степени упрощает дальнейшую работу со стилями и упрощает изменение тех или иных величин, так как они все будут храниться в одном месте и не нужно будет «ходить» по всему проекту и вносить соответствующие правки. Так же, благодаря Sass в проекте можно придерживаться принципа модульности, храня части разметки в соответствующих файлах и подключать их все в основной, затем с помощью консольной команды можно собрать весь код в один css файл, так же поддерживается сборка результирующего файла на лету по мере написания стилей. Опять-таки для работы с Sass потребуется командная строка. Процесс установки пакета можно изучить здесь: http://sass-lang.com/install.

HTML5Boilerplate

HTML5Boilerplate (https://html5boilerplate.com/) представляет собой заранее скомпонованный проект, в котором уже есть index.html, normalize.css и пр. В index.html, например, уже заранее прописаны основные куски кода, которые необходимы при написании html страницы. Проект позволяет скачать архив со всеми файлами как есть или же использовать кастомную сборку: http://www.initializr.com/. Опять-таки, принцип прост: зачем тратить время на написание одних и тех же строк или на проделывание одних и тех же манипуляций, если мы сразу можем сосредоточиться непосредственно на работе с проектом.

Gulp и Grunt

Gulp (http://gulpjs.com/) и Grunt (http://gruntjs.com/) представляют собой сервисы запуска задач, которые описываются в основных файлах данных сервисов, выполняются с помощью совместимых модулей и запускаются на выполнение с помощью консоли.

Данные сервисы помогают использовать в разработке, например, вышеописанные средства Jade и Sass, автоматически преобразовывать их в соответствующие файлы html и css, сжимать их, если необходимо, а так же проверять, например css свойства, на необходимость использования браузерных префиксов и подставлять их в автоматическом режиме.

Оба сервиса используют различный подход в описании выполнения задач, но суть их работы одинакова. Полезным будет данное сравнение: http://frontender.info/gulp-grunt-whatever/

Так же многие сервисы вроде autoprefixer (автоматическая простановка браузерных префиксов), jshint (проверка JS кода на валидность) могут быть установлены как сторонние плагины в текстовом редакторе (Sumblime Text, Atom, Brackets) и инициализированы при нажатии определённого сочетания клавиш.

Bootrstrap, Foundation, Material Design Lite

Данные фрэймворки уже упоминались в разделе про дизайн. Но стоит опять вспомнить о них, так как они, в определённой степени, помогают автоматизировать процесс разметки веб-страницы и работы с ней.

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

Со всеми возможностями и примерами можно ознакомиться на соответствующих сайтах:

  • Bootstrap: http://getbootstrap.com/
  • Foundation: http://foundation.zurb.com/
  • Material Design Lite: http://www.getmdl.io/

Данное описание не является исчерпывающим и представляет собой лишь поверхностный взгляд на некоторые технологии. Но прежде чем пускаться во все тяжкие, используя средства автоматизации, библиотеки, framework’и, готовый код и прочее, стоит, всё-таки, изучить основы работы с html, css и js.

Надеюсь, что все описанные вещи будут полезны вам в изучении темы веб-дизайна и фронтенд разработки.

30 веб-сайтов, на которые стоит подписаться, если вы занимаетесь веб-разработкой

Я поставил перед собой цель изучать хотя бы одну полезную вещь каждый день, чтобы оставаться в курсе и хорошо разбираться в веб-разработке и дизайне. С этой целью, вот некоторые из веб-сайтов, которые я отслеживаю, чтобы найти новые методы, ресурсы и новости о создании веб-сайтов.

Большинство из этих сайтов часто обновляются , поэтому в моем Google Reader никогда не бывает недостатка в новом контенте. Потому что роль веб-разработчика постоянно расширяющийся , я также включил множество сайтов, которые охватывают области, связанные с веб-разработкой, такие как информационная архитектура, взаимодействие с пользователем и веб-дизайн/графический дизайн.

NETTUTS — это недавно запущенный блог/учебный сайт, который предоставляет « веб-навыков с ложки ». Уже есть множество полезных и подробных руководств, которые варьируются от выгрузки статического контента в Amazon S3 до создания красивой области контента с вкладками с помощью jQuery. NETTUTS идеально подходит для начинающих разработчиков, поскольку учебные пособия очень подробные и представлены в формате «шаг за шагом».

Для более продвинутых разработчиков это отличный источник вдохновения и изучения новых технологий.

Woork — это блог Антонио Лупетти, разработчика из Италии. Он предоставляет короткие, простые в использовании учебные пособия по различным темам веб-разработки, таким как PHP, Cold Fusion, JavaScript и CSS. Его умение создавать красивые учебные пособия, битком набитые сделанными на заказ изображениями, иллюстрирующими концепции, о которых он говорит, является свидетельством деталей и «работы», которую Антонио вкладывает в каждый из своих постов.

Ознакомьтесь с его замечательным учебным пособием «Подход сверху вниз к упрощению кода CSS», где он объясняет свои предпочтения в создании и форматировании таблиц стилей.

Web Designer Wall  – это блог Ника Ла, в котором представлены дизайнерские идеи и продуманные потрясающие учебные пособия, такие как создание градиентного текстового эффекта CSS – метод, использующий наложение изображения поверх обычного текста XHTML, а также учебные пособия по jQuery для дизайнеров. который демонстрирует десять методов, которые помогут вам начать работу с jQuery.

Я не буду много говорить о Smashing Magazine , так как большинство из нас, вероятно, слышали о нем, но если вы не слышали, Smashing Magazine — отличный ресурс для веб-дизайнеров и разработчиков, которые ищут вдохновение. Smashing Magazine также удается публиковаться почти каждый день, несмотря на их очень подробные и подробные посты.

5. Витамин

Витамин используется для предоставления большого количества информации по теме веб-разработки и дизайна. Со многими участниками Vitamin удалось охватить широкий круг тем, включая Ajax, CSS, методы разработки, лучшие практики и управление рабочим процессом. Этот блог объединился с блогом Treehouse.

6. Проснись позже

Проснись позже — это блог Сэмюэля Райана, внештатного веб-разработчика и дизайнера. Вместо того, чтобы освещать конкретные методы веб-разработки или предоставлять учебные пособия, он говорит об общих вещах, связанных с веб-разработкой, таких как причины не писать собственный код, советы по повышению производительности и распространенные ошибки проектирования, допускаемые разработчиками.

Snook.ca управляется Джонатаном Снуком, иконой веб-разработки и дизайна. Его блог содержит учебные пособия и статьи о PHP, JavaScript и, совсем недавно (блог ведет свою историю с 2001 года), Adobe AIR. Он также предоставляет полезные ресурсы и закладки, которые стоит прочитать, и рассказывает о вещах, которые являются частью работы веб-разработчика, таких как управление проектами по электронной почте и поддержание вашего личного бренда в Интернете.

Signal vs. Noise — это блог компании по дизайну и удобству использования, созданный людьми из 37 Signals, известными разработкой замечательных веб-приложений, таких как Basecamp, и их участием в популярной среде веб-приложений с открытым исходным кодом Ruby On Rails. Блог дает представление о том, как быть продуктивным и эффективным разработчиком веб-приложений и не усложнять вещи, с такими записями, как «Трудоголики зацикливаются на несущественных деталях» и «Лишение сна — это не знак чести».

Блог компании Adaptive Path предлагает новости и сообщения на тему дизайна пользовательского интерфейса. Существует множество полезных постов, посвященных теме создания удобного дизайна (не ограничиваясь только веб-приложениями). Некоторые вещи, о которых пишет команда адаптивного пути, — это «Советы по представлению внешнего вида и ощущений клиенту» и «Соблазн одного клика».

10. Учебный блог

Учебный блог используется для предоставления удобных учебных пособий, ресурсов и списков по различным темам веб-разработки и дизайна, таких как фрагменты кода для веб-дизайнеров и учебные пособия по Flash. По состоянию на май 2015 года сайт больше не существует.

WebAppers — это блог, созданный Рэем Ченгом, внештатным веб-разработчиком. Целью WebAppers является предоставление новостей и ресурсов, связанных с бесплатными приложениями с открытым исходным кодом, которые полезны для веб-разработчиков и дизайнеров. От бесплатных шрифтов и значков до навигационных меню и галерей изображений, WebAppers ищет полезные инструменты и приложения, призванные сократить ваше время на разработку пользовательских решений.

12. Депо веб-ресурсов

Депо веб-ресурсов похоже на WebAppers — в нем обсуждаются новые веб-ресурсы, которые веб-разработчики и дизайнеры могут найти полезными. Web Resources Depot — это отличный способ оставаться в курсе того, что в настоящее время доступно в одном месте.

Учитывая постоянное совершенствование Ajax, необходимо быть в курсе современных технологий и новостей. Ajaxian — ведущее сообщество Ajax, управляемое одними из самых известных специалистов в этой области. Вы найдете информацию, обзоры фреймворков JavaScript, полезные инструменты и статьи, посвященные серверным технологиям (например, PHP, RoR и .NET).

Если вы ищете новости и информацию Ajax, вы можете быть уверены, что услышите об этом от Ajaxian.

DZone — это сайт социальных новостей для разработчиков. Пользователи делятся ссылками, связанными с разработкой, и могут голосовать за материалы (очень похоже на Digg, но ограничиваются ссылками разработчиков). Вы можете подписаться через RSS на различные страницы и разделы, такие как JavaScript, Flash/Flex или базы данных, если хотите получать мгновенные обновления по интересующим вас вопросам.

Design Float — это сайт социальной сети, созданный для веб-дизайнеров и графических дизайнеров. Как и в случае с Dzone, люди могут голосовать за предложения. Вы найдете материалы о CSS, HTML и Photoshop, отправленные на Design Float.

С названием Camel-Case вы уже знаете, что это отличный сайт для разработчиков. developerWorks предлагает множество статей и учебных пособий по темам разработки, причем не только веб-разработки, но и смежных областей, таких как системное администрирование, технологии и приложения с открытым исходным кодом. У developerWorks есть талант писать на сложные темы и сводить их к расходным, понятным статьям.

17. del.icio.us

del.icio.us — это сайт социальных закладок, на котором участники могут размещать закладки, чтобы сохранять их и делиться ими. Это не только для веб-разработчиков, но вы можете отслеживать определенные теги, такие как веб-разработка, разработка или javascript.

18. Sharebrain

Sharebrain — это сайт, который делится полезными ресурсами для веб-работников. Вы можете найти ресурсы и учебные пособия по различным темам веб-разработки и дизайна, таким как учебные пособия по Photoshop, удобство использования, инструменты SEO, CMS и интервью.

19. Style Grind

Style Grind был блогом, в котором делились полезными новостями и информацией о веб-технологиях и дизайне. Ресурсы и новости, сообщаемые Style Grind, включали различные темы веб-разработки и дизайна. Style Grind больше не существует.

20. PSDTUTS

Ваша ценность как веб-разработчика возрастает, когда вы хорошо разбираетесь в дизайне. Некоторыми примерами могут быть разработчики тем WordPress, которые не только знают, как разрабатывать темы, но и могут их проектировать. PSDTUTS — отличное место для улучшения навыков работы с Photoshop, а также сайт, на котором я следую, чтобы узнать больше о графике/веб-дизайне.

21. Design Reviver

Design Reviver предназначен для предоставления полезной информации веб-дизайнерам. Вы можете посетить этот блог, чтобы прочитать учебные пособия по Flash, получить бесплатные загрузки, такие как кисти Photoshop, и найти вдохновение для дизайна.

Blog.SpoonGraphics — это блог о графике и веб-дизайне, созданный Крисом Спунером, графическим и веб-дизайнером. Вы можете найти множество руководств по Adobe Illustrator и Photoshop, бесплатные загружаемые ресурсы, такие как меню вкладок «Sliding Door», статьи для вдохновения и новости.

John Resig — это одноименный блог Джона Резига — ведущего разработчика JavaScript и автора, наиболее известного своим созданием jQuery, популярной среды JavaScript. Блог Джона Резига делится своими мыслями о разработке JavaScript и веб-приложений. Именно там я узнал о выпуске его нового проекта: Processing.js (JavaScript-порт языка программирования Processing) и где он высказал свои мысли о Google Doctype.

24. Коробки и стрелки

Boxes and Arrows посвящен лучшим практикам, инновациям и тенденциям в области дизайна, включая информационную архитектуру, графический дизайн и дизайн взаимодействия с пользователем. Вы можете прочитать о возможности поиска (как люди ищут информацию), о контраргументах в пользу размещения информации на первой странице и о доступности в Интернете.

25. PHPDeveloper

PHPDeveloper объединяет новости и ресурсы о PHP из блогов и сайтов, посвященных PHP. В Zend вы найдете отчеты, варьирующиеся от видеоуроков по PHP до интересных разработок.

Coding Horror — очень популярный блог ( более 100 000 подписчиков RSS!) Джеффа Этвуда, разработчика программного обеспечения. Он также говорит о веб-разработке, задавая такие вопросы, как «Является ли HTML гуманным языком разметки?», обсуждая жизнеспособность Amazon S3 для размещения изображений и делясь информацией о версиях баз данных.

O’Reilly Network от O’Reilly Media (издатель книг по развитию) содержит статьи и блоги, касающиеся веб-разработки и открытых технологий. Некоторые недавние статьи включают создание приложений с помощью Amazon EC2 и S3 и начало работы с Google App Engine. Некоторые блоги, являющиеся частью O’Reilly Network, включают WindowsDevCenter.com (для разработчиков Windows), ONJava.com (темы охватывают язык Java) и ONLamp.com (в котором рассказывается о Linux, Apache, MySQL и PHP).

Google Doctype — это новый проект Google, который будет включать записи « от веб-разработчиков для веб-разработчиков ». В настоящее время в нем не очень много статей, но это, безусловно, ресурс, за которым можно будет следить в ближайшие месяцы.

29. Web Monkey

Web Monkey – ресурс веб-разработчика возвращается! Хотя они только возвращаются к прежнему ходу вещей, это определенно веб-сайт, за которым нужно следить.

30. Цифровой веб-журнал

Digital Web Magazine — это онлайн-журнал для веб-профессионалов (веб-дизайнеров, разработчиков, информационных архитекторов). Здесь вы можете найти множество вещей, таких как PHP, веб-стандарты и программирование.

Другие известные сайты, которые стоит посетить

  • 24 способа — ежегодный сборник из 24 статей о разработке и дизайне, написанных ведущими разработчиками веб-сайтов.
  • Noupe – содержит новости и ресурсы по веб-дизайну и разработке.
  • Vandelay Design — блог о веб-дизайне и разработке Стивена Снелла, который в прошлом месяце участвовал в Six Revisions.
  • CSS Globe — веб-сайт сообщества, посвященный веб-стандартам.

Если вы ищете свой любимый сайт, а его здесь нет , ознакомьтесь с тем, что я написал несколько месяцев назад под названием «20 сайтов, которые сделали меня лучшим веб-разработчиком», в котором рассказывается о таких популярных сайтах, как A List Apart и 456. улица Верия. Из-за огромного количества отличных веб-сайтов я просто не могу рассказать обо всех и поделиться ими (хотел бы я это сделать), , поэтому я призываю вас поделиться своими любимыми в разделе комментариев с названием, ссылкой и кратким описанием . Примерно через неделю я обновлю этот пост с вашими предложениями.

Спасибо! Обновлено (14 марта 2014 г.): Исправлено 3 перемещенных URL-адреса (Snook.ca, блог Signal vs. Noise и адаптивного пути.

Что такое веб-разработка? (Руководство 2022 г.)

Веб-разработчик (Руководство 2022 г.)

Руководство по карьере веб-разработчика BrainStation поможет вам сделать первые шаги к прибыльной карьере в веб-разработке. 0003

Стать веб-разработчиком

Поговорите с консультантом по обучению, чтобы узнать больше об учебном лагере веб-разработки и о том, как стать веб-разработчиком всего за 12 недель.

Нажимая «Отправить», вы принимаете наши Условия.

Не удалось отправить! Обновить страницу и повторить попытку?

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

Веб-разработка тесно связана с работой по разработке функций и функций приложений (веб-дизайн). Термин «разработка» обычно зарезервирован для фактического создания этих вещей (то есть программирования сайтов).

Основными инструментами, используемыми в веб-разработке, являются языки программирования, называемые HTML (язык гипертекстовой разметки), CSS (каскадные таблицы стилей) и JavaScript. Однако существует ряд других программ, используемых для «управления» или облегчения создания сайтов, которые в противном случае пришлось бы делать «с нуля» путем написания кода. В эту категорию попадает ряд систем управления контентом (CMS), в том числе WordPress, Joomla!, Drupal, TYPO3 и Adobe Experience Manager.

Что такое веб-разработка?


Веб-разработка тесно связана с работой по разработке функций и функций веб-сайтов и приложений (часто называемой «веб-дизайном»), но термин «веб-разработка» обычно используется для фактического создания и программирования веб-сайтов и приложений.

Подумайте обо всех веб-страницах, которыми вы пользовались на протяжении многих лет. Веб-разработчики создавали эти сайты, следя за тем, чтобы они функционировали должным образом и обеспечивали удобство работы пользователей. Веб-разработчики делают это, написав строки кода, используя различные языки программирования, которые различаются в зависимости от выполняемых ими задач и платформ, на которых они работают.

Веб-разработка и веб-дизайн

Несмотря на частичное совпадение, между веб-разработкой и веб-дизайном есть и ключевые различия. Давайте рассмотрим подробнее:

Веб-дизайнеры:

  • Создают все, что пользователь видит на веб-сайте или в программном продукте, включая все визуальные, цветовые, типографские и юзабилити элементы
  • Работают напрямую с клиентом для создания дизайна или работа в составе команды по разработке клиентского видения
  • Может потребоваться знание языка программирования или некоторые навыки программирования, или, по крайней мере, некоторый уровень знакомства с широко используемыми языками, такими как HTML, CSS, PHP и JavaScript
  • Создание каркасов и прототипов для проверки дизайнерских идей, предложение предложений по дизайну логотипов , брендинг, руководства по стилю компании

Веб-разработчики:

  • Написание кода, обеспечивающего функционирование веб-сайта, вне зависимости от того, работают ли они на передней или задней части (на стороне сервера)
  • Создание или внедрение дизайна, требуемого клиент или создан командой дизайнеров
  • Необходимо знание различных языков программирования на уровне эксперта, включая HTML (язык гипертекстовой разметки), CSS, PHP и JavaScript, а также других языков (Ruby, C/C++, Python), фреймворков и библиотек
  • Редко создавайте макеты, выбирайте типографику или цветовые палитры

Какие языки программирования наиболее распространены?

Наиболее распространенными языками программирования, используемыми в веб-разработке, являются:

  • HTML (язык гипертекстовой разметки)
  • CSS (каскадные таблицы стилей)
  • JavaScript

Типы веб-разработки

Существует три основных типа веб-разработки: фронтенд-разработка, бэкэнд-разработка и разработка с полным стеком.

Что такое Front-End разработка?

Фронтенд-разработка включает в себя «клиентскую» сторону веб-разработки. То есть, как правило, интерфейсная веб-разработка относится к той части сайта, приложения или цифрового продукта, которую пользователи увидят и с которой будут взаимодействовать. Таким образом, Front-End разработчик отвечает за то, как цифровой продукт выглядит и «ощущается», поэтому их часто также называют веб-дизайнерами.

Front-End Web-разработчики сосредотачиваются на переводе дизайна веб-сайта и визуальных идей в код. Интерфейсный разработчик программного обеспечения использует дизайнерские идеи, созданные другими в командах веб-разработчиков, и программирует их в реальность, выступая в качестве моста между дизайном и технологиями.

Front-End-разработчики обычно должны хорошо разбираться в языках программирования, включая HTML, CSS и JavaScript, а также в таких фреймворках, как React, Bootstrap, Backbone, AngularJS и EmberJS. В обязанности Front-End разработчика будет входить создание адаптивных веб-сайтов (которые хорошо выглядят и работают на любом устройстве), проведение тестирования веб-сайтов и исправление любых ошибок, обнаруженных в процессе веб-разработки, а также обеспечение того, чтобы структура сайта соответствовала передовым практикам SEO.

Вакансии по фронтенд-разработке

В отличие от back-end разработки, существует ряд должностей, которые охватывают различные наборы навыков и уровни опыта в front-end разработке, в том числе:

  • Front-End Developer
  • Front-End Engineer
  • CSS/HTML Web Developer
  • Front-End Web Designer (это обычно означает роль, которая включает в себя больше требований к визуальному и интерактивному дизайну)
  • Front-End Разработчик пользовательского интерфейса (включая навыки интерактивного дизайна)
  • Front-End Web Developer для мобильных устройств
  • Front-End SEO Expert (обычно обозначает разработчика с опытом внедрения стратегии SEO)
  • Front-End Accessibility Expert
  • Front-End Dev Ops модульное тестирование, функциональное тестирование, пользовательское тестирование и A/B-тестирование)

Что такое внутренняя разработка?

Если Front-End-разработчики отвечают за то, как выглядит цифровой продукт, то Back-End-разработчики сосредоточены на том, как он работает. Back-End разработчик создает базовую структуру веб-сайта, прежде чем поддерживать его и обеспечивать его работу должным образом, включая взаимодействие с базой данных, аутентификацию пользователей, конфигурацию сервера, сети и хостинга, а также бизнес-логику. Работая за кулисами — или на стороне сервера — Back End-разработчики занимаются системами и структурами, которые позволяют компьютерным приложениям работать так, как нужно.

Основной обязанностью Back-End разработчиков является обеспечение функциональности сайта, включая его отзывчивость и скорость. Для этого Back-End-разработчики должны знать, как создавать серверы с современными платформами (при разработке пользовательских API и обслуживании статических веб-сайтов и файлов), а также как управлять базами данных и данными на веб-сервере.

Как правило, Back-End-разработчики используют серверные языки программирования, включая PHP, Ruby и Python, а также такие инструменты, как MySQL, Oracle и Git.

Что такое Full-Stack Developer?

Full-Stack Developer — это человек, знакомый как с фронтенд-, так и с бэкенд-разработкой. Разработчики полного стека обычно понимают широкий спектр языков программирования, и из-за их универсальности им может быть отведена более ведущая роль в проектах, чем разработчикам, которые специализируются. Они универсалы, умеющие носить обе шляпы и знакомые со всеми уровнями развития. Очевидно, что работодатели хотят нанимать Full-Stack разработчиков — согласно исследованию Indeed, они являются четвертой по востребованности профессией в сфере технологий.

Если заголовок вызывает споры, это связано с общим характером должности. Разработчики, которые специализируются на фронтенде или бэкенде, часто приходят в ярость от мысли, что кто-то может одинаково хорошо разбираться в обоих — на ум приходит выражение «мастер на все руки, мастер ни в чем».

«Обычно мои защитные тенденции приходят в состояние повышенной готовности, когда я слышу эту волшебную фразу («полный стек»)», — написал разработчик внешнего интерфейса Энди Шора. «Стеки стали намного больше, чем раньше, и возможность заявить, что вы приобрели усовершенствованные навыки на каждом уровне веб-разработки, — это, безусловно, немаловажное заявление. Означает ли это, что у вас широкий спектр навыков или вы специализируетесь на всем?»

Несмотря на то, что это мнение сохраняется, число технических специалистов, считающих себя разработчиками полного стека, растет. Согласно недавнему опросу разработчиков Stack Overflow, 48,2% считают себя разработчиками полного стека.

Что неясно, так это то, ожидается ли, что разработчики теперь будут обладать более широким набором навыков, или разработчики берут на себя ответственность понимать функции как внешнего, так и внутреннего интерфейса. В любом случае, для начинающих разработчиков становится все более важным иметь основу в обоих направлениях.

«Для большинства людей, которые надеются заняться веб-разработкой, вы должны сначала сосредоточиться на создании учреждения как для внешнего, так и для внутреннего продвижения», — порекомендовал инженер-программист и технический писатель Мухаммад Ансер. «В этот момент вы можете плыть к претензиям на славу позже».

Ожидается, что к 2026 году спрос на разработчиков вырастет на 15 % (для создания 24 400 новых рабочих мест), что намного быстрее, чем в среднем по США, поэтому, возможно, самое подходящее время, чтобы погрузиться и узнать больше обо всех слоях Веб-разработка.

НАЧАТЬ

Начните карьеру веб-разработчика

Мы предлагаем широкий спектр программ и курсов, построенных на адаптивной учебной программе и проводимых ведущими отраслевыми экспертами.

  • Работа над проектами в совместной обстановке

  • Воспользуйтесь нашими гибкими планами и стипендиями

  • Получите доступ к VIP -мероприятиям и семинарам

.

    Процесс разработки сайта | Руководство по стилю веб-сайта 3

    Каждый значительный веб-проект ставит уникальные задачи, но общий процесс разработки сложного веб-сайта обычно состоит из шести основных этапов, которые вы должны продумать, прежде чем создавать окончательные документы по планированию проекта и предложениям:

    1. Определение сайта и планирование
    2. Информационная архитектура
    3. Дизайн сайта
    4. Строительство участка
    5. Маркетинг сайта
    6. Отслеживание, оценка и обслуживание

    Разработка крупного веб-сайта — это процесс, который может иметь далеко идущие последствия для бюджета, персонала и связей с общественностью как во время разработки сайта, так и спустя долгое время после его развертывания. Слишком много веб-сайтов начинают свою жизнь как специальные усилия, созданные небольшими заинтересованными группами, работающими изолированно от своих коллег в других частях организации и без полного учета целей сайта в контексте общей миссии организации. Результатом плохо спланированных, поспешных усилий по разработке часто является «сайт-сирота», которому не хватает ресурсов и внимания.

    Рассматривая описанный ниже процесс разработки, обратите внимание на то, что создание страниц, составляющих веб-сайт, является одним из последних этапов хорошо спроектированного проекта. Рассмотрите каждый этап процесса и его влияние на разработку плана устава проекта (см. «Разработка устава проекта», ниже). Подумайте, прежде чем действовать, и убедитесь, что у вас есть организационная поддержка, бюджет и кадровые ресурсы, необходимые для успеха проекта (рис. 1.8).

    Рисунок 1.8 — Еще одна концепция проектов веб-разработки, здесь подчеркивается необходимость сфокусировать внимание от широкого вклада и участия в начале до узкой команды в конце. Необходимо, то есть, если вы когда-нибудь захотите закончить свой сайт вовремя и в рамках бюджета.

    Определение сайта и планирование

    На этом начальном этапе вы определяете свои цели и задачи для веб-сайта и начинаете собирать и анализировать информацию, необходимую для обоснования бюджета и требуемых ресурсов. Также настало время определить объем содержания сайта, интерактивную функциональность и необходимую технологическую поддержку, а также глубину и широту информационных ресурсов, которые вам потребуются для заполнения сайта и удовлетворения ожиданий ваших пользователей. Если вы заключаете контракт на производство веб-сайта, вам также необходимо будет провести собеседование и выбрать фирму, занимающуюся дизайном сайта. В идеале дизайнеры вашего сайта должны как можно скорее участвовать в обсуждениях планирования.

    Контрольный список производства на объекте

    Не на каждом объекте требуется подробное рассмотрение каждого элемента в приведенных ниже списках. Веб-группы в корпорациях или других крупных предприятиях часто могут рассчитывать на существенную внутреннюю технологическую поддержку при создании веб-сайтов. Если вы работаете самостоятельно как частное лицо или малый бизнес, вам может потребоваться заключить контракт с различными поставщиками технологий и дизайна, чтобы собрать все, что вам нужно для создания сайта с большим содержанием или небольшого сайта электронной коммерции.

    Производство
    • Ваша производственная группа будет состоять из штатных сотрудников, внешних подрядчиков или из тех и других?
    • Кто будет управлять процессом?
    • Кто ваши основные эксперты по контенту?
    • Кто будет поддерживать связь с внешними подрядчиками?
    • Кто в долгосрочной перспективе будет работать веб-мастером или редактором сайта?
    Технология
    • Какие операционные системы и браузеры должен поддерживать ваш сайт?
      • Windows, Macintosh, Unix, Linux
      • Firefox, Internet Explorer, Safari, Opera; минимальная поддерживаемая версия
    • Какова пропускная способность сети среднего посетителя сайта?
      • Внутренняя аудитория или преимущественно внешняя аудитория
      • Ethernet или высокоскоростные соединения, типичные для корпоративных офисов
      • isdn или dsl среднескоростное соединение, типичное для загородных домов
      • Модемные соединения для сельской аудитории
    • Будет ли сайт иметь динамический HTML и расширенные функции?
      • Требуется JavaScript
      • Требуются апплеты Java
      • Требуются сторонние плагины для браузера
      • Требуются специальные функции серверных сред Linux, unix или Microsoft iis
      • Требуются специальные функции безопасности или конфиденциальности
    • Как пользователи смогут связаться со службой поддержки?
      • Сообщения электронной почты от пользователей
      • Чаты, форумы, службы поддержки или поддержка по телефону
    • Требуется ли сайту поддержка базы данных?
      • Для входа в любые разделы сайта требуется логин пользователя
      • Требуются анкеты
      • Требуется поиск и извлечение из баз данных
    • Будет ли на сайте аудиовизуальный контент?
      • Видео- или аудиопродукция
    Поддержка веб-сервера
    • Будет ли сайт находиться на внутреннем веб-сервере или будет передан поставщику услуг Интернета для веб-хостинга?
      • Ограничения дискового пространства, ограничения трафика сайта, дополнительные расходы
      • Адекватная мощность для удовлетворения потребностей сайта в трафике
      • Круглосуточная поддержка и обслуживание без выходных
      • Статистика по пользователям и посещаемости сайта
      • Анализ журнала сервера: внутренний или внешний
      • Поисковая система, подходящая для вашего контента
      • cgi, программирование, поддержка промежуточного программного обеспечения базы данных
      • Поддержка базы данных или координация с внутренним персоналом
    Составление бюджета
    • Что такое расходы на персонал?
      • Краткосрочный персонал по развитию
      • Постоянный редакторский и вспомогательный персонал (редактор сайта или веб-мастер)
      • Текущая серверная и техническая поддержка
      • Обслуживание и поддержка базы данных
      • Разработка и обновление нового контента
    • Какое аппаратное и программное обеспечение необходимо для членов внутренней группы разработчиков?
    • Каковы затраты на обучение персонала?
      • Использование сети, базы данных, веб-маркетинг, веб-дизайн
    • Какова плата за аутсорсинг?
      • Дизайн и разработка сайта
      • Технический консалтинг
      • Разработка базы данных
      • Маркетинг сайта

    Назначьте редактора сайта «менеджером процесса»

    Каждый успешный новый веб-сайт переходит от проекта разработки к постоянному процессу редактирования, который поддерживает жизнь и актуальность сайта с течением времени. Вам понадобится руководитель проекта , чтобы запустить ваш новый сайт, но вам также необходимо будет передать сайт менеджеру процесса (читай: «редактору») после запуска сайта. Сайт, за который «несут ответственность все», может быстро стать сиротой. Для текущего содержания и последовательной редакционной политики, графического дизайна и управления вам понадобится один человек, который будет действовать в качестве редактора всего веб-сайта. Обязанности редактора сайта будут варьироваться в зависимости от того, как вы решите поддерживать свой сайт. Некоторые редакторы берут на себя всю работу по поддержанию содержания сайта, избавляя своих коллег от необходимости заниматься непосредственно редактированием веб-страницы. Другие редакторы координируют и редактируют работу многих участников, которые работают непосредственно на страницах сайта, чему помогает план обслуживания, в котором указывается, кто несет ответственность за содержание каждого раздела сайта. Когда несколько человек участвуют в обслуживании сайта, редактор сайта может выбрать редактирование страниц после их создания и публикации, чтобы не стать узким местом в процессе коммуникации. Тем не менее, общедоступные страницы высокого профиля или страницы, содержащие важную информацию, должны быть проверены редактором перед публикацией. Редактор сайта также, как правило, несет основную ответственность за то, чтобы содержимое сайта было как можно более заметным в местных корпоративных или общих поисковых системах Интернета. Неработающие ссылки и зашифрованные схемы организации контента могут повредить вашему рейтингу в поисковых системах и затруднить поиск вашего контента пользователями. Редактор сайта также должен заниматься сбором и анализом аналитики веб-сайта и составлять периодические отчеты об использовании сайта.

    Помимо обеспечения редакционного качества, редактор сайта также должен убедиться, что содержание сайта отражает политику предприятия, соответствует местным правилам использования и не содержит материалов, нарушающих законы об авторском праве. Многие люди, размещающие изображения, мультфильмы, аудиовизуальные файлы или письменные материалы, скопированные с других сайтов, на своих собственных сайтах, не понимают авторских прав и правовых рисков, связанных с ненадлежащим использованием материалов, защищенных авторским правом. Редактор сайта часто является первой линией защиты учреждения от дорогостоящего судебного процесса по поводу неправомерного использования защищенных материалов.

    Информационная архитектура

    На этом этапе необходимо детализировать содержание и организацию веб-сайта. Команда должна провести инвентаризацию всего существующего контента, описать, какой новый контент требуется, и определить организационную структуру сайта. После того, как архитектура контента набросана, вы должны создать небольшие прототипы частей сайта, чтобы проверить, каково это перемещаться по дизайну. Прототипы сайтов полезны по двум причинам. Во-первых, это лучший способ протестировать навигацию по сайту и разработать пользовательский интерфейс. Прототипы должны включать достаточное количество страниц, чтобы точно оценить, каково это — переходить от меню к страницам с контентом. Эти прототипы можно использовать для тестирования информационной архитектуры с пользователями. Во-вторых, создание прототипа позволяет графическим дизайнерам установить взаимосвязь между тем, как выглядит сайт, и тем, как навигационный интерфейс поддерживает информационный дизайн. Ключом к хорошему прототипированию является гибкость на раннем этапе: прототипы сайтов не должны быть настолько сложными или замысловатыми, чтобы команда слишком увлеклась одним дизайном за счет изучения лучших альтернатив.

    Типичные результаты или результаты контракта в конце этого этапа включают:

    • Подробное техническое задание на проектирование участка
    • Подробное описание содержимого сайта
      • Карты сайта, миниатюры, схемы, оглавления
    • Протестированные пользователями макеты и прототипы, демонстрирующие архитектуру сайта
    • Несколько эскизов графического дизайна и интерфейса
    • Подробная спецификация технической поддержки
      • Поддерживаемая технология браузера
      • Поддерживаемая скорость соединения
      • Веб-сервер и серверные ресурсы
    • Предложения по созданию программ или технологий для поддержки определенных функций сайта
    • График реализации проекта и строительства площадки

    Дизайн сайта

    На этом этапе проект приобретает свой внешний вид, так как создаются и утверждаются сетка страниц, дизайн страниц и общие стандарты графического дизайна. Теперь нужно заказать и создать иллюстрации, фотографии и другой графический или аудиовизуальный контент для сайта. На этом этапе также выполняется исследование, написание, организация, сборка и редактирование текстового контента сайта. Любое программирование, разработка базы данных и ввод данных, а также разработка поисковой системы уже должны быть в процессе. Цель состоит в том, чтобы создать все компоненты контента и функциональное программирование и подготовить их к финальной стадии производства: построению реальных страниц веб-сайта.

    Типичные продукты или результаты в конце этой стадии включают:

    Компоненты контента, детальная организация и сборка

    • Текст, отредактированный и вычитанный
    • Спецификации графического дизайна для всех типов страниц
      • Готовая графика интерфейса для шаблонов страниц
      • Графика верхнего и нижнего колонтитула, логотипы, кнопки, фоны
    • Подробные компоновки страниц или готовые примеры ключевых страниц
      • Руководство по графическим стандартам для больших и сложных сайтов
    • Дизайн интерфейса и шаблоны сетки эталонной страницы завершены
      • Готовые страницы HTML-шаблона
    • Иллюстрации
    • Фотография

    Функциональные и логические компоненты

    • Сценарии JavaScript, Java-апплеты, разработанные
    • Таблицы базы данных и программирование, прототипы взаимодействия завершены
    • Поисковая система разработана и протестирована

    Шаблоны

    Независимо от того, разрабатываете ли вы свой сайт самостоятельно или нанимаете профессионального веб-разработчика, вам следует разработать шаблоны страниц для вашего нового веб-сайта. Добавлять новые страницы намного проще, когда вы можете начать со страницы, которая уже содержит базовую навигацию и графику сайта. Если у вас есть команда, работающая над разработкой страницы, вы захотите поделиться шаблонами, а также стандартами обработки текста страницы и графики содержимого. Популярное программное обеспечение для разработки веб-сайтов, такое как Adobe Dreamweaver, предлагает мощные шаблоны и стандартные многоразовые библиотеки графики сайта и HTML, которые упрощают создание новых страниц и поддерживают согласованность вашего сайта.

    Доступность

    На большинстве крупных предприятий предоставление универсального доступа к веб-страницам является давно установленной институциональной политикой, и во многих случаях это требуется в соответствии с государственными или федеральными нормами. Поэтому крайне важно, чтобы вы проверяли дизайн и шаблоны страниц, а также содержимое вашего сайта на протяжении всего процесса разработки, чтобы гарантировать, что ваши страницы доступны для всех пользователей. Используйте руководящие принципы и методы, разработанные и поддерживаемые Инициативой по обеспечению доступности веб-сайтов (wai), в качестве средства проверки доступности ваших страниц.

    Боковая панель: Веб-доступность

    Обеспечение доступности веб-сайтов и возможности их использования людьми с ограниченными возможностями является главной задачей веб-доступности. Основные усилия в этой области исходят от Консорциума World Wide Web (W3C) в форме инициативы Web Accessibility Initiative. Усилия WAI сосредоточены на разработке инструментов и лучших практик, которые способствуют созданию общедоступных веб-сайтов. Большинство инструментов проверки используют рекомендации WAI в качестве стандарта для оценки сайтов.

    Следующие ссылки могут быть полезны для изучения того, что делает сайт доступным, как продвигать доступность внутри организации, что требуется для доступного дизайна и как оценивать проекты на предмет доступности:

    • Инициатива по обеспечению доступности веб-сайтов
    • Разработка бизнес-модели веб-доступности для вашей организации
    • Руководство по доступности веб-контента
    • Оценка доступности веб-сайтов

    Строительство площадок

    Только на этом зрелом этапе проекта большая часть веб-страниц сайта создается и наполняется контентом. Подождав, пока у вас будет подробная архитектура сайта, зрелые компоненты контента, полностью протестированные макеты и прототипы, а также отточенная спецификация дизайна страницы, вы сведете к минимуму взбалтывание контента, избыточные усилия по разработке и напрасную трату энергии, которые неизбежно возникают в результате слишком быстрого создания страниц. . Конечно, вы всегда будете узнавать что-то новое о вашем общем дизайне по мере того, как прототип превращается в полноценный веб-сайт. Будьте готовы совершенствовать свои проекты по мере того, как вы и ваши пользователи перемещаетесь по растущему веб-сайту и обнаруживаете как слабые места, так и возможности для улучшения навигации или контента.

    После создания сайта, заполнения всех страниц и привязки всех компонентов базы данных и программирования он готов к пользовательскому тестированию. Тестирование должно проводиться в первую очередь людьми, не входящими в вашу команду разработчиков сайта, которые готовы предоставить обоснованную критику и сообщить об ошибках в программировании, отметить типографские ошибки и критически оценить общий дизайн и эффективность сайта. Новые пользователи неизбежно заметят то, что вы и ваша команда разработчиков упустили из виду. Только после того, как сайт будет тщательно протестирован и доработан, вы можете начать публиковать URL-адрес сайта для более широкой аудитории.

    Типичные продукты или результаты в конце этого этапа должны включать:

    • Готовый HTML-код для всех веб-страниц, все содержимое страницы на месте
    • Готовая структура навигационной ссылки
    • Все программы на месте и связаны со страницами, готовыми к пользовательскому тестированию
    • Все компоненты базы данных на месте и связаны со страницами сайта
    • Весь графический дизайн, иллюстрация и фотография на месте
    • Окончательная вычитка всего контента сайта
    • Подробное тестирование базы данных и функциональности программирования
    • Тестирование и проверка функций отчетности базы данных
    • Тестирование процедур поддержки пользователей сайта, ответы на электронные письма и т. д.
    • Архивы всех компонентов контента сайта, html-кода, программного кода и любых других материалов для разработки сайта

    Поддерживаемый код

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

    Часто клиенты не осознают важность понимания деталей того, как веб-разработчик генерирует html и другой код, из которого состоит веб-сайт, только после того, как возникнут практические вопросы обслуживания сайта. Хотя вся разметка html и css во многом похожа на программное обеспечение для просмотра веб-страниц, то, как форматируются html и css и какой инструмент веб-разработки использовал разработчик, может иметь огромное значение в том, как код выглядит для человека.

    Рассмотрим два примера кода ниже: 9Пример 1 tr>

    Понедельник, 6 октября 2008 г.
    Пятница, 3 октября 2008 г.

    Пример 2

    Даты проведения заседаний в 2008 г.Крайний срок подачи пунктов повестки дня
    Понедельник , 6 октября 2008 г.Пятница, 3 октября 2008 г.

    Какой пример вам легче понять? Эти примеры кода в точности эквивалентны веб-браузеру, но большинству людей пример 1 покажется значительно более легким для чтения и понимания. Если вы заключаете договор с разработчиком на создание своего сайта, важно понимать, как разработчик пишет код, в каком состоянии код будет находиться, когда сайт будет доставлен, и совместимо ли программное обеспечение, используемое разработчиком, с тем, что вы будете делать. использование для поддержания сайта после доставки. Некоторое программное обеспечение для веб-разработки создает HTML-код, который человеку почти невозможно прочитать без значительного (и дорогостоящего) переформатирования. Другие программы (например, Adobe Dreamweaver) создают html-код, который легко читается веб-программистами, что может иметь огромное значение, если вы решите сменить веб-разработчика или решите редактировать html непосредственно при поддержке своего сайта.

    Если вы нанимаете кого-то для создания вашего веб-сайта или компонентов вашего сайта, таких как база данных или динамические элементы, обязательно спросите, какие инструменты они будут использовать для написания html и любого другого кода. Попросите показать примеры кода, написанного для других клиентов. Попросите вашего технического руководителя изучить код, чтобы убедиться, что разработчик вставляет в код пояснительные комментарии и разделители для удобочитаемости. Обязательно узнайте, не возникнут ли проблемы или конфликты, если вы будете использовать свои любимые инструменты для редактирования кода, который производит разработчик. Убедитесь, что разработчик понимает, какие инструменты редактирования вы предпочитаете использовать, и разрабатывает код для максимальной совместимости с вашими инструментами обслуживания.

    Проверка кода HTML и CSS

    Также запросите репрезентативные сайты, созданные разработчиком, и выберите страницы для проверки правильности кода с помощью бесплатных онлайн-инструментов, доступных на сайте w3c (см. ниже). Многие идеально функционирующие страницы не пройдут проверку достоверности w3c либо из-за относительно незначительных ошибок в коде, либо из-за сложных ссылок на базу данных или URL-адреса приложений, в которых используются проблемные символы, такие как амперсанд (&). Игнорируйте незначительные сбои при проверке кода, так как они вряд ли вызовут серьезные функциональные проблемы. Но если репрезентативные страницы возвращаются после тестирования с длинным списком проблем с html-кодом и ошибками css, остерегайтесь работы этого разработчика, тщательно обсудите и письменно изложите свои ожидания относительно проверки кода в рамках любого контракта.

    Инструменты проверки кода html и css от w3c:

    • Проверка html: validator.w3.org
    • проверка CSS: jigsaw.w3.org/css-validator

    Сегодняшние веб-страницы намного сложнее, чем страницы в прошлом, и многие новые мобильные и другие устройства теперь могут отображать веб-страницы. Видимость в поиске имеет решающее значение для успешных веб-сайтов, а доступность в Интернете является юридическим требованием, за которым стоит растущий набор прецедентного права. Использование тщательно проверенного кода html и css — одна из лучших стратегий для получения максимальной гибкости и отдачи от вложенных средств в веб-разработку. Будьте крайне осторожны с веб-разработчиком, который говорит вам: «Проверка не важна».

    Маркетинг сайта

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

    Если ваш веб-сайт ориентирован в первую очередь на местную аудиторию, вы должны не только попасть в стандартные веб-индексы, такие как Yahoo! и Google, а также опубликуйте свой URL-адрес там, где его увидят местные жители или компании. Местные библиотеки, газеты и школы часто являются ключом к популяризации нового веб-сайта в конкретном регионе.

    Вы также можете найти возможности для перекрестного продвижения вашего сайта с аффилированными предприятиями, профессиональными организациями, вещательными или печатными СМИ, туристическими или местными информационными агентствами, службами недвижимости и переселения, поставщиками доступа в Интернет и местными городскими или городскими сайтами каталогов. Ваша организация также может размещать на своем веб-сайте местные некоммерческие благотворительные или школьные мероприятия. Стоимость серверного пространства обычно незначительна, а широко освещаемые местные мероприятия с участием веб-страницы, размещенной на вашем сайте, повысят осведомленность местного населения о вашем присутствии в Интернете. Спонсорство сайта может также заинтересовать местные вещательные СМИ в качестве интересной точки зрения.

    URL вашей домашней страницы должен отображаться во всех:

    • Печатная реклама
    • Реклама на радио и телевидении
    • Киоски в лобби в местах с интенсивным движением вашего предприятия или в местных библиотеках, школах или других подходящих местах
    • Прямые почтовые кампании
    • Визитные карточки
    • Канцелярские товары
    • Счета и отчеты
    • Руководства по эксплуатации и упаковка продукции
    • Карты ответов и гарантийные карты
    • Публикации и рекламные материалы
    • Пресс-релизы
    • Плакаты и рекламные щиты

    Отслеживание, оценка и обслуживание

    Программное обеспечение вашего веб-сервера может записывать большое количество информации о посетителях вашего сайта. Даже самые простые журналы сайта отслеживают, сколько людей (уникальных посетителей) видели ваш сайт за определенное время, сколько страниц было запрошено для просмотра и многие другие переменные. Анализируя журналы сервера для вашего веб-сайта, вы можете получить количественные данные об успехе вашего сайта. Журналы расскажут вам, какие страницы были самыми популярными и какие бренды и версии веб-браузеров люди использовали для просмотра вашего сайта. Журналы сервера также могут предоставить вам информацию о географическом местоположении пользователей вашего сайта. Подробные журналы являются ключом к количественной оценке успеха веб-сайта. Ваш веб-мастер должен архивировать все журналы сайта для долгосрочного анализа и должен быть готов добавлять или изменять категории регистрируемой информации по мере изменения ваших потребностей и интересов.

    Ряд популярных пакетов программного обеспечения предназначен для создания легко читаемых отчетов о посещаемости сайта, дополненных графиками данных и диаграммами, которые помогают в анализе данных. В качестве услуги для клиентов компании, размещающие сайты, часто предлагают отчеты из популярных программ анализа сайтов, таких как Google Analytics, без дополнительной оплаты. Прежде чем заключать договор с поставщиком интернет-услуг на услуги хостинга сайта, всегда спрашивайте об услугах анализа сайта. Если ваш провайдер (интернет-провайдер) или корпоративный веб-сайт не предлагает хороший пакет анализа трафика сайта, спросите, может ли веб-мастер предоставить вам доступ к ежемесячному серверному журналу вашей учетной записи. Базовые версии программ анализа трафика, таких как WebTrends, недороги, и вы можете запускать их на персональном компьютере, если можете получить доступ к необработанному журналу веб-сервера у своего интернет-провайдера или корпоративного веб-мастера (рис. 1.9).).

    Рисунок 1.9. Веб-статистика — это гораздо больше, чем просто необработанные показатели трафика. Они могут рассказать вам, какой контент просматривали люди, откуда приходят ваши посетители, и предоставить обширный набор технической информации о том, какие технологии используют ваши типичные читатели. Из Google Analytics.

    Обслуживание сайта

    Не покидайте свой сайт после запуска производства и завершения вечеринок по запуску. Эстетические и функциональные аспекты большого веб-сайта требуют постоянного внимания и ухода, особенно если группа лиц разделяет ответственность за обновление контента. Редактор вашего сайта должен будет нести ответственность за координацию и проверку нового потока контента, поддержание графических и редакционных стандартов, а также обеспечение того, чтобы программирование и ссылки на всех страницах оставались неповрежденными и функциональными. Ссылки в Интернете скоропортящиеся, и вам необходимо периодически проверять, работают ли ссылки на страницы за пределами вашего непосредственного сайта. Не позволяйте вашему сайту устаревать, лишая его ресурсов как раз в тот момент, когда вы начинаете наращивать аудиторию — если вы разочаруете их, не выполнив требования, вам будет вдвойне сложно вернуть вашу аудиторию на сайт.

    Резервные копии и архивы сайта

    Редактор сайта должен быть уверен, что веб-сайт регулярно резервируется на безопасном и надежном носителе, чтобы гарантировать, что катастрофический аппаратный сбой на вашем веб-сервере не уничтожит ваш веб-сайт. Резервное копирование большинства веб-серверов, поддерживаемых ИТ-специалистами или коммерческими поставщиками веб-услуг, выполняется не реже одного раза в день. Если вы не знаете, каково ваше расписание резервного копирования, спросите своего веб-мастера или провайдера веб-хостинга. Человеческая ошибка — наиболее распространенная причина, по которой вам может понадобиться быстрый доступ к резервной копии вашего веб-сайта. К сожалению, легко случайно перезаписать старый файл (или целый каталог файлов) поверх более новой версии на веб-сервере, по ошибке удалить что-то важное или по ошибке стереть чужую работу при обновлении веб-сайта. Недавняя резервная копия (в идеале не старше двадцати четырех часов) часто может спасти жизнь.

    Если ваш сайт будет успешным, он быстро станет важным отчетом о работе вашего предприятия, ваших достижениях и ценным отчетом о «положении вещей» по мере развития сайта (рис. 1.10). К сожалению, этому аспекту веб-сайтов уделяется слишком мало внимания, и мы коллективно теряем огромные куски нашего имущества, потому что никто не думает о сохранении постоянных записей о веб-сайте.

    Автор записи

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *