🔒 Ты не вошёл(вошла) в аккаунт — прогресс, работы и результаты теста не сохраняются. Что недоступно?

✅ Без входа можно

  • читать все 33 занятия, смотреть слайды и шпаргалку;
  • пробовать код в редакторе и песочнице.

⛔ Без входа нельзя

  • сохранять работы — черновик живёт только в этом браузере и пропадёт при очистке истории, в режиме инкогнито или на другом устройстве;
  • отмечать пройденные занятия и видеть свой прогресс;
  • выбрать тему итогового проекта и отмечать чек-лист;
  • отправить итоговый тест и сохранить результат.
Модуль 3. Проектная работа Занятие 28

Проект: стилизация

Сегодня мы сделаем сайт по-настоящему красивым: единый стиль, ровная раскладка и приятные детали.

Изучаем: Flexbox, Grid, оформление
Результат: Улучшаем дизайн

🎬 Слайды для урока Листай стрелками ← →, F — весь экран, N — подсказки

👀 Сегодня сделаем вот такое

Показать код примера
<div class="container">
  <h1>Мои любимые игры</h1>
  <div class="grid">
    <article class="card"><h3>Minecraft</h3><p>Строю города</p><a class="btn" href="#">Подробнее</a></article>
    <article class="card"><h3>Шахматы</h3><p>Думаю наперёд</p><a class="btn" href="#">Подробнее</a></article>
    <article class="card"><h3>Футбол</h3><p>Играю с друзьями</p><a class="btn" href="#">Подробнее</a></article>
  </div>
</div>
:root {
  --main: #6c5ce7;
  --bg: #f5f6fa;
  --text: #2d3436;
  --space: 16px;
}
body { margin: 0; background: var(--bg); color: var(--text); font-family: sans-serif; }
.container { max-width: 1000px; margin: 0 auto; padding: var(--space); }
h1 { color: var(--main); }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--space); }
.card { background: white; padding: var(--space); border-radius: 16px; box-shadow: 0 4px 12px rgba(0,0,0,.08); }
.btn {
  display: inline-block; padding: 8px var(--space); border-radius: 8px;
  background: var(--main); color: white; text-decoration: none; transition: .2s;
}
.btn:hover { opacity: .85; transform: translateY(-2px); }

💡 Объяснение

Что делает дизайн хорошим

Красивый сайт — это не «много эффектов». Профессиональный вид дают четыре простых принципа: единство, порядок, контраст и воздух. Сегодня мы пройдёмся по своему сайту и применим каждый из них.

1. Единство: CSS-переменные

Одинаковые элементы должны выглядеть одинаково на всех страницах: один оттенок синего, одни кнопки, одни скругления. Чтобы не держать цвета в голове, их выносят в CSS-переменные:

:root {
  --main: #6c5ce7;
  --accent: #fd79a8;
  --bg: #f5f6fa;
  --text: #2d3436;
  --radius: 16px;
  --space: 16px;
}

h1 { color: var(--main); }
.btn { background: var(--accent); border-radius: var(--radius); }
  • Переменные объявляют в :root — это корень документа, переменные будут доступны везде.
  • Имя начинается с двух дефисов: --main.
  • Используются через var(--main).

Главная польза: захотел поменять основной цвет сайта — меняешь одну строку, и он меняется на всех страницах.

2. Порядок: выравнивание и сетка

  • Никаких элементов «на глазок». Всё выравнивается по общему контейнеру и сеткам.
  • Ряды — Flexbox, плитки — Grid.
  • Левые края текстов, карточек и заголовков должны совпадать — глаз замечает даже небольшой «разнобой».

3. Воздух: система отступов

Новички часто «прижимают» всё друг к другу. Свободное пространство — не пустота, а важная часть дизайна: оно группирует элементы и даёт глазам отдохнуть.

  • Выбери шаг отступов и используй только кратные ему значения: 8, 16, 24, 32, 48px.
  • Правило близости: связанные элементы ближе друг к другу, несвязанные — дальше. Заголовок карточки ближе к её тексту, чем к соседней карточке.
  • Между крупными секциями страницы — большие отступы (48–80px).

4. Контраст и иерархия

  • Тёмный текст на светлом фоне. Светло-серый текст на белом — плохо читается.
  • Главное выделяется: заголовок заметно крупнее текста, кнопка ярче остального.
  • На экране должно быть понятно, куда смотреть первым делом. Если выделено всё — не выделено ничего.

Компоненты

Компонент — повторяющийся элемент интерфейса с единым стилем: кнопка, карточка, заголовок секции. Опиши их один раз классами в CSS и используй на всех страницах:

.btn { … }            /* все кнопки */
.card { … }           /* все карточки */
.section-title { … }  /* заголовки секций */

Живые элементы

Добавь всем кнопкам и ссылкам :hover с transition, а карточкам — лёгкий подъём при наведении. Это делает сайт «отзывчивым». Не забудь :focus-visible для клавиатуры.

Для сильных: тёмная тема

Благодаря переменным тёмная тема делается в несколько строк — браузер сам сообщит, что у человека включена тёмная тема в системе:

@media (prefers-color-scheme: dark) {
  :root {
    --bg: #1e1e2e;
    --text: #f5f6fa;
  }
}

Как оценить свой дизайн

  1. Отойди от экрана на два шага или прищурься — видно ли, где главное?
  2. Сравни две страницы подряд — выглядят ли они как части одного сайта?
  3. Посчитай, сколько разных цветов и шрифтов используется. Больше 3 цветов и 2 шрифтов — повод упростить.
  4. Попроси близких за 10 секунд сказать, о чём сайт и куда нажать.

Частые ошибки

  • У каждой кнопки свой цвет и размер.
  • Отступы 7px, 13px, 22px — хаос вместо системы.
  • Слишком много эффектов: тени, градиенты и анимации везде.
  • Цвета переменных объявлены, но в CSS всё равно написаны HEX-коды.

Проверь себя

  1. Как объявить и использовать CSS-переменную?
  2. Что такое правило близости?
  3. Почему «выделено всё» — это плохо?

⌨️ Практика

  1. Вынеси цвета сайта в CSS-переменные.
  2. Сделай общий контейнер .container шириной не более 1000px по центру.
  3. Выстрой карточки через Grid или Flexbox.
  4. Сделай единый стиль кнопок и ссылок с эффектом :hover.
  5. Покажи сайт близким, попроси одно замечание по дизайну и исправь его.

🧪 Редактор

🪞 Рефлексия

  • Что нового я сегодня узнал(а)?
  • Что получилось лучше всего?
  • Где было трудно и что поможет в следующий раз?

🔒 Отметить занятие пройденным можно только после входа. Без аккаунта сайт не запомнит, до какого занятия ты дошёл(дошла). Регистрация · Вход