Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
Лендинг на тему велотренировок
- Host: GitHub
- URL: https://github.com/elrouss/competitive-project-team-1
- Owner: elrouss
- Created: 2022-08-23T17:42:07.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-02-14T11:55:12.000Z (almost 2 years ago)
- Last Synced: 2024-12-10T20:39:25.566Z (12 days ago)
- Topics: bem-methodology, css3, elrouss, html5, js-es6, splidejs, teamwork, yandex-praktikum
- Language: CSS
- Homepage:
- Size: 26.7 MB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Учебный проект: "Велотренировки" :ferris_wheel:
Оглавление
- Команда
- Описание проекта
- Стек технологий
- Установка и запуск проекта в локальном репозитории
- Процесс создания
- Функционал
- Планы по улучшению
: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. Стек технологий
: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 с подключением функционала к каждой методом forEach5. Отличие верстки карточек в галерее от макета при светлой теме
Решение (не реализовано!): дизайнер макета использовал эффект box-shadow, который вступает в конфликт со свойством overflow: hidden при верстке макета, создавая некрасивый "сплющенный" эффект (есть несколько постов с описанием этой проблемы на Stack Overflow). Отказаться от overflow: hidden не представляется возможным, поскольку здесь дизайнером запланирован слайдер (который нельзя реализовать без упомянутого CSS-свойства). Предварительно найден вариант решить проблему через абсолютное позиционирование и внутренние отступы (что, однако, нерационально); возможно, следует изменить структуру html-верстки: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: Стилизовать фокус у элементов