🔒 Ты не вошёл(вошла) в аккаунт — прогресс, работы и результаты теста не сохраняются. Что недоступно?
✅ Без входа можно
- читать все 33 занятия, смотреть слайды и шпаргалку;
- пробовать код в редакторе и песочнице.
⛔ Без входа нельзя
- сохранять работы — черновик живёт только в этом браузере и пропадёт при очистке истории, в режиме инкогнито или на другом устройстве;
- отмечать пройденные занятия и видеть свой прогресс;
- выбрать тему итогового проекта и отмечать чек-лист;
- отправить итоговый тест и сохранить результат.
Позиционирование
Сегодня мы прикрепим к карточке яркий бейдж «Новинка» и разберёмся, как элементы накладываются друг на друга.
Изучаем: position, z-index
Результат: Бейдж или подпись на карточке
👀 Сегодня сделаем вот такое
Показать код примера
<div class="card">
<span class="badge">Новинка</span>
<img src="/images/rocket.svg" alt="Ракета">
<div class="caption">Ракета «Звезда»</div>
</div>
<a href="#" class="to-top">↑</a>
body {
font-family: sans-serif;
height: 900px;
}
.card {
position: relative;
width: 260px;
margin: 30px;
border-radius: 12px;
overflow: hidden;
background: #dfe6e9;
}
.card img {
width: 100%;
display: block;
}
.badge {
position: absolute;
top: 10px;
right: 10px;
background: #d63031;
color: white;
padding: 4px 10px;
border-radius: 20px;
z-index: 2;
}
.caption {
position: absolute;
bottom: 0;
left: 0;
right: 0;
padding: 8px;
background: rgba(0, 0, 0, 0.6);
color: white;
}
.to-top {
position: fixed;
right: 20px;
bottom: 20px;
background: #0984e3;
color: white;
padding: 10px 14px;
border-radius: 50%;
text-decoration: none;
}
💡 Объяснение
Нормальный поток
Обычно браузер расставляет элементы по порядку, как слова в тексте: блоки — сверху вниз, строчные элементы — слева направо. Это называется нормальным потоком. Элементы уважают друг друга и не залезают на соседей.
Но иногда нужно положить элемент поверх другого: бейдж «Новинка» в углу карточки, подпись поверх фото, кнопку «Наверх», которая всегда висит в углу экрана, липкое меню. Для этого есть свойство position.
Значения position
static— обычное положение в потоке (так у всех элементов по умолчанию). Координаты не работают.relative— элемент остаётся на своём месте в потоке, но его можно немного сдвинуть координатами. Главное применение — стать точкой отсчёта для детей сabsolute.absolute— элемент вынимается из потока (соседи его «не замечают» и занимают его место) и ставится по координатам относительно ближайшего родителя, у которого position не static. Если такого нет — относительно всей страницы.fixed— элемент прибит к окну браузера и не двигается при прокрутке.sticky— ведёт себя как обычный, пока не доедет до края экрана при прокрутке, а потом «прилипает». Удобно для меню и заголовков таблиц.
Координаты
top, right, bottom, left — расстояние от соответствующего края точки отсчёта. top: 10px; right: 10px; — «10 пикселей от верха и 10 от правого края», то есть правый верхний угол.
left: 0; right: 0; одновременно растягивают элемент на всю ширину родителя.
Рецепт бейджа на карточке
.card {
position: relative; /* точка отсчёта */
}
.badge {
position: absolute; /* вынули из потока */
top: 10px;
right: 10px; /* правый верхний угол карточки */
}
Запомни пару: родителю relative, ребёнку absolute. Если забыть relative у карточки, бейдж «улетит» в угол всей страницы.
Подпись поверх картинки
.caption {
position: absolute;
bottom: 0;
left: 0;
right: 0;
background: rgba(0, 0, 0, 0.6);
color: white;
}
Полупрозрачный фон rgba делает текст читаемым на любой картинке.
Кнопка «Наверх» и липкое меню
.to-top {
position: fixed;
right: 20px;
bottom: 20px;
}
.menu {
position: sticky;
top: 0;
}
Для sticky обязательно указать, у какого края прилипать (top: 0), и дать фон — иначе текст страницы будет просвечивать сквозь меню.
z-index: кто сверху
Когда элементы накладываются, возникает вопрос: кто закрывает кого? Представь стопку листов на столе. z-index — это номер листа в стопке: чем больше число, тем ближе к тебе.
- z-index работает только у элементов с position
relative,absolute,fixedилиsticky. - Без z-index сверху оказывается тот, кто написан в HTML позже.
- Не нужно писать
z-index: 99999— хватит 1, 2, 10.
Когда position не нужен
Не используй absolute для обычной раскладки страницы (колонки, карточки в ряд) — элементы начнут налезать друг на друга, особенно на телефоне. Для раскладки есть Flexbox и Grid. position — только для «наклеек» поверх.
Частые ошибки
- Забыли
position: relativeу родителя — absolute-элемент уехал в угол страницы. - Написали координаты без position — ничего не происходит.
- z-index без position — не работает.
- Липкое меню без
top— не прилипает.
Проверь себя
- Чем
absoluteотличается отfixed? - Что нужно написать родителю, чтобы бейдж встал в угол карточки?
- У двух элементов z-index 5 и 10. Какой будет сверху?
⌨️ Практика
- Сделай карточку товара или игры с картинкой.
- Добавь бейдж «Новинка» в правый верхний угол карточки.
- Сделай подпись поверх нижней части картинки.
- Добавь кнопку «Наверх», закреплённую в правом нижнем углу окна.
🧪 Редактор
🪞 Рефлексия
- Что нового я сегодня узнал(а)?
- Что получилось лучше всего?
- Где было трудно и что поможет в следующий раз?
🔒 Отметить занятие пройденным можно только после входа. Без аккаунта сайт не запомнит, до какого занятия ты дошёл(дошла). Регистрация · Вход