Вопрос проверяет понимание контекста позиционирования и того, как модальные окна “привязываются” к конкретным частям интерфейса.
Чтобы позиционировать модалку относительно части layout’а, контейнер делают position: relative, а модалку — position: absolute. Тогда координаты считаются от этого контейнера, а не от окна браузера. Такой подход полезен для локальных модалок, попапов и dropdown’ов. Для глобальных модалок обычно используют position: fixed и порталы.
Не все модалки должны быть “по центру экрана”.
Определение: Локальная модалка — это окно, которое привязано к конкретному блоку интерфейса, а не ко всему viewport.
.section {
position: relative;
}
.modal {
position: absolute;
top: 0;
right: 0;
}
position: relative задаёт контекст
absolute считает координаты от .section
Модалка двигается вместе с блоком при скролле
Встроенные формы редактирования
Модалки в админках
Контекстные панели
overflow
overflow: hidden у родителя может обрезать модалку
z-index
Нужно учитывать stacking context
Scroll
Локальная модалка скроллится вместе с контентом
Иногда модалка логически относится к секции, но визуально должна быть выше всего.
Используют Portal (в React)
Позицию всё равно считают от target-элемента
Сам DOM-узел находится в body
// координаты считаются через getBoundingClientRect
Для локальных модалок лучше использовать absolute внутри relative-контейнера, а для глобальных — порталы и fixed. Выбор зависит от UX-задачи, а не только от CSS.