Skip to content

hw1#1

Open
emworks wants to merge 3 commits intomainfrom
feature/hw1
Open

hw1#1
emworks wants to merge 3 commits intomainfrom
feature/hw1

Conversation

@emworks
Copy link
Owner

@emworks emworks commented Oct 8, 2025

Задача

https://github.com/two-devs-teaching/hse-web-programming-2025/blob/main/hw/hw-1-html-css/README.md

Что сделано

Свёрстана главная страница сервиса по макету.

На реализованной странице пользователь может просматривать список фильмов и краткую информацию о них.

Макет реализован мной ранее в рамках курса UCD (первый год магистратуры) и содержит дизайн нескольких страниц гипотетического сервиса. Присутствует UI Kit с описанием компонентов, типографики и т.д. – он использовался для инициализации CSS-переменных. Кроме того, в макете есть интерактивный прототип, который учитывался при имплементации UX, в частности, для создания анимации.

Демо

https://emworks.github.io/flickmate/feature/hw1/

image

Чеклист

  • Задание: взять готовый макет веб-приложения в Figma (или отыскать в Figma Community) и сверстать его, используя HTML и CSS.

Критерии выполненного задания:

  • Есть ссылка на вёрстку и исходные макеты
  • Используются семантические теги
  • В стилях использованы CSS-переменные
  • Для задания стилей используются преимущественно классы
  • Классы поименованы в соответствие с бизнес-значением элемента
  • Есть позиционирование элементов с помощью display: flex / display: grid
  • Вёрстка соответствует выбранным макетам

Задание со звёздочкой:

  • Вёрстка адаптирована под десктоп, планшет и мобильные устройства.

Дополнительно (не было в задании):

  • Настроен posthtml-expressions для возможности простой шаблонизации. Сделано отдельным коммитом, можно ревертнуть, если будет мешать.
  • Настроена отдельная ветка для демо (через GitHub Pages).

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Flickmate</title>
<link rel="icon" href="assets/favicon.ico">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
Copy link

Choose a reason for hiding this comment

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

Корректное подключение стиля

</head>
<body>
Flickmate is coming soon...
<div class="page-wrapper">
Copy link

Choose a reason for hiding this comment

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

Хорошее оформление структуры страницы, page-wrapper делает макет гибким

<body>
Flickmate is coming soon...
<div class="page-wrapper">
<header class="main-header">
Copy link

Choose a reason for hiding this comment

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

Использован семантический header, что улучшает читаемость и SEO

<header class="main-header">
<h1>Каталог фильмов</h1>
</header>
<main class="content-wrapper">
Copy link

Choose a reason for hiding this comment

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

Разделение на main и section логичное, структура читается легко

src/index.html Outdated
<main class="content-wrapper">
<section class="movie-list">
<article class="movie-item">
<a href="#">
Copy link

Choose a reason for hiding this comment

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

Для a href="#" можно добавить title или aria-label, чтобы улучшить доступность

Copy link
Owner Author

@emworks emworks Nov 9, 2025

Choose a reason for hiding this comment

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

Good point в общем случае, но здесь немного другая ситуация. Внутри <a> находится текст – скринридер поймёт это и озвучит его содержимое.

Если бы внутри ссылки не было текста (например, это была бы просто кликабельная картинка), то можно было бы добавить aria-label, но в данном случае это будет лишним.

margin: 0 auto;
}

.movie-item a {
Copy link

Choose a reason for hiding this comment

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

Можно добавить cursor: pointer, чтобы при наведении было понятно, что элемент кликабелен

Copy link
Owner Author

@emworks emworks Nov 9, 2025

Choose a reason for hiding this comment

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

Логично, но браузеры делают это за нас: если у <a> есть href, то такой элемент считается интерактивным, и к нему применяются нужные стили. См. демо или скриншот:

Снимок экрана 2025-11-09 в 13 52 25

flex-shrink: 0;
}

.movie-item-poster img {
Copy link

Choose a reason for hiding this comment

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

Настройки изображений корректные, они не растягиваются и сохраняют пропорции

color: var(--color-base);
}

@media (max-width: 1024px) {
Copy link

Choose a reason for hiding this comment

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

Адаптивность работает хорошо, соответствует заданию

@@ -0,0 +1,5 @@
.truncate {
Copy link

Choose a reason for hiding this comment

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

Класс truncate делает всё, что нужно, и аккуратно обрезает длинные строки

Copy link

Choose a reason for hiding this comment

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

Сделаю саммари здесь :) В целом, мне сложно выделить какие-либо критические моменты и дать рекомендации: код выполнен грамотно и структурировано. Если разобрать отдельно по критериям, то картина следующая:

Читаемость и понятность кода.

  • Код читается очень легко: структура HTML логична, есть чёткое разделение на header, main, section и article
  • Названия классов понятные, например, movie-item, movie-item-desc, movie-item-title сразу объясняют, что делает блок
  • CSS организован аккуратно, в каждом файле отдельная смысловая часть, что улучшает восприятие и редактирование

Отсутствие ошибок

  • Код не содержит критических ошибок, все теги корректно закрыты, структура документа правильная
  • Я не поняла, почему в начале нет !DOCTYPE html и lang="ru", но может быть так надо...

Модульность и переиспользуемость кода

  • Проект разделён на отдельные CSS-файлы: common.css, movie-list.css, utils.css. Каждый файл отвечает за свою часть логики: базовые стили, сетка фильмов и утилиты

Соответствие стандартам форматирования и кодирования

  • Код соответствует стандартам: используются CSS-переменные, адаптивные единицы, аккуратное форматирование
  • Шрифты подключены корректно через Google Fonts, структура отступов единообразна
  • Можно улучшить ещё чуть-чуть, добавив cursor: pointer для кликабельных элементов и color-scheme: dark в :root для поддержки системной темы, но это так, ради предложения

Соответствие требованиям задания

  • Есть ссылка на вёрстку и исходные макеты в Figma
  • Используются семантические теги, например, header, main, section, article
  • В стилях использованы CSS-переменные -- заданы в :root
  • Для задания стилей используются преимущественно классы. Стили везде применяются через классы, например, .movie-item, .movie-list, .main-header и др., без жёсткой привязки к тегам
  • Классы проименованы в соответствие с бизнес-значением элемента. Имена классов отражают смысл: movie-item, movie-item-title, movie-item-desc -- это именно элементы фильма, а не технические названия вроде box1 или col2
  • Есть позиционирование элементов с помощью display: flex / display: grid. Используется grid для сетки фильмов и flex для внутренней компоновки карточек
  • Вёрстка соответствует выбранным макетам
  • Вёрстка адаптирована под десктоп, планшет и мобильные устройства через медиазапросы для 1024px и 600px

@annamotoshkina
Copy link

  1. Свёрстана только одна страница, хотелось бы ещё несколько
  2. Есть темлейтер <3
  3. Есть адаптация под разные экраны <3
  4. Использован grid <3
  5. Разумное использование css-переменных <3

Есть ссылка на вёрстку и исходные макеты [ok]
Используются семантические теги [ok]
В стилях использованы CSS-переменные [ok]
Для задания стилей используются преимущественно классы [ok]
Классы поименованы в соответствие с бизнес-значением элемента [ok]
Есть позиционирование элементов с помощью display: flex / display: grid [ok]
Вёрстка соответствует выбранным макетам [ok]
Итого: 9/10

@emworks
Copy link
Owner Author

emworks commented Nov 27, 2025

  1. Свёрстана только одна страница, хотелось бы ещё несколько

Оставлю комментарий для себя.

В требованиях не был указан объем работы. Все подзадачи выполнены в полном объеме, включая задание со звёздочкой. Добавлен шаблонизатор. Технически работа выполнена аккуратно и чисто и содержит всё необходимое для оценки навыков вёрстки, по крайней мере, обратное не сказано. С моей точки зрения, суммарно это выглядит как значительно выше ожиданий (10/10).

@emworks emworks closed this Nov 28, 2025
@emworks emworks reopened this Nov 28, 2025
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.

3 participants