🔒 Ты не вошёл(вошла) в аккаунт — прогресс, работы и результаты теста не сохраняются. Что недоступно?
✅ Без входа можно
- читать все занятия обоих курсов, смотреть слайды и шпаргалку;
- пробовать код в редакторе и песочнице.
⛔ Без входа нельзя
- сохранять работы — черновик живёт только в этом браузере и пропадёт при очистке истории, в режиме инкогнито или на другом устройстве;
- отмечать пройденные занятия и видеть свой прогресс;
- выбрать тему итогового проекта и отмечать чек-лист;
- отправить итоговый тест и сохранить результат.
HTML и CSS с нуля: создаём свои сайты Модуль 2. CSS и оформление
Фоны и эффекты
Сегодня мы сделаем карточки как в современных приложениях: скруглённые углы, тени и градиенты.
Изучаем: Градиенты, box-shadow, border-radius
Результат: Карточки с эффектами
👀 Сегодня сделаем вот такое
Показать код примера
<div class="cards">
<div class="card">
<img class="avatar" src="/images/cat.svg" alt="Кот">
<h3>Барсик</h3>
<p>Главный тестировщик</p>
</div>
<div class="card">
<img class="avatar" src="/images/dog.svg" alt="Собака">
<h3>Бобик</h3>
<p>Дизайнер</p>
</div>
</div>
body {
min-height: 100vh;
margin: 0;
font-family: sans-serif;
background: linear-gradient(135deg, #a18cd1, #fbc2eb);
}
.cards {
display: flex;
flex-wrap: wrap;
gap: 24px;
justify-content: center;
padding: 40px 16px;
}
.card {
width: 200px;
padding: 24px;
text-align: center;
background: white;
border-radius: 20px;
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15);
transition: 0.3s;
}
.card:hover {
transform: translateY(-8px);
box-shadow: 0 16px 30px rgba(0, 0, 0, 0.25);
}
.avatar {
width: 100px;
height: 100px;
border-radius: 50%;
background: #ffeaa7;
}
💡 Объяснение
Современный вид
Посмотри на любимые приложения: карточки со скруглёнными углами, мягкие тени, плавные переходы цветов. Такой вид создают всего несколько свойств CSS. Сегодня мы научимся ими пользоваться — и главное, пользоваться в меру.
Скругление: border-radius
border-radius: 12px;— все углы скруглены радиусом 12 пикселей;border-radius: 50%;— у квадрата получится круг (так делают аватарки), у прямоугольника — овал;border-radius: 999px;— «таблетка»: кнопка с полностью круглыми краями;border-radius: 20px 20px 0 0;— скруглить только верхние углы (порядок: левый верхний, правый верхний, правый нижний, левый нижний).
Если внутри скруглённой карточки картинка «торчит» острыми углами, добавь карточке overflow: hidden; — всё лишнее обрежется по форме.
Тень: box-shadow
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15);
Значения по порядку:
- сдвиг по X — вправо (отрицательное — влево);
- сдвиг по Y — вниз (отрицательное — вверх);
- размытие — чем больше, тем мягче тень;
- (необязательно) растяжение — увеличивает тень во все стороны;
- цвет — почти всегда полупрозрачный чёрный
rgba(0,0,0,0.1–0.25).
Настоящие тени мягкие и падают вниз, потому что свет обычно сверху. Резкая чёрная тень 5px 5px 0 black выглядит как в 2000-х. Слово inset в начале делает тень внутренней — элемент выглядит «вдавленным».
Градиенты
Градиент — плавный переход одного цвета в другой. В CSS это разновидность фоновой картинки, поэтому пишется в background (не в background-color!):
background: linear-gradient(#ff9a9e, #fad0c4);— сверху вниз;linear-gradient(90deg, …)— слева направо;135deg— по диагонали;linear-gradient(to right, red, orange, yellow)— цветов может быть сколько угодно;radial-gradient(circle, #fff, #74b9ff)— круговой, от центра к краям.
Совет: красивые градиенты получаются из соседних цветов (розовый → персиковый, синий → фиолетовый). Красный → зелёный даёт грязный коричневый переход. Готовые варианты есть на сайтах-генераторах (например, uiGradients).
Картинка на фоне
.banner {
background-image: url("images/mountain.jpg");
background-size: cover; /* заполнить весь блок */
background-position: center; /* по центру */
}
cover— картинка заполняет блок целиком, лишнее обрезается;contain— картинка видна целиком, могут остаться пустые края.
Чтобы текст читался на яркой фотографии, поверх кладут полупрозрачный градиент: background: linear-gradient(rgba(0,0,0,.5), rgba(0,0,0,.5)), url("photo.jpg");
Прозрачность
opacity: 0.5;— полупрозрачным становится весь элемент вместе с текстом и детьми;rgba(…, 0.5)в цвете — прозрачен только этот цвет (например, фон), а текст остаётся чётким. Для фона обычно нужно именно это.
Собираем карточку с эффектом
.card {
background: white;
border-radius: 20px;
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12);
transition: 0.3s;
}
.card:hover {
transform: translateY(-8px);
box-shadow: 0 16px 30px rgba(0, 0, 0, 0.2);
}
При наведении карточка «поднимается», а тень становится больше и мягче — как будто карточку приподняли над столом.
Правило меры
- Один стиль скругления на весь сайт (например, 12px у всех карточек и кнопок).
- Одна-две тени, а не у каждого элемента.
- Градиент — для акцента: баннер, кнопка. Не для всего подряд.
Частые ошибки
- Градиент в
background-color— не работает. - Картинка «торчит» из скруглённой карточки — нет
overflow: hidden. opacityу карточки — текст стал бледным.- Путь в
url()считается от CSS-файла, а не от HTML-страницы.
Проверь себя
- Как сделать круглую аватарку?
- Что означают числа в
box-shadow: 0 4px 10px rgba(0,0,0,.2)? - Чем
opacity: 0.5отличается отbackground: rgba(0,0,0,0.5)?
⌨️ Практика
- Сделай фон страницы градиентом.
- Сделай три белые карточки со скруглёнными углами и мягкой тенью.
- Сделай круглую аватарку (border-radius: 50%).
- При наведении карточка приподнимается, а тень становится больше.
🧪 Редактор
🪞 Рефлексия
- Что нового я сегодня узнал(а)?
- Что получилось лучше всего?
- Где было трудно и что поможет в следующий раз?
🔒 Отметить занятие пройденным можно только после входа. Без аккаунта сайт не запомнит, до какого занятия ты дошёл(дошла). Регистрация · Вход
💬 Вопросы по занятию
Не получается — спроси здесь. Другие ученики и преподаватель видят вопросы и отвечают. Пиши вежливо: грубые сообщения сайт не примет.
🔒 Писать могут только зарегистрированные. Читать обсуждение можно и без аккаунта. Регистрация · Вход
Вопросов пока нет. Задай первый — это помогает и тебе, и другим.