🎨
Модуль 2. CSS и оформление
Занятие 19
Ссылки и кнопки
Сегодня мы сделаем «живые» кнопки и меню, которые реагируют на наведение мыши и нажатие.
Сегодня сделаем вот такое
Элементы, которые отвечают
Наведи мышь на кнопку справа 👉
- Цвет меняется — «на меня можно нажать»
- Нажатие — кнопка «вдавливается»
Это делает CSS, без программирования!
<button class="btn">Нажми меня</button>
.btn {
padding: 16px 32px; font-size: 22px;
color: white; background: #00b894;
border: none; border-radius: 12px;
box-shadow: 0 6px 0 #00795f;
cursor: pointer; transition: 0.15s;
}
.btn:hover { background: #00cec9; }
.btn:active { transform: translateY(6px); box-shadow: none; }
Псевдокласс = состояние
a:hover { … } — «ссылка, когда на неё навели»
:hover— навели мышь:active— нажимают:focus— в фокусе (Tab, курсор в поле):visited— уже посещали
⚠️ Без пробела перед двоеточием!
Стильное меню
text-decoration: none— без подчёркиванияpadding— ссылка как кнопка:hover— подсветка
<nav class="menu">
<a href="#">Главная</a>
<a href="#">Галерея</a>
<a href="#">Контакты</a>
</nav>
.menu { display: flex; gap: 8px; font-family: sans-serif; }
.menu a {
padding: 10px 18px;
border-radius: 8px;
color: #2d3436;
text-decoration: none;
transition: 0.3s;
}
.menu a:hover { background: #fdcb6e; }
transition — плавность
transition: 0.3s— плавно за 0,3 секунды- Пишем в обычный стиль, не в :hover
- 0,15–0,4 с — идеально
Сравни два квадрата справа 👉
<div class="box fast">резко</div>
<div class="box smooth">плавно</div>
.box {
display: inline-block; width: 120px; padding: 30px 0;
text-align: center; color: white; background: #6c5ce7;
font-family: sans-serif; margin: 8px;
}
.smooth { transition: 0.4s; }
.box:hover { background: #e84393; transform: scale(1.15) rotate(3deg); }
Эффекты transform
scale(1.05)— увеличитьtranslateY(-4px)— приподнятьrotate(3deg)— повернуть
transform не толкает соседей.
<div class="cards">
<div class="card">🐱</div>
<div class="card">🐶</div>
<div class="card">🚀</div>
</div>
.cards { display: flex; gap: 16px; padding: 20px; }
.card {
font-size: 50px; padding: 20px; background: white;
border-radius: 16px; box-shadow: 0 4px 10px rgba(0,0,0,.15);
transition: 0.25s;
}
.card:hover { transform: translateY(-10px) scale(1.08); }
:focus — не забудь о клавиатуре
- Многие управляют сайтом клавишей Tab
- Рамка фокуса показывает, где ты
- ❌
outline: noneбез замены - ✅ Красивый
:focus-visible
Кликни в поле справа.
<input placeholder="Поиск...">
<button>Найти</button>
input, button { font-size: 20px; padding: 10px; border: 2px solid #b2bec3; border-radius: 8px; }
input:focus { border-color: #6c5ce7; outline: 3px solid #a29bfe; }
button:focus-visible { outline: 3px solid #fdcb6e; }
Бонус: полосатая таблица
:nth-child(even)— чётные:nth-child(odd)— нечётные:first-child,:last-child
<table>
<tr><td>Аня</td><td>12</td></tr>
<tr><td>Петя</td><td>9</td></tr>
<tr><td>Оля</td><td>15</td></tr>
<tr><td>Дима</td><td>11</td></tr>
</table>
table { border-collapse: collapse; font-family: sans-serif; font-size: 20px; }
td { padding: 8px 20px; }
tr:nth-child(even) { background: #dfe6e9; }
tr:hover { background: #ffeaa7; }
Запомни!
:hoverПри наведении:activeПри нажатии:focusЭлемент в фокусеtransition: 0.3sПлавностьtext-decoration: noneБез подчёркиванияcursor: pointerКурсор-рукаtransform: scale(1.05)Увеличить
Практика: Стильное меню и кнопки
- Убери подчёркивание у ссылок меню и оформи их как кнопки.
- Сделай, чтобы при наведении менялся фон пункта меню.
- Сделай большую кнопку, которая «вдавливается» при нажатии.
- Добавь полю ввода яркую рамку при фокусе.
- Сделай все переходы плавными с transition.
🚀 Со звёздочкой: Раскрась пункты меню через :nth-child и сделай подчёркивание, которое «вырастает» при наведении.
🔒 Без входа в аккаунт работу из практики нельзя сохранить на сайте, а занятие — отметить пройденным.
🪞
Подведём итоги
- Что нового я сегодня узнал(а)?
- Что получилось лучше всего?
- Где было трудно и что поможет в следующий раз?
✨ По желанию: Придумай, как будут выглядеть кнопки на твоём сайте: цвет, форма, эффект.