🔒 Ты не вошёл(вошла) в аккаунт — прогресс, работы и результаты теста не сохраняются. Что недоступно?
✅ Без входа можно
- читать все 33 занятия, смотреть слайды и шпаргалку;
- пробовать код в редакторе и песочнице.
⛔ Без входа нельзя
- сохранять работы — черновик живёт только в этом браузере и пропадёт при очистке истории, в режиме инкогнито или на другом устройстве;
- отмечать пройденные занятия и видеть свой прогресс;
- выбрать тему итогового проекта и отмечать чек-лист;
- отправить итоговый тест и сохранить результат.
Проект: интерактив
Сегодня мы добавим на сайт полезный интерактивный блок: форму отзыва, галерею или раздел «Вопрос–ответ».
Изучаем: Форма, галерея или контакты
Результат: Добавляем полезный блок
👀 Сегодня сделаем вот такое
Показать код примера
<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. - Важная информация видна только при наведении.
Проверь себя
- Как сделать раскрывающийся ответ без JavaScript?
- Что выбирает селектор
details[open]? - Какой интерактивный блок подходит твоему сайту и почему?
⌨️ Практика
- Выбери, какой интерактивный блок нужен твоему сайту.
- Сверстай его HTML.
- Оформи блок в стиле сайта (переменные, скругления, :hover).
- Проверь, как блок выглядит на телефоне.
🧪 Редактор
🪞 Рефлексия
- Что нового я сегодня узнал(а)?
- Что получилось лучше всего?
- Где было трудно и что поможет в следующий раз?
🔒 Отметить занятие пройденным можно только после входа. Без аккаунта сайт не запомнит, до какого занятия ты дошёл(дошла). Регистрация · Вход