Портфолио
Вы находитесь на странице моего портфолио. В данном файле представлены все мои работы. Список работ будет переодически обновляться и постепенно будут выкладываться другие проекты. Ниже представлены некоторые основные требования из числа обязательных критериев работы. Используйте их для сверки и оценки моих проектов.
Одним из главных критериев моих работ является чистота кода, все сделано на технологиях HTML5, CSS3 и ES5, использовано прогрессивное улучшение. Для просмотра сайта используйте ссылки-заголовки.
Список моих проектов:
-
№1. Магазин Глейси
Сайт создан на технологиях HTML5 и CSS3. Использовано прогрессивное улучшение. Сайт сделан резиновым.
-
№2. Магазин Device
Сайт создан на технологиях HTML5 и CSS3. Использовано прогрессивное улучшение.
-
№3. Сайт приложения Пинк
Сайт создан на технологиях HTML5 и CSS3. Используется адаптивная сетка. Разметка создана по правилам БЭМ. Использован Sass, сборка произведена через Gulp. Использовано прогрессивное улучшение.
-
№4. Сервис просмотра фотографий Кекстаграм
Сервис создан по стандарту ECMAScript 5, без использования фреймворков.
Требования к проектам:
-
Требования к проекту №1, №2
-
Разметка:
- Грубые ошибки в разметке отсутствуют.
- Проект соответствует техническому заданию.
- У всех изображений в теге <img> прописан размер.
- Использовано минимально возможное количество HTML-элементов (нет лишних элементов).
- Названия полей форм привязаны к своим полям с помощью <label>.
-
Стилизация:
- В CSS отсутствует !important.
- Указаны альтернативные варианты шрифта и тип семейства в конце перечисления font-family.
- Для стилизации не использованы #id.
- При использовании блочно-строчных элементов явно указывайте вертикальное выравнивание.
- Для блока, у которого есть фоновое изображение, прописан фоновый цвет, который соответствует преобладающему цвету изображения (пока изображение не загружено, страница выглядит похоже на макет).
-
Тестирование:
- Вёрстка идентично отображается в последних версиях браузеров Chrome, Opera, Firefox, Safari, Edge, а также в Internet Explorer 11+.
- Сайт нормально смотрится на минимальной для макета ширине.
- Вёрстка проходит тест на переполнение контентом.
-
Разное:
- Единообразное написание и форматирование кода в HTML, CSS и JavaScript.
- Критическая функциональность сайта работоспособна без JavaScript (использовано прогрессивное улучшение).
- Отсутствует транслит в названиях классов, атрибутах, названиях файлов и так далее.
-
Доступность:
- У интерактивных элементов при нажатии или фокусе с клавиатуры есть активное состояние.
- Все интерактивные элементы имеют текстовое описание.
-
JavaScript:
- С помощью JavaScript реализовано открытие/закрытие окна с формой (без вспомогательных библиотек).
- С помощью JavaScript добавлена анимация формы (без вспомогательных библиотек).
-
-
Требования к проекту №3
-
Разметка:
- Грубые ошибки в разметке отсутствуют.
- Отсутствуют типовые ошибки в разметке по методологии.
- У всех векторных изображений размер прописан в теге <img>, у встроенных SVG-изображений размер прописан в теге <svg>.
- В разметке отсутствует дублирование кода для одного и того же элемента, с помощью которых элемент отображается в разных местах страницы на разных версиях: мобильной, десктопной, планшетной.
- Использовано минимально возможное количество HTML-элементов (нет лишних элементов).
- Названия полей форм привязаны к своим полям с помощью <label>.
-
Стилизация:
- В CSS отсутствует !important.
- Указаны альтернативные варианты шрифта и тип семейства в конце перечисления font-family.
- Нестандартные шрифты подключены локально. Формат шрифтов должен быть woff и woff2.
- Для стилизации не использованы #id.
- Нет глобальных стилей тегов.
- Для блока, у которого есть фоновое изображение, прописан фоновый цвет, который соответствует преобладающему цвету изображения (пока изображение не загружено, страница выглядит похоже на макет).
-
CSS-препроцессор:
- Код стилей должен быть разбит на несколько частей.
- & только для псевдоэлементов, псевдоклассов и модификаторов.
-
Адаптивность:
- Выполнена вёрстка трёх состояний каждой страницы: мобильной, планшетной и десктопной.
- В разметке есть правильный вьюпорт тег.
- Для микросеток использованы флексбоксы.
- Выполнена ретинизация растровой графики.
- Выполнено кадрирование контентных изображений.
-
Графика:
- Использована векторная графика.
-
Оптимизация:
- «Нежная» ретинизация.
- Использованы изображения в формате WebP.
- Использован векторный спрайт.
- Произведена оптимизация загрузки шрифтов.
-
Тестирование:
- Вёрстка проходит тест на переполнение контентом.
-
Сборка проекта:
- Процесс сборки личного проекта настроен с помощью Gulp.
- В результате сборки должна получаться папка build со всеми необходимыми файлами.
- Папка build со всем её содержимым не должна попадать в Гитхаб.
-
Разное:
- Вёрстка идентично отображается в последних версиях браузеров Chrome, Opera, Firefox, Safari, Edge, а также в Internet Explorer 11+.
- Единообразное написание и форматирование кода в HTML, файлах CSS-препроцессора и JavaScript (включая файлы автоматизации).
- Мобильное меню должно быть работоспособным при отключённом JavaScript.
- Отсутствует транслит в названиях классов, атрибутах, переменных CSS-препроцессора, названиях примесей и так далее.
- Проект соответствует техническому заданию.
-
Доступность:
- У интерактивных элементов при нажатии или фокусе с клавиатуры есть активное состояние.
- Все интерактивные элементы имеют текстовое описание.
-
Форматирование и внешний вид:
- Код соответствует правилам в EditorConfig.
- Код соответствует правилам в Stylelint.
-
-
Требования к проекту №4
-
Задача:
- Все обязательные пункты технического задания выполнены.
- При открытии диалогов, загрузки данных и работе с сайтом не возникает ошибок, программа не ломается и не зависает.
-
Именование:
- Название переменных, параметров, свойств и методов начинается со строчной буквы и записываются в нотации CamelCase.
- Для названия значений используются английские существительные.
- Массивы названы существительными во множественном числе.
- Название функции или метода содержит глагол.
- Названия констант (постоянных значений) написаны прописными (заглавными) буквами.
- Название конструкторов и перечислений начинается с заглавной буквы. В названии используются английские существительные. Значения перечислений объявлены как константы.
- Название методов и свойств объектов не содержит название объектов.
- Из названия обработчика события и функции-коллбэка следует, что это обработчик.
-
Форматирование и внешний вид:
- Используются обязательные блоки кода.
- Список констант идёт перед основным кодом.
- Код соответствует гайдлайнам (ESLint).
-
Мусор:
- В коде проекта нет файлов, модулей и частей кода, которые не используются, включая, закомментированные участки кода.
- В коде нет заранее недостижимых участков кода.
-
Корректность:
- Константы нигде в коде не переопределяются.
- Включён строгий режим (ESLint).
- Используются строгие сравнения вместо нестрогих (ESLint).
- В коде не используются зарезервированные слова в качестве имён переменных и свойств.
- Нельзя пользоваться глобальной переменной event.
-
Модульность:
- Все файлы JS представляют собой отдельные модули в IIFE.
- Все значения, используемые только внутри модулей ограничены по видимости.
- В случае, если одинаковый код повторяется в нескольких модулях, повторяющаяся часть вынесена в отдельный модуль.
- При экспорте из одного модуля нескольких значений используется пространство имён.
-
Универсальность:
- Код является кроссбраузерным и не вызывает ошибок в разных браузерах и разных операционных системах.
-
Оптимальность:
- Множественные DOM-операции производятся на элементах, которые не добавлены в DOM.
- Константы, используемые внутри функций создаются вне функций и используются повторно через замыкания.
- Поиск элементов по селекторам делается минимальное количество раз, после этого ссылки на элементы сохраняются.
- Массивы и объекты, содержимое которых вычисляется, собираются один раз, а после этого только переиспользуются.
- Изменения применяются точечно.
-
Безопасность:
- Обработчики события добавляются и удаляются своевременно.
- Для вставки пользовательских строк (имён, фамилий и т.д.) использован textContent.
-
Единообразие:
- Все функции объявлены единообразно.
- Используется единый стиль именования переменных.
- При использовании встроенного API, который поддерживает несколько вариантов использования, используется один способ.
-
Сложность. Читаемость:
- Для каждого события используется отдельный обработчик.
- Длинные функции и методы разбиты на несколько небольших.
-