HTML и CSS
Для чего модуль
Научиться верстать не «чтобы выглядело похоже», а как инженер: с семантикой, доступностью, устойчивым layout и предсказуемым поведением в реальных данных.
Результат после прохождения
- Вы проектируете разметку как контракт для браузера, скринридеров и SEO.
- Вы выбираете Flex/Grid/адаптивные техники по задаче, а не по привычке.
- Вы управляете каскадом и специфичностью без хаотичных
!important. - Вы умеете снижать CLS и визуальные регрессии на реальных экранах.
Термины и аббревиатуры
| Термин | Коротко |
|---|---|
Semantic HTML | Смысловая разметка |
ARIA | Атрибуты доступности |
Specificity | Приоритет CSS |
Responsive | Адаптация под экраны |
CLS | Метрика визуального сдвига |
Фокус по грейдам
Junior: понимать базовые механики и объяснять их простыми примерами.Middle: применять тему в продуктовых сценариях с учетом рисков и ограничений.Senior: управлять архитектурными trade-offs, метриками и эволюцией решения.
Как работать с модулем
- Берите один реальный экран (каталог, форма, карточка) и улучшайте его по урокам.
- После каждого урока проверяйте страницу в keyboard-only режиме.
- Для каждой правки фиксируйте причину: UX, a11y, производительность, поддерживаемость.
Программа модуля
Урок 1. Семантика и доступность
Цель: строить HTML-структуру, которую корректно читают браузер, assistive-технологии и поисковики.
Семантика как структура смысла
- Используйте
header/main/nav/aside/footerдля смысловых областей. - Заголовки (
h1...h6) должны отражать иерархию контента. - Кнопка — для действия, ссылка — для навигации.
Формы и доступность
- У каждого input должен быть связанный label.
- Ошибки валидации должны быть программно связаны с полем.
- Состояния
focus,disabled,invalid— обязательная часть UX.
<label for="email">Email</label>
<input id="email" name="email" type="email" aria-describedby="email-error" />
<p id="email-error" role="alert">Введите корректный email</p>
ARIA: только когда нативного HTML недостаточно
- Сначала используйте нативные элементы.
- ARIA не исправляет плохую структуру, а дополняет корректную.
- Избыточная ARIA часто ухудшает доступность.
Где ломается в проде
- Placeholder используется как замена label.
- Модалка не держит focus trap.
- Нельзя пройти ключевой user-flow с клавиатуры.
Мини-задача (обязательная)
Возьмите форму логина и доведите до базового a11y уровня: label, ошибки, keyboard-nav, видимый focus, корректные role/aria.
Что спросит интервьюер: почему placeholder не заменяет label.
Критерий готовности по уроку: вы можете пройти критичный сценарий страницы только клавиатурой и объяснить, почему разметка семантически корректна.
Урок 2. Layout и адаптивность
Цель: собирать устойчивые layout, которые не разваливаются от реального контента.
Flexbox vs Grid
- Flex — одно измерение (ряд или колонка).
- Grid — двумерная сетка (ряды + колонки).
- В сложных экранах обычно используется комбинация Flex + Grid.
Responsive стратегии
- Mobile-first как дефолт.
min/max/clampдля гибкой типографики и размеров.- Проверка edge-cases: длинные слова, пустые блоки, сверхдлинные списки.
Типовые источники layout-багов
- Неправильные
min-widthв flex-контейнере. 100vhна mobile без учета системных UI панелей.- Неуправляемый overflow и «прыжки» интерфейса.
Мини-задача (обязательная)
Сверстайте карточный список с 3 breakpoints и проверьте: очень длинный заголовок, пустое описание, 50+ карточек.
Что спросит интервьюер: когда Grid лучше Flexbox и наоборот.
Критерий готовности по уроку: layout остается стабильным на основных ширинах и edge-cases без ad-hoc фиксов.
Урок 3. CSS-архитектура
Цель: сделать стили масштабируемыми и безопасными для командной разработки.
Каскад и специфичность
- Сначала управляйте порядком и слоем, а не повышайте специфичность.
- Используйте
:where()/слои/утилитарные классы осознанно. !important— только как исключение с документированной причиной.
Стратегии организации стилей
- Component-scoped стили для локальности.
- Design tokens для цветов/spacing/typography.
- Единые naming rules и правила композиции классов.
Антипаттерны
- Глобальные селекторы, которые задевают чужие компоненты.
- Копипаст переменных и «почти одинаковых» классов.
- Стили, завязанные на структуру DOM, которая часто меняется.
Мини-задача (обязательная)
Разберите конфликт специфичности в существующем экране
и устраните его без !important.
Добавьте короткий комментарий, почему решение устойчивое.
Что спросит интервьюер: как вы организуете CSS в команде из нескольких разработчиков.
Критерий готовности по уроку: вы можете объяснить CSS-структуру проекта так, чтобы новый разработчик не ломал соседние фичи.
Урок 4. Производительность и UX
Цель: понимать, как решения в HTML/CSS влияют на скорость и визуальную стабильность.
Влияние верстки на метрики
- Ресурсы выше fold влияют на LCP.
- Нестабильные размеры блоков и media влияют на CLS.
- Тяжелые CSS-эффекты могут ухудшать responsiveness.
Практические техники
- Резервируйте размеры для изображений/баннеров.
- Оптимизируйте font loading и fallback-шрифты.
- Проверяйте критические состояния skeleton/loading/empty.
Где ломается в проде
- Асинхронно подгружается контент без зарезервированного пространства.
- Иконки/шрифты подменяются с заметным layout shift.
- Стили «для красоты» ухудшают время интерактивности.
Мини-задача (обязательная)
Уменьшите CLS одного экрана и зафиксируйте: исходное значение, изменения, итоговое значение и визуальный эффект.
Что спросит интервьюер: какие CSS-решения чаще всего вызывают деградацию рендеринга.
Критерий готовности по уроку: вы связываете каждое изменение в верстке с метрикой и пользовательским эффектом.
Практика
- Сверстайте экран с формой и карточным списком в 3 брейкпоинтах.
- Проведите a11y-проверку: keyboard-only, roles, labels, errors, focus.
- Исправьте один конфликт специфичности без
!important. - Сделайте одну оптимизацию по CLS/LCP и зафиксируйте baseline/after.
- Закрепите в Junior JavaScript вопросах и в Песочнице.
Связь с треками и вопросами
- Треки: Junior трек, Middle трек, Senior трек.
- Вопросы: Junior JavaScript, Middle JavaScript и React.
- Повторение: 3-5 вопросов без подсказок -> сверка с модулем -> повтор через 24 часа.
Критерий готовности
Вы аргументируете HTML/CSS-решения через доступность, устойчивость layout и измеримый UX-эффект.
Артефакты после модуля
- Шаблон доступной формы (разметка + правила ошибок).
- Чек-лист адаптивной верстки и anti-patterns.
- Мини-отчет по оптимизации визуальной стабильности (CLS).
- Набор из 5 сильных ответов по HTML/CSS собеседованию.