что такое веб проект
Что такое веб проект
Пояснения к термину «веб-проект»
Технологии, веб-дизайн и создание сайта. Веб-проект
В терминологии технологий веб-дизайна выражение «веб-проект» является едва ли не наиболее часто употребляемым. Оно находится в одном ряду с такими фундаментальными понятиями веб-архитектуры, как «сетевые ресурсы» и «создание сайта», причём вполне заслуженно, так как охватывает колоссальную сферу деятельности разработчика. Впрочем, я не собираюсь устраивать на своих страницах пространных лекций — давайте лучше быстренько разберёмся в значении данного словосочетания, а затем перейдём непосредственно к сути дела.
Веб-проект — это самостоятельная единица интеллектуальной продукции, выполненная и оформленная средствами технологий веб-дизайна. Можно сказать и несколько по-иному, попроще и другими словами: мы называем так всякую и каждую разработку, доступную к полномасштабному ознакомлению в информационной среде Интернета (это значит, что для просмотра / изучения контента может быть использован обычный браузер). Понятно ли я выражаюсь, дамы и господа?
В чисто прикладном, техническом значении слова, термин «веб-проект» описывает собою некоторое количество файлов, взаимосвязанных по методикам гипертекстовой разметки HTML и объединённых некой общей идеей (иногда употребляется выражение «творческий замысел», смотри «Технологии веб-дизайна: художественный образ», а также статью «Тематика сайта»). Нетрудно догадаться, что файлы, используемые в качестве компонентов прототипа сетевого ресурса, обязательно должны иметь обрабатываемый средствами Интернета формат. Как правило, в роли такового выступает HTML; такими, или им подобными, расширениями описываются отдельные элементы веб-проекта, именуемые в нашей терминологии выражением «веб-страница» (о том, что представляют из себя упомянутые объекты, читайте специальную статью по ссылке).
В сущности, вся мощь и причудливое разнообразие нашего обширного инструментария — я говорю о технологиях веб-дизайна, методиках анализа качества сайта и способах заработка в Интернете — имеет перед собою одну-единственную, чётко обозначенную цель: создание веб-проекта, а частности дальнейшего использования результата разработки, автора должны интересовать лишь формально. Почему это так, мы сейчас обязательно разберёмся.
Видите ли, проект проекту — рознь, даже если речь идёт об объектах абсолютно одинаковой тематики и концепция применения. Выражаясь отвлечённо, давайте приведём вот такую примитивную сентенцию: одно и то же краткое событие можно описать сотню раз, и каждое из описаний ФОРМАЛЬНО будет уникальным. Следовательно, теоретически мы можем располагать массой вариантов исходного материала, и в силах сделать ворох веб-проектов; один из них мы опубликуем в Интернете, парочку продадим как товар из разряда интеллектуальной продукции, а остальные будут болтаться в наших архивах, пылясь в ожидании лучших времён (последнее объясняется на сайте «Курсы веб-дизайна и технологий»).
Обратите внимание: с точки зрения организации собственного веб-предприятия и реализации способов заработка в Интернете, указанная выше ситуация не может возникнуть в принципе, ибо в корне противоречит глобальным постулатам получения максимального дохода (см. «Получение прибыли»). Скорее всего, природа подобного явления новичкам совершенно не ясна, но на эту тему мы поговорим в следующем разделе.
Сейчас же нас интересует веб-проект, как прототип для создания сайта — и не какого-то худосочного шаржа на сайт, но полноценного, характеризующегося динамичностью и интерактивностью[1] сетевого ресурса, способного занять достойное место в верхушке (топе) рейтинговой выдачи поисковых систем. Но пока мы ещё не в состоянии взяться за воплощение сего замысла в реальность, поскольку ничего не решили о конечной цели нашего творчества. Каким именно будет наш веб-проект (следует понимать «прототип для создания сайта»), определяет избранная для него концепция применения.
Чем занимается веб-разработчик и что нужно уметь для первой работы
Веб-разработчики — самые востребованные из программистов. Этих специалистов много, но работу найти сравнительно легко.
Слово «веб-разработчик» кажется вполне понятным — очевидно же, что он разрабатывает что-то для веба. На деле всё не так просто. Современный интернет мало похож на веб девяностых или нулевых: технологий столько, что уследить за всем сразу просто нереально. Поэтому в профессии веб-разработчика есть три больших специализации:
Нельзя быть в чистом виде frontend- или backend-разработчиком, даже если занят чем-то одним. Всё равно придётся хотя бы немного разбираться в том, как взаимодействуют между собой серверная и клиентская части
веб-приложения.
Фанат Free Software Foundation, использует Linux и недолюбливает Windows. Пишет истории про кодинг и программы на Python. Влюблен в LISP, но пока что не умеет на нем программировать.
Веб-разработка — самое популярное направление в программировании. Согласно исследованию Stack Overflow за 2020 год, большинство программистов считают себя frontend-, backend- или fullstack-разработчиками. Но лидируют в рейтинге те, кто занимается бэкендом.
Это подтверждает и опрос о самых популярных технологиях среди программистов: так или иначе связанные с вебом лидируют с большим отрывом. А на первом месте здесь JavaScript — его использует почти 70% веб-разработчиков в мире.
История веб-разработки: от 1990 до 2020
В 1990 году Тим Бернерс-Ли создал первый сайт и браузер в CERN — Европейском центре ядерных исследований. Выглядел он так себе, но это была настоящая революция.
Профессиональная веб-разработка началась во второй половине девяностых после выхода первого «нормального» браузера — Mosaic, технологии CSS (каскадные таблицы стилей), языка JavaScript и Flash. Примерно в это же время появился PHP — специальный язык программирования для бэкенда, который до этого писали на чём придётся: на C, C++ или Perl. Веб быстро набирал популярность, стало выгодно делать красивые и удобные сайты — и в разработке появились хорошие деньги.
Потом были браузерные войны: каждый добавлял какие-то свои возможности, а фронтенд-разработчики сходили от них с ума. Только сейчас создатели браузеров приняли более или менее единые стандарты. В бэкенде тоже многое изменилось: PHP теснят конкуренты — например, Python, Java и JavaScript с Node.js, изначально сделанной для фронтенда.
Сейчас все идут в веб. Мировой рынок публичных облачных сервисов вырос с 56,6 млрд долларов в 2014 году до 233,4 млрд долларов в 2019 году (данные аналитической компании IDC, по отчёту TAdviser). И хотя в России рынок облачных решений развивается не так интенсивно, как в мире, но с 2014 года он вырос втрое. Поэтому и спрос на веб-разработчиков только растёт.
Какие навыки понадобятся, чтобы получить работу
От начинающего специалиста ждут понимания основ технологий, которые использует компания. Но прежде чем изучать что-то конкретное, стоит разобраться — куда вам хочется попасть и с чем там работают. Эта информация есть на сайтах с вакансиями. Требования к джунам в целом похожи, различаются только специализации. Мы составили список самых популярных требований к разработчикам — с этими навыками вы точно найдёте работу.
В списке могут встретиться незнакомые слова, но это не проблема: все они относятся к веб-разработке, и их точно можно получить на наших курсах или бесплатных интенсивах.
Backend-разработчик:
Frontend-разработчик:
Требования к начинающим fullstack-разработчикам приводить нет смысла — надо просто суммировать требования к frontend- и backend-специалистам.
Сколько получают веб-разработчики и насколько они востребованы
Веб-разработчики — самая востребованная специальность по данным работных сайтов. Приведём таблицу популярности и зарплат разных направлений веб-разработки на сентябрь 2020 года (прибавьте сюда ещё и вакансии, в заголовок которых вынесены только конкретные технологии — например, «разработчик Node.js» или «Django developer»).
Направление | Количество вакансий | Junior | Middle | Senior |
---|---|---|---|---|
Веб-разработчик | 1228 | 60 вакансий 20−50 тыс. руб. | 70−150 тыс. руб. | 100−200 тыс. руб. |
Fullstack-разработчик | 340 | 10 вакансий 30−60 тыс. руб | 80−150 тыс. руб. | 120−230 тыс. руб. |
Backend-разработчик | 1099 | 40 вакансий 40–60 тыс. руб | 80−150 тыс. руб. | 120−200 тыс. руб. |
Frontend-разработчик | 2159 | 67 вакансий 30−60 тыс. руб | 80−150 тыс. руб. | 120−200 тыс. руб. |
Миф о том, что fullstack-разработчики — это десантники среди программистов и получают они в среднем больше остальных, не подтвердился. А более высокий порог вхождения на деле не помогает даже junior-специалистам получать больше.
Какие веб-технологии популярны в мире и зачем это новичку
Чтобы быть востребованным на рынке труда, неплохо понять, за какими технологиями будущее и что важно изучать уже сегодня. Stack Overflow ежегодно публикует отчёты о технологиях, программистах и зарплатах. На 2020 год самые распространённые веб-фреймворки — jQuery, React, Angular и ASP.NET. Причём jQuery хоть и лидирует, но каждый год теряет популярность — это уже устаревшая технология.
Большинство веб-разработчиков любят ASP.NET Core, React.js, Vue.js, а вот Angular.js, Drupal, WordPress и jQuery они считают просто ужасными. В ближайшее время планируют изучать React.js, Vue.js, Angular и Django. Если же говорить о серверных технологиях, то среднестатистический опытный разработчик любит и хочет изучить Linux, Docker и Kubernetes — они лидируют с большим отрывом.
Это не просто перечисление инструментов, а важная статистика — в исследовании участвовало 65 тысяч разработчиков. Из них 54 тысячи — более пяти лет в профессии. Так что эти данные можно считать коллективным мнением экспертов. Когда будете планировать своё развитие в профессии, обязательно учитывайте это.
Как проще всего изучить основы
веб-разработки
Познакомиться с JavaScript/CSS/HTML удобнее всего в образовательном разделе сайта Mozilla, а получить обзорное представление обо всех современных
веб-технологиях — в видеокурсе от Mail.ru. Этого будет достаточно, чтобы определиться со специализацией и понять, куда двигаться.
Системно изучить веб-разработку, попрактиковаться на реальных задачах и получить обратную связь от опытных профессионалов-менторов можно на нашем курсе «Профессия веб-разработчик».
Концепция web-проекта или почему мы убиваем свои идеи?
Для начала немного статистики…
Важный момент: В статье речь идёт о первых или «зелёных» проектах, которые делают люди не имеющие должного опыта в их реализации.
Сразу скажу, откуда Я взял эти цифры – это моя личная статистика за 1,5 года. Я сам ранее занимался разработкой и реализацией крупных web-проектов для одной российской корпорации, поэтому испытываю профессиональный интерес ко всем новым идеям, которые можно встретить на просторах сети.
В анализе участвовало на момент написания данной статьи 54 проекта. Среди идей проектов встречаются и банальные социальные сети и браузерные MMORPG, ничем не отличающиеся от других, и действительно стоящие и инновационные экземпляры. Но давайте перейдём к цифрам, они сами скажут за себя.
Замечание: доли округлены, статистика представлена в виде среза по 54 проектам, мой собственный проект в статистике не участвует.
Какое состояние проекта на текущий момент?
Активно развивающихся проектов, с более-менее сложенной командой, ровно один (2%). Данный проект существует около года.
Проектов, которые, то работают, то простаивают по тем или иным причинам – 3 (6%). Один из них в таком «вялом» режиме находится уже почти полтора года. Несмотря на низкую скорость развития этих проектов, сказать, что они провалены и не развиваются, нельзя.
Остальные полсотни проектов (92%) «умерли» (проект не реализовался или у него нулевая посещаемость) по разным причинам.
По какой причине был закрыт проект?
4 проекта (7%) действуют. Я привел их в этой диаграмме для получения среза по всем проектам.
У 12 проектов (22%) нет своей идеи. Эти проекты копируют существующие web-проекты с некоторыми изменениями. Среди них социальные сети, много браузерных игр и несколько онлайн-сервисов.
15 проектов (28%) не сумели создать команду или автор проекта не сумел найти людей готовых воплотить задумку в жизнь. Максимальное развитие данных проектов заканчивалось на организации сайта проекта, обычно очень корявого.
5 проектов (9%) были закрыты по причине отсутствия денег на развитие. По крайне мере, так уверяют авторы.
Остальные 18 web-проектов (34%) «канули в лету» по неизвестной мне причине. Авторы этих проектов на попытки связаться с ними никак не реагируют.
В принципе всё предсказуемо, но перейдём к следующему вопросу.
Имеется ли у проекта адекватно оформленная концепция?
Адекватно оформленная концепция есть только у 1 проекта (2%). И угадайте, в каком состоянии находится этот проект? Он активно развивается.
У остальных концепция либо крутится в уме автора, либо выражена в 5-10 предложениях.
Думаю тут и без комментариев всё понятно. Корень зла найден… Теперь предстоит обрубить его и рассказать, что же такое концепция проекта.
Что такое концепция?
Концепция (от лат. conceptio — понимание, система) — определённый способ понимания (трактовки, восприятия) какого-либо предмета, явления или процесса; основная точка зрения на предмет; руководящая идея для их систематического освещения. (Wikipedia)
Говоря по-простому, концепция – это система опорных точек построения готового продукта, документально описанная и позволяющая достичь результата без дополнительных данных. Это идея проекта и инструкция, как воплотить эту идею в жизнь, записанная на бумаге или другом носителе информации.
Что бы избежать лишней писанины, Я подготовил шаблон концепции web-проекта. Естественно, Вы можете изменить его под свои нужды. Я, лично, оформляю концепцию по старинке, то есть на бумаге. Например, текущий мой проект выглядит так:
Конечно, концепция проекта — это понятие абстрактное, строящиеся на уровне структуры и идей. Концепция, по своей природе, не должна содержать ничего лишнего, но она тесно переплетена с технической реализацией. Для работы с такой идеальной концепцией нужно хорошее знание технической базы. У людей, которые впервые решили создать свой web-проект, таких знаний обычно нет, поэтому в моём варианте концепции Вы встретите многие критические технические моменты, на которые следует обратить внимание.
Содержание концепции web-проекта с описанием отдельных пунктов
Название проекта
Тут всё понятно. Как корабль назовёшь, так он и поплывёт.
Цель проекта
Вспоминаем дипломную работу в институте и пишем нечто подобное. Это необходимо для четкого понимания того, для чего этот проект затевался. Напомню, цель отображает желаемый результат. Например: создание и реализация браузерной MMORPG «Кирпичи», получения дохода от рекламы и продажа проекта.
Задачи проекта
Аналогично предыдущему, вспоминаем диплом. Это нужно для понимания того, как этот проект осуществить. Напомню, задачи отображают действия, которые необходимо проделать для достижения результата. Например: исследовать рынок браузерных MMORPG, разработать программный код, протестировать сервис.
Участники проекта
В этом пункте ФИО всех, кто участвует в создании проекта. Совет на будущее: используйте свои реальные ФИО, так как иначе потом трудно доказать, что, например, «Зафорд Библброкс», который писал программный код это Вы.
Сроки проекта
Здесь все начинающие (и даже опытные) разработчики делают ошибку. Выделяйте на разработку в два раза больше времени, чем Вам кажется.
Логотип и девиз
Тут тоже всё понятно.
Описание проекта
Напишите несколько абзацев текста, описывающих ваш проект, подчеркивающих его достоинства. Пишите понятно и главное увлекательно. Потом пригодится для привлечения инвесторов или покупателей.
Отличительные особенности проекта
Все особенности вашего проекта. Если Вам нечего сюда писать, кроме как — «этот проект лучший, так как мой», то можете на этом заканчивать свою деятельность web-разработчика.
Целевая аудитория
Опишите людей, для которых пишется проект. Например: продавцы леса города Биробиджан.
Концепт-арт проекта
Здесь приводятся эскизы всех страниц проекта, а не только первой. У меня это выглядит примерно так:
Остальное
Конечно, концепция web-проекта не ограничивается только приведёнными мной пунктами. Сюда нужно добавить детальное описание каждого момента и функциональности проекта.
В заключение
Может получиться, что документации будет не один листок бумаги (у моего текущего проекта 38 листов А4) и писать Вы её будете очень долго (Я писал 2 месяца), но оно этого стоит. Концепция – это ваша опора на пути к реализации вашего проекта. Помните: отсутствие концепции – это «убийство» вашей идеи.
И напоследок, общие советы и дополнительные статьи по тематике управления проектами:
Общие советы по написанию концепции:
Классификация интернет-проектов
Меня зовут Илья Зеленчук. Занимаясь созданием различных интернет-проектов, я накопил определенный опыт в этой области. В этой статье я хочу поделиться им и надеюсь, он будет полезен для продакт-менеджеров.
Создавая очередной интернет-проект, важно четко понимать, что ты делаешь и к какому типу относится твой проект. Описанные типы придуманы не мной, более того, они уже успешно используются. Если посмотреть информацию о стартапах на vc.ru, то можно легко найти такие типы проектов как «Сервис», «Инструмент» и т.п. Я решил собрать эти типы вместе и выделить их основные черты.
Я отдаю себе отчет в том, что любая классификация не может быть полной и может найтись рабочий интернет-проект, который выбивается из этого представления. Ну что ж, буду рад таким примерам, это позволит расширить и дополнить текущую классификацию.
У каждого типа интернет-проекта есть свои характеристики и то, как он взаимодействует с пользователем. Итак, поехали:
Конкретные примеры сервисов:
Пользователи между собой, как правило, не взаимодействуют.
Посетив страницу или открыв мобильное приложение сервиса, пользователь должен нажать кнопку и получить результат.
Различаются два вида пользователей: продавцы и покупатели. Взаимодействуют только покупатели с продавцами: продавцы не общаются с другими продавцами, то же самое и про покупателей.
Масштабируются маркетплейсы по категориям или регионам/категориям товара/и т.д.. К примеру, AirBnB сначала работал в одном городе, потом подключал другие, то же самое делал BlaBlaCar.
Инструменты позволяют собирать, обрабатывать, анализировать и изменять данные. Хорошими примерами инструментов служат:
Основные характеристики инструмента: обилие функционала (в отличие от сервиса, тут много кнопок и полей), продолжительное время использования. Пользователи могут взаимодействовать друг с другом, если это предусмотрено инструментом.
Пользователи часто ограничены возможностью только комментировать материал.
Основные характеристики таких сервисов: количество прочтений, лайки, комментарии, репост.
Такие проекты помогают обмениваться опытом и знаниями, решать текущие вопросы и просто приятно проводить время.
Нельзя пройти мимо информационных проектов. К таким относятся страницы с информацией о мероприятии или компании. Цель таких страниц: содержать информацию о месте проведения, телефонах, программе выступлений, и т.д.
Примерами таких информационных проектов могут служить:
Пользователи на таких проектах либо совсем никак не взаимодействуют с ним, либо имеют минимальный набор функций, таких как личный кабинет с регистрацией на мероприятие. Между собой пользователи также не взаимодействуют.
Гибридные проекты объединяют в себе два и более типов проектов. И, надо сказать, это довольно редкое явление. Например, YouTube, с одной стороны, является сервисом по хранению, обработке и распространению видео. С другой стороны, это социальный проект, который объединяет пользователей между собой.
Классификация помогает быстро понять, какого типа проект, что в нем важное, а что второстепенное, и как будет организовано пользовательское взаимодействие.
Создание веб-сайта. Курс молодого бойца
Как-то меня попросили провести небольшой семинар в лицее, где я когда-то учился, по созданию веб-сайта. В процессе написания речи я подумал, что она может вылиться в материал, который, возможно, будет полезен многим начинающим в области веб-дизайна, вёрстки веб-страниц и пр. Я не претендую на истину в первой инстанции и всё изложенное носит чисто личностный взгляд на работу с дизайном и кодом. Статья даёт поверхностный взгляд на понятия и средства, которые, на мой взгляд, могут стать неплохим стартом для того, кто готов идти дальше.
Условно процесс создания сайта (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.
На данном изображении показаны оба подхода. Сверху блок «отзывается» на любые изменения размера контейнера, снизу «адаптируется» под определённую ширину
Полезные ссылки по теме:
Почему при «резиновом» дизайне создаётся несколько макетов, а не используется один?
При разработке макета мобильной версии сайта стараются на первый план выносить основной контент, поэтому навигационное меню часто прячется, скрываются большие баннеры и декоративные элементы, блоки контента обычно располагают друг под другом. На заранее составленном макете как раз можно определиться какие элементы мы оставляем на мобильном, а какие прячем.
Модульная сетка
Перед составлением схемы проекта так же необходимо уяснить понятие модульной сетки. Модульная сетка подразумевает под собой разделение страницы на отдельные колонки по вертикали и выстраивание контента, при разработке дизайн макета, именно по этой сетке.
Наиболее популярной системой является модульная сетка 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.
Полезные ссылки и материалы:
Макеты веб-страниц
Среди всего многообразия составления макета веб-страницы можно выделить четыре наиболее распространённых:
Но данный список типов макетов нельзя назвать исчерпывающим, поэтому перед разработкой макета и дизайна страницы так же можно погулять по различным сайтам с примерами других работ, а так же по сайтам схожей с вашей тематикой:
Mobile First
С учётом тенденций последних лет данный подход плотно занимает свою нишу в разработке и дизайне сайтов. Тенденция такова, что практически около 60% пользователей интернета используют для доступа в сеть мобильные устройства, поэтому правилом хорошего тона становится разработка не только десктопной версии сайта, но и мобильной версии. При использовании данного подхода разработка макета сайта, дизайна и вёрстки начинается с мобильной версии, а затем уже прорабатываются макеты для других разрешений: добавляются блоки, баннеры, дополнительные элементы дизайна и пр.
Данный подход учитывает практически весь цикл разработки, поэтому мы ещё к нему вернёмся.
Усвоив всё вышесказанное можно переходить к следующему этапу – Дизайн.
Дизайн
После создания макета проекта можно переходить непосредственно к созданию дизайн-макета. На данном этапе начать стоит с определения цветовой гаммы проекта.
Один из способов определения основного цвета в проекте – это составление mood board. Для этого необходимо выписать себе все синонимы, связанные с темой проекта, а затем каждый синоним набрать в поиске по картинкам Google или Yandex. На основе найденных изображений выписать себе цвета, которые чаще всего встречаются на них (каких цветов больше). Найденные цвета будут составлять визуальное восприятие нашего проекта и вызывать у пользователя соответствующие чувства.
Для работы с выбранным цветом и составлением палитры цветов нашего сайта можно использовать следующие инструменты:
При работе над дизайном главной и внутренних страниц стоит помнить о некоторых основных принципах.
Элементы Call to Action
Понятие призыва к действию относится к интерактивным элементам сайта: кнопки, баннеры и пр. Данные элементы оформляются таким образом, что пользователю должно хотеться непременно на них нажать. Например, это может быть кнопка с призывом к действию (Нажми, Купи, Сэкономь), яркий баннер с заманчивым предложением, яркой картинкой и пр.
Данное понятие хорошо вписывается в принцип AIDA (Attraction Interest Desire Action).
Данное понятие применяется чаще при дизайне главных страниц, страниц акций и пр., где необходимо подтолкнуть пользователя к тому или иному действию: подписка, покупка и пр. Если перевести данный акроним на русский, то мы получим следующие понятия:
Таким образом становится понятен принцип построения дизайна, опирающегося на данное понятие: например, яркая картинка, баннер должны привлечь внимание пользователя, сопутствующий посыл в тексте должен вызвать в нём интерес и желание, а завершающим аккордом должна стать, например, кнопка с призывом к действию.
Но и данный принцип не работает сам по себе без некоторых других: схема просмотра страницы (наиболее, естественный путь движения глаз по странице), визуальные направляющие.
Схема просмотра страницы
Довольно часто встречается 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 написан при помощи C++ и Python, то 2 других используют JavaScript, HTML, CSS (Less). За счёт этой разницы Sublime Text может работать чуть быстрее своих коллег.
Существуют так же более продвинутые IDE (студии) такие, как Web Storm, PHP Storm и пр., но для вёрстки проекта вполне подойдёт редактор кода, а не целая студия (IDE).
Чтобы определиться, что подходит лично вам для разработки, стоит самим покопаться в многообразии средств и выбрать то, что больше всего удовлетворяет вашим потребностям.
Обзоры текстовых редакторов:
Структура проекта
Под структурой проекта понимается хранение файлов проекта в его директории. Часто приходится видеть, когда все файлы «свалены» вместе, названия файлам даны «капсом», цифрами или русскими буквами и пр. Во-первых, это банальное неуважение к тому, кто будет работать с вашим проектом далее, во-вторых, чем больше будет ваш проект, тем больше будет становиться файлов и, в конце концов, вы просто запутаетесь, что к чему относится и что нужно, а что нет.
Лучше всего отдельные категории файлов помещать в свои папки: картинки в папку images или img, css в папку css, javascript в папку js. В корне будет лежать только index.html и страницы сайта, либо только index.html, а страницы в отдельной папке pages. Соблюдая эти правила вы никогда не запутаетесь в проекте.
Работа над проектом
Итак, определившись с редактором кода, структурой мы можем приступать к разработке. Прежде всего стоит отметить, что вёрстка страницы делается поэтапно: сначала пишется HTML-структура (HTML-код), затем добавляются стили, а после, если необходимо, пишутся скрипты (JS), добавляются необходимые плагины и библиотеки.
Учитывая вышесказанное, мы можем условно разделить работу над проектом на следующие этапы:
Написание HTML
Сейчас при написании HTML кода уже смело можно использовать тэги и элементы разметки, которые появились вместе с стандартом HTML5, если вам необходимо поддерживать старые браузеры, то можно использовать, например, плагин html5shiv (https://github.com/afarkas/html5shiv), который обеспечивает поддержку новых стандартов в старых браузерах или библиотеку Modernizr (https://modernizr.com/) (html5shiv входит в сборку Modernizr), которая определяет возможности браузера, с помощью которого просматривается сайт.
При вёрстке сайтов в настоящее время, априори, используется блочный подход, никаких таблиц, iframe’ов и пр. Таблицы выполняют только свою прямую роль – представление информации в виде таблицы. В вёрстке таблицы используются лишь при работе с электронными письмами.
На этапе написания HTML мы, как бы, создаём скелет страницы, её абстрактную модель при помощи тэгов (языка разметки HTML). Стоит отметить, что структуру может быть проще написать, если у нас есть прототип, составленный на первом этапе или же, если мы сами, глядя на дизайн-макет, на бумаге схематично разрисовали себе все блоки страницы.
При написании разметки мы так же сразу можем прописывать элементам классы и идентификаторы.
Правила именования классов
На сегодняшний день есть один популярный подход, который касается принципов построения проекта в целом, но на данном этапе нас интересует именно именование классов. Подход называется БЭМ и расшифровывается, как Блок Элемент Модификатор.
Вкратце можно описать данный подход, как некое соглашение по именованию классов и представлению разметки страницы. Каждый элемент страницы являет собой сущность, которая может существовать независимо от контекста, тогда мы говорим о Блоке (.block) или же только в контексте другой сущности, тогда мы говорим об Элементе (.block__element). Каждый Блок или Элемент могут иметь различные модели представления: цвет, форму, прозрачность и пр. За подобные свойства будет отвечать Модификатор (.block__element_mod).
Таким образом мы представляем наш код, как композицию блоков, элементов и их модификаций.
Более полная информация о методологии: https://ru.bem.info/
SMACSS
Так же существует подход SMACSS (расшифровывается данный акроним как Scalable and Modular Architecture for CSS – Масштабируемая и Модульная Архитерктура для CSS), который разделяет понятие о классах и разметке на несколько уровней: базовый, макет, модуль, состояние, тема.
Информация о методологии и онлайн книга: 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. Популярность данного свода правил обусловлена ещё и тем, что вам не приходится при разработке заново прописывать основные свойства для базовых элементов страниц, а лишь модифицировать их по необходимости.
Так же стоит упомянуть о, так называемом, «быстром сбросе», когда мы абсолютно для всех элементов страницы с помощью селектора * прописываем свойства
Так же стоит отметить, что все размеры и отступы берутся непосредственно из дизайн-макета. Для получения данных значений нам необходимо использовать инструмент «линейка» и направляющие (речь про инcтрументарий Adobe Photoshop), а затем переносить полученные значения в код. Если мы работаем с фиксированным макетом, то значения переносятся в пикселях как есть, если же у нас «резиновый», то значения нужно переводить в проценты. Основная формула – это ширина элемента, делённая на ширину контекста (ширина содержащего блока). Например, если блок, содержащий текст и картинку имеет на макете ширину 400px, а блок с текстом в нём должен иметь ширину 340px, то в процентном выражении это будет (340 / 400) * 100%, то есть 85% будет занимать блок с текстом.
Не стоит перегружать ваши стили чрезмерной специфичностью, например, если мы хотим, чтобы ссылка внутри списка имела красный цвет, то не обязательно записывать всю линейку классов и тэгов: .main –nav ul li a, достаточно просто указать .main-nav a. Слишком «специфичные» правила делают правила контекстно зависимым и заставляют вас писать лишний код, а так же влияют на скорость отрисовки страницы, так как при разборе правил CSS парсер читает их справа налево и ему сначала, если брать описанный выше пример, нужно взять все ссылки (a), затем отброс ить все ссылки, которые не лежат в li и т.д. пока он не доберётся до содержащего класса.
Ещё один пример контекстной зависимости кода – это использование имен тэгов вместе с именами классов, например, div.block
Почему это важно? Во-первых, вы не делаете лишнюю работу, во-вторых, вам не нужно потом среди 10000 строк искать нужное правило и, наконец, чем больше строк кода, тем больше размер файла, а большие по объему файлы медленнее передаются по сети, что в свою очередь может быть причиной долгой загрузки, а излишняя специфичность причиной долгой отрисовки вашей страницы.
Если, вы используете правила, относящиеся к спецификации CSS3, то не поленитесь проверить необходимость использования браузерных префиксов на сайте http://caniuse.com.
Возвращаясь к Mobile First, стоит сказать, что при работе в данной концепции написание стилей стоит начинать с мобильной версии, а затем с помощью медиа запросов добавлять правила, которые будут работать на других разрешениях. Зачастую, при расширении правил от мобильной версии к десктопной, приходится писать гораздо меньше кода, чем при работе наоборот: от десктопной версии к мобильной.
Полезные ссылки и материалы:
Написание 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:
и т.д.
Небольшой пример с возможными способами присваивания класса (присвоение модификатора происходит при нажатии на зелёный квадрат): http://jsbin.com/.
Не рекомендуется решать задачи, которые явно относятся к уровню CSS с помощью JavaScript, пытаясь как-то выровнять объект или добавить ему стили при наведении и пр.
Опять-таки, возвращаясь к теме Mobile First, нельзя не упомянуть о 2-х концепциях, которые коррелируют с данной техникой. Progressive Enhacement и Graceful Degradation, что переводится как прогрессивное улучшение и последовательное ухудшение. Данные принципы описывают 2 разных подхода к разработке: в первом случае мы разрабатываем наш сайт, пишем скрипты с учётом старых браузеров и систем или же определяем поведение при невозможности запуска скриптов, а затем постепенно улучшаем скрипт, вводя современные функции и методы, таким образом мы получаем сайт, который будет одинаково хорошо работать в старых и новых браузерах и средах (то же касается и css).
При Graceful Degradation подход противоположный – мы разрабатываем для современных браузеров и, лишь, потом начинаем вносить доработки и изменения с учётом старых версий.
Подход Mobile First чем-то схож с Progressive Enhacement.
Проверка кода
После написания html, css и js для нашей страницы необходимо проверить всё ли сделано верно. Для этого можно использовать online средства:
Статьи с рекомендациями по написанию JS, HTML и CSS:
Средства автоматизации
На сегодняшний день практически все рутинные процессы разработки (за исключением дизайна) можно в той или иной степени автоматизировать.
960GS
Мы уже говорили об этом средстве разработки в разделе про модульные сетки и дизайн. Нужно сказать, что 960GS предлагает не только макеты для создания дизайна, но и свою систему именования классов. Используя предлагаемые классы при вёрстке и при подключении css файла системы в проект, блоки сайта будут выстроены по этой сетке, что сэкономит время на написании практически того же самого самостоятельно.
Emmet
Emmet – это средство работы с html и css (http://emmet.io/). Плагин для работы с данным средством можно установить, например, в Sublime Text, тогда у вас появляется возможность не писать громоздкие куски кода на html и css, а записывать их в строчку, раскрывая затем в полноценную разметку. Например, строка .block>ul.list>li.list__item*3, может быть раскрыта в полноценный код:
Затем вам просто необходимо вписать текстовые значения в элементы списка. То же касается и css: строка w:100px+h:150px+bgc:#ff0 раскрывается в:
Благодаря данным средствам писать код становится быстрее и приятнее, так как вы меньше времени тратите на написания закрывающих блоков, переходам по строчкам, а так же уменьшается возможность, касательно html, не закрыть тот или иной элемент разметки. В плане CSS, например, становится легче работать с браузерными префиксами, так как одна строчка с CSS3 свойством может быть раскрыта в несколько с добавлением необходимых префиксов.
Далее стоит упомянуть и о таком языке работе с шаблонами, как jade (http://jade-lang.com/). Опять-таки, с помощью jade писать html становится быстрее и удобнее, а так же появляется возможность создания переиспользуемых блоков кода и миксинов, передавая которым на вход те или иные параметры мы будет получать нужную нам разметку. Благодаря jade в проекте, касательно разметки и написания страниц, может поддерживаться модульность, а часто используемые названия и блоки кода могут выноситься в качестве переменных (названия, имена страниц и пр.) или миксинов в отдельные файлы настроек и файлы, соответственно. Для работы с jade, а точнее для преобразования написанного кода из jade в html, необходимо использовать командную строку, а так же установить на ваш компьютер платформу nodejs (https://nodejs.org/en/, http://nodejs.ru/).
Командная строка
Работа в командной строке так же может ускорить некоторые этапы работы над проектом, например, создание папок и файлов. Запустив консоль в директории проекта и набрав в ней всего лишь одну строку:
После нажатия enter мы получим папку project в которой будут находиться папки css, images, js, в папках css и js файлы styles.css и app.js, соответственно, а в корне project лежать файл index.html. Таким образом мы сэкономили время на создание папки, написание её названия, создание файлов и пр. Так же командная строка используется для работы с остальными средствами автоматизации.
Далее стоит поговорить о таком языке как 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
Данные фрэймворки уже упоминались в разделе про дизайн. Но стоит опять вспомнить о них, так как они, в определённой степени, помогают автоматизировать процесс разметки веб-страницы и работы с ней.
При подключении файлов фрэймворков в проекте мы можем использовать определённые в них классы и сниппеты разметки, которые будут работать по уже описанным правилам и иметь установленный внешний вид (например, кнопки, поля ввода, таблицы и пр.). Таким образом мы экономим время, например, на описание расположения блоков дизайна, их размеров в зависимости от разрешения, внешний вид полей формы, кнопок и их состояния.
Со всеми возможностями и примерами можно ознакомиться на соответствующих сайтах:
Надеюсь, что все описанные вещи будут полезны вам в изучении темы веб-дизайна и фронтенд разработки.