Абсолютное внутри относительного
Вернёмся к странице о кошке со всем, что вы на ней уже сделали, и применим абсолютное позиционирование так, как его используют чаще всего.
Размещать элемент относительно всей страницы нужно редко. Гораздо чаще его нужно поставить в угол другого элемента: значок на карточке, кнопку закрытия в углу окна или подпись на фотографии.
Хитрость в том, чтобы задать родителю position: relative. Без смещений родитель вообще не двигается, но становится ближайшим предком с позиционированием. Смещения его дочерних элементов с position: absolute тогда отсчитываются от его краёв:
.card {
position: relative;
}
.close {
position: absolute;
top: 10px;
right: 10px;
}Где бы на странице ни находилась карточка, элемент с классом close окажется в 10 пикселях от верхнего края карточки и в 10 пикселях от её правого края. (Смещения отсчитываются от внутреннего края рамки карточки.)
К карточке персидской кошки мы добавили значок: span с классом badge. Давайте поставим его в правый верхний угол карточки.
Задание
- 1
В правило для
.badgeдобавьтеposition: absolute,top: -10pxиright: -10px. Отрицательные смещения сдвигают элемент в другую сторону, наружу, поэтому значок будет выступать за угол. Но посмотрите, где он оказался: ни у одного его предка нет позиционирования, поэтому он ускакал в правый верхний угол страницы, и часть его вышла за пределы страницы. - 2
В правило для
#breeds liдобавьтеposition: relative. Значок переместится в угол своей карточки, потому что теперь карточка — его ближайший предок с позиционированием. Сами карточки не сдвинутся.