Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Внесены изменения в ветку dev #7

Merged
merged 7 commits into from
Mar 3, 2024
Merged

Conversation

artemskakun
Copy link
Contributor

No description provided.

content.css Outdated
Comment on lines 162 to 170
.slider-scrollbar .scrollbar-thumb {
width: 20%;
}
.video-container {
margin-top: 150px;
margin-bottom: 70px;
}

video {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

по этому фрагменту кода видно что в лабораторной работе не используются средства автоматической проверки на соответствие гайдланам. Пожалуйста убедитесь в том что код отформатирован, проверен анализаторами. Подключите eslint/stylelint etc. Интегрируйте их в пайплайн проекта

content.html Outdated
Comment on lines 20 to 39
<div class="slider-wrapper">
<button id="prev-slide" class="slide-button material-symbols-rounded">
chevron_left
</button>
<ul class="image-list">
<img class="image-item" src="res/1.jpg" alt="img-1" />
<img class="image-item" src="res/2.jpg" alt="img-2" />
<img class="image-item" src="res/3.jpg" alt="img-3" />
<img class="image-item" src="res/4.jpg" alt="img-4" />
<img class="image-item" src="res/5.jpg" alt="img-5" />
<img class="image-item" src="res/6.jpg" alt="img-6" />
<img class="image-item" src="res/7.jpg" alt="img-7" />
<img class="image-item" src="res/8.jpg" alt="img-8" />
<img class="image-item" src="res/9.jpg" alt="img-9" />
<img class="image-item" src="res/10.jpg" alt="img-10" />
</ul>
<button id="next-slide" class="slide-button material-symbols-rounded">
chevron_right
</button>
</div>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

По сути, это компонент карусели, что значит что в теории ее можно вставить на страницу несколько раз. Однако сейчас это не так. Давайте сделаем карусель переиспользуемой. Для демонстрации добавьте еще одну карусель. с другими картинками, убедитесь что она тоже работает

content.html Outdated
chevron_left
</button>
<ul class="image-list">
<img class="image-item" src="res/1.jpg" alt="img-1" />

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

аlt - это не просто аттрибут, в который нужно вписать что-то уникальное. Пожалуйста, разберитесь в его назначении

package.json Outdated
"description": "[Ссылка на сайт](http://kolbaser.ru/)",
"main": "script.js",
"scripts": {
"lint:css": "stylelint --fix --ignore-path .gitignore *.css"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

пожалуйста, добавьте команду для js

script.js Outdated
const maxScrollLeft = imageList.scrollWidth - imageList.clientWidth;

scrollbarThumb.addEventListener("mousedown", (e) => {
const startX = e.clientX;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

попробуйте подебажить ваше приложение и разобраться в проблеме.
поставьте тут console.log, сделайте ресайз окна несколько раз, далее нажмите на ползунок прокрутки.
Вы заметите что обработчик вызывается очень много раз.
Когда вы найдете решение проблемы - разберитесь с тем, как вы бы сами могли заметить эту проблему.

uses: actions/checkout@v2
- name: Install dependencies
run: npm install
- name: Lint CSS

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Прекрасно; Не забудьте добавить так же линтер для js

@artemskakun
Copy link
Contributor Author

Все замечания исправил. Оставил старые картинки, но разделил их между слайдерами

</head>

<body>
<div class="hero">

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не очень понятна логика разбиения по файлам. из названия content.css складывается впечатление что его ответственность - стили для страницы content.html
Однако там определены стили для всех страниц.

Давайте наведем порядок, сделаем корректное деление

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я перепроверил код по поводу этого комментария. У меня все четко распределено, т.е. один css к одному html файлу.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, я ошибся. По всей видимости меня смутило
content.html content.css
НО
index.html style.css

index.html Outdated
<div class="hero">
<div class="container hero-container">
<div class="hero-about">
<h1 class="hero_-title">Артем</h1>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не совсем понятно по какой методологии вы пишите css классы.

На защиту предлагаю разобраться в методологии bem.

Comment on lines 1 to 9
{
"extends": ["stylelint-config-standard"],
"rules": {
"selector-pseudo-class-no-unknown": null,
"selector-type-no-unknown": null,
"property-no-unknown": null,
"at-rule-no-unknown": null
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

По этому файлу видно что он не форматировался форматером автоматически. При этом валидация на CI это не заметила. Это значит что валидация все еще настроена не до конца. Давайте это исправим

@artemskakun
Copy link
Contributor Author

Добавил форматирование с помощью Prettier без конфликта с ESLint и Stylelint

script.js Outdated
Comment on lines 90 to 94
let isListenerAdded = false

window.addEventListener('resize', () => {
isListenerAdded = false
})

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Для чего нужен этот флаг? вы его больше нигде не используете

const scrollbarThumb = sliderScrollbar.querySelector('.scrollbar-thumb')
const maxScrollLeft = imageList.scrollWidth - imageList.clientWidth

scrollbarThumb.addEventListener('mousedown', (e) => {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

При разработке компонентов/модулей, которые создают подписки на что-либо, является предоставление методов destroy/unmount/detach/dispose и тд которые выполняют отписку. Это важно, если потребуется добавлять/убирать компонент динамически. Выше есть тред где я указал на баг с ресайз. Вы пересоздавали компонент при ресайзе, а обработчики добавляли новые, не удаляя старые.
В конечном итоге вы переделали, на другой подход который я не понял, о чем оставил отдельный комментарий, но если вернуться к вашей предыдущей реализации, одно из решений - это перед новой иницилизацией - сделать destroy предыдущего объекта.

@artemskakun
Copy link
Contributor Author

  1. Отредактировал index.html по методологии БЭМ. Классы называл с учетом переиспользования и с учетом условия, что в блоках нельзя делать отступы.
  2. Добавил функцию destroyCarousel, которая удаляет предыдущий слайдер перед инициализацией нового.

@stepancar stepancar merged commit 1ad9730 into main Mar 3, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants