Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/elrouss/competitive-project-team-1

Лендинг на тему велотренировок
https://github.com/elrouss/competitive-project-team-1

bem-methodology css3 elrouss html5 js-es6 splidejs teamwork yandex-praktikum

Last synced: 1 day ago
JSON representation

Лендинг на тему велотренировок

Awesome Lists containing this project

README

        

Учебный проект: "Велотренировки" :ferris_wheel:



Гиф с демонстрацией функционала приложения

Оглавление


  1. Команда

  2. Описание проекта

  3. Стек технологий

  4. Установка и запуск проекта в локальном репозитории

  5. Процесс создания


  6. Функционал

  7. Планы по улучшению

:technologist: 1. Команда


:biking_woman: Софья Пешехонова


:biking_man: Борис Зашляпин

(к оглавлению)

:page_with_curl: 2. Описание проекта


Проектная работа выполнена в рамках командного соревнования студентов "Яндекс Практикума". Проект представляет собой создание одностраничного сайта по макету, описывающего различные виды велотренировок со ссылками на полезные сервисы для составления индивидуального тренировочного плана велосипедиста. Он корректно отображается на любых устройствах с разрешением экрана от 320px до 1440px и выше

:link: Ссылка на макет: https://www.figma.com/file/G3UWFlQmNtNs67751YiDH2/Month-of-Landings_external-link?node-id=2%3A7


:link: Ссылка на проект: https://elrouss.github.io/competitive-project-team-1/


* - Проект не входит в основную образовательную программу и является дополнительным

(к оглавлению)

:hammer_and_wrench: 3. Стек технологий



Иконка JavaScript
Иконка CSS3
Иконка HTML5

(к оглавлению)

:computer: 4. Установка и запуск проекта в локальном репозитории


1. `git clone https://elrouss.github.io/competitive-project-team-1.git` - клонировать репозиторий (с использованием HTTPS) на свое устройство
2. `Go live` - запустить команду расширения `Live Server` в `VS Code`

(к оглавлению)

:chart_with_upwards_trend: 5. Процесс создания


Главной особенностью этого проекта является приобретение опыта работы в команде. В течение 72 часов, выделенных на конкурс, было сверстано 7 блоков на десктоп и отчасти - мобильные устройства. Уже по завершении конкурса проект был доработан в общих чертах до конца: секции доверстаны на все разрешения, часть компонентов переписана при помощи темплейтов на JS, реализован функционал страницы (см.: п. 6)

(к оглавлению)

:exploding_head: 5.1 Основные задачи, проблемы и их решение


1. Вставка темплейта в слайдер, подключенный с помощью библиотеки SplideJS


Решение: при вставке карточек темплейтом слайдер отрисовывался, но не был кликабельным. Это оказалось связано с последовательностью подключения скриптов: изначально SplideJS задействовал свои ресурсы, находил элементы по DOM и лишь затем происходила отрисовка карточек. Для корректной работы слайдера был изменен порядок скриптов в файле html, а также вынесена функция рендера карточек из window.onload(). Вопрос задавался на Stack Overflow, но решение проблемы было в итоге найдено нами самостоятельно

2. Слайдер с меняющимся текстом при клике на кнопку


Решение: пожалуй, одна из самых простых задач, для которой была написана логика со счетчиком, реагирующим изменением текста и векторной иконки на события клика и нажатий клавиш со стрелками влево или вправо. Так, 1 равен тексту 1-го слайда, 2 и 3 - соответственно 2-го и 3-го. При движении вправо счетчик увеличивается на единицу, при движении влево - уменьшается; в случае выхода за пределы количества слайдов он сбрасывается до 1 и начинает свой отсчет сначала. Для того чтобы логика оставалась рабочей, отключены свайпы на десктопном и мобильном разрешении

3. "Дергающаяся" верстка при переключении блоков карточек в галерее по табам


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

4. Изменение позиции переключателя светлой/темной темы на десктопных и мобильных устройствах


Решение: дублирование верстки свитчера в html в гамбургере-меню ломало функциональность кнопки в подвале на десктопном разрешении. Это объяснялось тем, что querySelector находил первый селектор кнопки (CSS-свойство display: none только скрывает элемент в потоке документа, но не исключает его из DOM). Выходом из этой ситуации стал одновременный поиск селекторов обеих кнопок методом querySelectorAll с подключением функционала к каждой методом forEach

5. Отличие верстки карточек в галерее от макета при светлой теме


Решение (не реализовано!): дизайнер макета использовал эффект box-shadow, который вступает в конфликт со свойством overflow: hidden при верстке макета, создавая некрасивый "сплющенный" эффект (есть несколько постов с описанием этой проблемы на Stack Overflow). Отказаться от overflow: hidden не представляется возможным, поскольку здесь дизайнером запланирован слайдер (который нельзя реализовать без упомянутого CSS-свойства). Предварительно найден вариант решить проблему через абсолютное позиционирование и внутренние отступы (что, однако, нерационально); возможно, следует изменить структуру html-верстки

(к оглавлению)

:man_mechanic: 6. Функционал

:white_check_mark: Адаптивный интерфейс

Гиф с демонстрацией адаптивного интерфейса сайта

:white_check_mark: Открытие и закрытие модального окна (на мобильных устройствах)

Гиф с демонстрацией открытия и закрытия модального окна (на мобильных устройствах)

:white_check_mark: Слайдер с переключением текста

Гиф с демонстрацией слайдера с переключением текста

:white_check_mark: Выпадающее меню с переключением карточек и слайдером (для мобильных устройств, планшетов и ноутбуков)

Гиф с демонстрацией выпадающего меню с переключением карточек и слайдером

:white_check_mark: Переключатель светлой/темной темы

Гиф с демонстрацией переключателя светлой/темной темы

(к оглавлению)

:balance_scale: 7. Планы по улучшению


:o: Оптимизировать программный код

:o: Оптимизировать сайт для людей с ограниченными возможностями (напр, label для поля формы)

:o: Сверстать и заменить дефолтное окно выпадающего меню на мобильных устройствах и планшетах

:o: Написать логику валидации формы

:o: Убрать фокус у скрытых элементов и исчезновение кнопки сабмита формы при перемещении по странице клавишей Tab

:o: Стилизовать фокус у элементов

(к оглавлению)



Снимок экрана 2023-01-08 в 04 05 39


Снимок экрана 2023-01-08 в 04 09 50