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

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

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

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

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

Проект: интерактив

Сегодня мы добавим на сайт полезный интерактивный блок: форму отзыва, галерею или раздел «Вопрос–ответ».

Изучаем: Форма, галерея или контакты
Результат: Добавляем полезный блок

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

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

Показать код примера
<section class="faq">
  <h2>Вопрос — ответ</h2>
  <details>
    <summary>Сколько спит кот?</summary>
    <p>До 16 часов в день!</p>
  </details>
  <details>
    <summary>Почему кот мурчит?</summary>
    <p>Так он показывает, что ему хорошо и спокойно.</p>
  </details>
</section>
body { font-family: sans-serif; background: #f5f6fa; padding: 1rem; }
.faq { max-width: 520px; margin: 0 auto; }
details {
  background: white; margin-bottom: .75rem; padding: .75rem 1rem;
  border-radius: 12px; box-shadow: 0 2px 8px rgba(0,0,0,.06);
}
summary { cursor: pointer; font-weight: bold; }
details[open] { border-left: 5px solid #fd79a8; }
details[open] summary { color: #e84393; }

💡 Объяснение

Сайт, с которым можно что-то делать

Пока наш сайт в основном «читается». Сегодня добавим полезный интерактивный блок — что-то, с чем посетитель может взаимодействовать. Мы ещё не знаем JavaScript, но HTML и CSS умеют немало.

Как выбрать блок

Спроси себя: «Что было бы полезно посетителю моего сайта?»

  • Много вопросов по теме → «Вопрос — ответ».
  • Много картинок → галерея с эффектами.
  • Хочется узнать мнение → форма отзыва или опрос.
  • Сайт о городе или месте → карта в iframe.

Лучше один блок, сделанный аккуратно, чем три недоделанных.

Вариант 1. «Вопрос — ответ» на details и summary

<details>
  <summary>Сколько спит кот?</summary>
  <p>До 16 часов в день!</p>
</details>

<details> — раскрывающийся блок. <summary> — видимый заголовок, по клику на который раскрывается остальное содержимое. Никакого JavaScript — браузер делает всё сам! Это работает и с клавиатуры.

Оформление:

details {
  background: white;
  padding: 12px 16px;
  border-radius: 12px;
  margin-bottom: 12px;
}
summary { cursor: pointer; font-weight: bold; }
details[open] { border-left: 5px solid var(--accent); }

details[open] — это селектор атрибута: он выбирает только раскрытые блоки (у них появляется атрибут open).

Вариант 2. Галерея с эффектами

.gallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 12px;
}
.gallery img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  border-radius: 12px;
  transition: transform 0.3s;
}
.gallery img:hover {
  transform: scale(1.05);
}

Подписи к фото — через figure и figcaption. Для сильных: подпись, которая появляется поверх картинки при наведении (position: absolute + opacity + :hover). Но помни, что на телефоне наведения нет — важную информацию не прячь.

Вариант 3. Форма отзыва

Вспоминаем занятие 10: form, label, input, textarea, select, button. Теперь оформляем её в стиле сайта:

.form input, .form textarea {
  width: 100%;
  padding: 10px;
  border: 2px solid #dfe6e9;
  border-radius: 8px;
  font: inherit;          /* шрифт как у сайта */
}
.form input:focus, .form textarea:focus {
  border-color: var(--main);
  outline: 3px solid rgba(108, 92, 231, 0.25);
}

Честно предупреди посетителя: форма учебная, данные никуда не отправляются. И никогда не проси в ней личные данные.

Вариант 4. Карта

OpenStreetMap или Яндекс Карты → «Поделиться» → «Встроить» → скопировать iframe. Задай width="100%", высоту 300–400px, title и loading="lazy". Показывай общественные места (парк, музей, город), а не свой дом.

Проверка блока

  • Блок подходит теме и выглядит в стиле сайта (цвета, скругления из переменных).
  • Работает мышкой и клавиатурой (Tab, Enter).
  • Хорошо выглядит на телефоне.
  • Нет личных данных.

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

  • summary не первым ребёнком в details.
  • Картинки в галерее разной высоты — забыли aspect-ratio и object-fit.
  • Поля формы со стандартным шрифтом — забыли font: inherit.
  • Важная информация видна только при наведении.

Проверь себя

  1. Как сделать раскрывающийся ответ без JavaScript?
  2. Что выбирает селектор details[open]?
  3. Какой интерактивный блок подходит твоему сайту и почему?

⌨️ Практика

  1. Выбери, какой интерактивный блок нужен твоему сайту.
  2. Сверстай его HTML.
  3. Оформи блок в стиле сайта (переменные, скругления, :hover).
  4. Проверь, как блок выглядит на телефоне.

🧪 Редактор

🪞 Рефлексия

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

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