Учебный проект сайта для изучения 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отвечает за управление информацией о пользователе на странице.