Учебный проект сайта для изучения HTML, CSS, JavaScript:
Для реализации адаптивности использованы медиазапросы. Применены технологии флексбокс, БЭМ с файловой структурой nested, CSS calc. Реализован модальный диалог с формой редактирования профиля.
Реализовано открытие и закрытие модальных окон (в том числе отредактированы стили CSS для плавного перехода) по клику на соответствующие кнопки методом addEventListener
.
Добавлены функции редактирования профиля и добавления новых карточек.
Первые шесть карточек загружаются с помощью Javascript из предустановленного массива и были удалены из вёрстки.
Новая карточка создаётся путём клонирования шаблона и добавляется в начало коллекции.
Обработка по умолчанию события submit отключена с помощью метода evt.preventDefault()
.
Фотографии увеличиваются в размере при клике на них.
Добавлена возможность лайкать и удалять карточки.
Реализована валидация форм с помощью регулярных выражений для текстовых полей и встроенной браузерной валидации для url-поля. Добавлена возможность закрывать модальные окна с помощью клавиши Esc и кликом на оверлей. Изменена навигация по проекту - js код поделён на модули, сборку кода выполняет Webpack. Настроена минификация и транспиляция JS бабелем и минификация CSS с автоматическим добавлением вендорных префиксов postcss.
На этом этапе мы изучили технику парного программирования. Этап выполнен совместно с Aria1ink.
В рамках портирования проекта были созданы ES6-классы: Api.js, Сard.js , FormValidator.js, Section.js , Popup.js , PopupWithForm.js , PopupWithImage.js , UserInfo.js
.
Каждый класс выполняет строго одну задачу и для описания взаимодействия между классами используется слабое связываение.
- В классе
Api
описаны запросы к серверу. - Класс
Card
создает карточку с изображением. - Класс
FormValidator
настраивает валидацию полей формы: проверяет валидность поля, изменяет состояние кнопкиsubmit
, устанавливает обработчики. - Класс
Section
отвечает за отрисовку карточек на странице. - Класс
Popup
отвечает за открытие и закрытие попапа, по клику на иконку закрытия, оверлею, а также по клавише Esc. - Классы
PopupWithForm
иPopupWithImage
наследуются от классаPopup
.PopupWithForm
собирает данные всех полей формы и добавляет обработчикsubmit
формы.PopupWithImage
вставляет в попап изображение с подписью. - Класс
UserInfo
отвечает за управление информацией о пользователе на странице.