Skip to content

feat: add Product-section, Team-section, Process-section and fix comm… - #2

Open
oostap1985 wants to merge 3 commits into
mainfrom
feat/68336360_main-page
Open

oostap1985 wants to merge 3 commits into
mainfrom
feat/68336360_main-page

Conversation

@oostap1985

Copy link
Copy Markdown
Collaborator

Привет.
Это еще не конечный результат. Посмотри, пожалуйста, на анимацию в Process секции, это примерно то, что вы хотели?

@oostap1985
oostap1985 requested a review from mr150 August 30, 2026 17:46

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Не очевидное название файла, надо более понятное

Comment thread src/_data/product.json Outdated
@@ -0,0 +1,14 @@
[
{
"img": "open_source",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Разная нотация названия переменных. Лучше тогда уж везде kebab-case

Comment thread src/_data/team.json Outdated
"img": "photo1",
"profession": "инженер программист, изобретатель",
"description": "Имеет профессиональный опыт более десяти лет. Работал фронтенд и бэкенд-разработчиком, а также занимался инфраструктурой и внедрением инженерных практик. Создатель open source фреймворка mlut, аналога Tailwind для вёрстки кастомных сайтов и креативов.",
"connection": "yes"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Это ведь boolean, зачем строка

Comment thread src/_data/team.json Outdated
"name": "Олег Остапчук",
"img": "photo4",
"profession": "Разработчик",
"description": "Имеет профессиональный опыт более десяти лет. Работал фронтенд и бэкенд-разработчиком, а также занимался инфраструктурой и внедрением инженерных практик. Создатель open source фреймворка mlut, аналога Tailwind для вёрстки кастомных сайтов и креативов.",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Про себя тоже релевантный текст напиши, потом отредактируем

@@ -0,0 +1,11 @@
<div class="D-f Fld-c Gap2u">
<div class="Bd1;s;$accent100 Bdrd2u Ov-h W242 md_W326 H144 md_H228">

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Mnh, вместо H и размеры лучше в u - pixel perfect не нужен


<profile-card class="D-f Fld-c Ai-c Jc-sb Gap3u no-js W242 Mnh375 lg_W305 lg_Mnh390 xxl_W350">
<div class="Ps D-f Fld-c Gap1u">
<div class="Bdrd100p Ov-h Ojf Ojp-c -Sz100 lg_-Sz140">

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

object-fit разве не на сам img вешается?

Comment thread src/assets/script/process-scroll.js
Comment thread src/assets/script/profile-card.js Outdated
const btnText = this.button.textContent;
const newText = btnText === 'Свернуть' ? 'Подробнее' : 'Свернуть';
this.button.textContent = newText;
this.classList.toggle('no-js');

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Почему no-js снимается при переключении, а не при инициализации компонента?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Я хотел реализовать удаление стилей при клике на кнопку. Если логически 'no-js' не подходит, написал кастомное состояние 'expanded'. Если не правильно, исправлю.

Comment thread src/index.ejs
%>

<%# Process-section %>
<process-scroll class="D-f Fld-c Gap2.5u W100p P5u;4u md_Gap10u md_P0;0;0;15u xl_P0;0;0;20u xxl_P0;0;0;25u">

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Почему здесь однотипный код не в цикле?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Сейчас композиция заканчивается обрубком. Лучше, чтобы хотя бы хвост был, как перед концом пункта

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

И на этом этапе не требовалось делать анимацию линий, только скролл. Такое надо на webgl, по идее, потому что на CSS может тормозить

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Полностью переделал эту секцию.

@@ -1,38 +1,30 @@
<%
const css = {
const stylesCss = {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Все еще не исправлено. Если словарь заканчивается на css - значит это словарь алиасов. А тут совершенно разные по смыслу значения лежат

Comment thread src/index.ejs

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

На мобильном в hero секции нет смысла декоратвное изображение показывать

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

На квадратном мониторе, в секции "услуги" лучше 2 равные колоники, а то сейчас странно выглядит, что одна шире

Comment thread src/index.ejs
</ul>
</section>

<%# Product-section %>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

На десктопе не соответствует макету

@oostap1985
oostap1985 requested a review from mr150 September 12, 2026 12:28
"name": "first_step",
"title": "Анализ на начальном этапе",
"text": "Проводим аудит текущего положения дел по чеклисту продукта на ранней стадии",
"img": [

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Если анимация линий пока не планируется, то зачем их отдельными img делать?

<div class="Bd1;s;$accent100 Bdrd2u Ov-h W61u H36u md_W77u md_H57u xxl_W104u xxl_H70u">
<img src="/assets/img/product/<%= it.img %>.png" class="-Sz100p Ojf-f"/>
</div>
<a href="<%= it.url %>" target="_blank" class="D-f Ai-c Gap3u As-fs Fns4u xxl_Fns5u -All-sr C-$accent900 md_C-$brand_h C-$brand500_a -Ts">

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Зачем тут -All-sr? Он для списков, как правило или для нативных элементов, где много браузерных стилей

@@ -0,0 +1,20 @@
<%
const question = {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Если это словарь с алиасами, то имя должно быть стандартное (с ...css). Да и если 1 алиас, то лучше просто переменную, без словаря

<div class="D-f Fld-c Ai-c Jc-fs Gap4u Flg1 W100p Fns4u Lnh-n Fnst-n C-$accent900">
<span class="Fnw700 lg_Fns6u"><%= it.name %></span>
<span class="Txa-c xxl_Fns4.5u"><%= it.profession %></span>
<div class="Flg1 W100p :-expanded_H20u xxl_:-expanded_H18u :-expanded_Ovy-h :-expanded_-Gdl0d,$core100;5p,$accent900;100p :-expanded_Bgcl-t :-expanded_C-tp :-expanded_gradient-text">

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Зачем кастомный стейт, если можно контекст использовать?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Убрал стейт. Сделал контекст (реализовал как "бургер" в header на мобильном), вместо кнопки теперь checkbox и два label. Кастомный компонент теперь не нужен, удалил.

</div>
</div>
<div class="D-f Fld-c Ai-c Jc-fs Gap4u Flg1 W100p Fns4u Lnh-n Fnst-n C-$accent900">
<span class="Fnw700 lg_Fns6u"><%= it.name %></span>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Почему не заголовок?

Comment thread src/_includes/footer.ejs
<% } %>
</ul>
</div>
<nav class=" lg_Od0">

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

nav лучше только 1 делать на странице. Он вроде был у нас в хедере


toggleCard() {
const btnText = this.button.textContent;
const newText = btnText === 'Свернуть' ? 'Подробнее' : 'Свернуть';

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Текстовые литералы в коде не оставляем. Лучше делать словарь с ними, в статическом свойстве, например

this.prevBtn = this.querySelector('.prev');
this.nextBtn = this.querySelector('.next');

if (!this.track || !this.prevBtn || !this.nextBtn) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Снова бесполезные проверки


_updateButtonsVisibility() {
const maxScrollLeft = this.track.scrollWidth - this.track.clientWidth;
// this.prevBtn.classList.toggle('O0', this.track.scrollLeft <= 0);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Комменты не оставляем

logo.style.visibility = 'hidden';
}, 200);
if (entry.target === heroSection) {
visibility.hero = entry.isIntersecting;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

А почему не использовать сразу просто 1 флаг anyVisible?

--ml-gradient60: rgba(239, 67, 139, 0.20);
--ml-gradient65: rgba(239, 67, 139, 0.50);

scroll-padding-top: var(--ml-headerH);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Для всех ссылок - выглядит опасно

}

scrollByCard(direction) {
const slide = this.track.querySelector('.scroll-slide');

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Это каждый раз надо делать?

}

const gap = parseFloat(getComputedStyle(this.track).columnGap || 0);
const cardWidth = slide.getBoundingClientRect().width;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

И это? Когда так берем размеры - страница пересчитывается

Comment thread src/index.ejs
};
%>
<%# start-section %>
<section class="Ps W100p D-f Fld-c Ai-c P5u;0;10u md_P10u;0;15u xxl_P20u;0;20u">

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

В section обязательно должен быть h-заголовок. Если по видимому контенту ничего не подходит, то надо делать скрытый

active-css="Bgc-$brand100"
>
<div class="D-f Ai-c Jc-sb Gap2u W100p">
<span class="<%= question.step %>"><%= it.title %></span>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Заголовок?

Comment thread src/index.ejs
blurV: 'Ps-a W12p H100p T0 Bgc-$decor140 Ft -Blr35'
};
%>
<%# start-section %>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Некорректное название секции, пусть и это и коммент

Comment thread src/index.ejs


<%
const startStyles = {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Некорректный нейминг словарей с алиасами

>
<div class="D-f Ai-c Jc-sb Gap2u W100p">
<span class="<%= question.step %>"><%= it.title %></span>
<button class="btn arrow-btn Fls0">

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Надо сделать, чтобы для открытия/закрытия можно было нажимать на весь компонент, а не только на кнопку

Comment thread src/layouts/base.ejs

<!DOCTYPE html>
<html lang="en">
<html lang="en" class="Scb-s -HeaderH10.5u md_-HeaderH23u">

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
<html lang="en" class="Scb-s -HeaderH10.5u md_-HeaderH23u">
<html lang="ru" class="Scb-s -HeaderH10.5u md_-HeaderH23u">

Comment thread src/index.ejs
<div class="<%= startStyles.blurG %> B-1p md_B-4p"></div>
<div class="D-n md_D <%= startStyles.blurV %> L0"></div>
<div class="D-n md_D <%= startStyles.blurV %> R0"></div>
<img src="assets/img/rocket2.svg" class="md_D-n Mt2u W100p H-a"/>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Правильная адаптивность изображений через <picture> делается

Comment thread src/index.ejs
</section>

<%# Process-section %>
<process-scroll class="D-f Fld-c Gap2.5u W100p P5u;4u md_Gap10u md_P0;0;0;15u xl_P0;0;0;20u xxl_P0;0;0;25u">

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Возможно специфика моего тачпада, но как будто через раз захватывает скролл, особенно если скролить наверх

"link": "https://t.me/htmlacademy/7915"
},
{
"img": "coding-on-mlut",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Это изображение в списке ломается, в плане соотношения сторон. object-fit: cover - есть?

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