CSS: Позиционирование элементов

Теория: Относительное и абсолютное позиционирование

В уроке про абсолютное позиционирование было сказано о том, что элемент позиционируется относительно угла страницы. Такое поведение не всегда удобно и тому есть несколько причин:

  • Мы хотим абсолютно спозиционировать элемент не относительно страницы, а относительно одного из родительских элементов.
  • При изменении ширины страницы, абсолютно спозиционированный элемент также будет перемещаться, так как его координаты отсчитываются от края.

Представим ситуацию, при которой мы хотим создать блок с возможностью его закрытия при клике на крестик в верхнем правом углу. В данный момент нас интересует именно возможность создать такой крестик, при этом не внося сложные вещи в верстку. Для этого отлично подходит абсолютное позиционирование. С помощью него и правил top, right мы можем сказать, что крестик всегда будет располагаться в верхнем правом углу.

Вопрос только в том, как расположить его относительно блока? На самом деле, элемент при абсолютном позиционировании будет расположен относительно края страницы только в тех случаях, когда ни у одного из родительских элементов нет другого позиционирования. То есть, если у родительского блока относительное или абсолютное позиционирование, то дочерний элемент (с абсолютным позиционированием) будет располагаться относительно него, а не края страницы.

В таком случае задача расположения элемента для закрытия блока становится простой — нам необходимо только указать относительное позиционирование у всего блока, а кнопку закрытия абсолютно спозиционировать уже относительно этого блока.

https://codepen.io/hexlet/pen/MWgEqJj

Рекомендуемые программы