На самом деле Филатов всё уже доступно объяснил: в соответствии с принципами позиционирования (
barelyfitz,
MDN), у абсолютно позиционированного элемента контекстом расположения является ближайший родитель с позиционированием отличным от статичного. К тому же в вашем случае фраза "абсолютно позиционированный блок имеет своим контекстом размещения окно браузера" как раз и означает, что контекстом является
body. Это вот такая вот неудобоваримая условность, связанная с
body.
Каждому отображаемому элементу DOM соответствует какой-то блок в макете. Элемент
body является исключением: вы можете позиционировать соответствующий ему блок и это будет влиять на дочерние элементы, но некоторые его стилевые свойства будут применяться ко всему окну. Так происходит потому что
body является не/посредственным контекстом расположения для всех отображаемых на странице элементов, он является корневым, то есть как бы и представляет собой окно.
Заметьте, что
пример на MDN аналогичен вашему, и вот что они пишут:
In the example below, a positioned ancestor doesn't exist and box ... is positioned absolutely relative to the immediate ancestor (the <body> of the iframe here)
То есть у них происходит то же самое: абсолютно позиционированный элемент располагается в контексте окна, а не в контексте блока соответствующего
body, но они всё равно говорят что "блок позиционирован относительно
body". Стоит считать это условностью: хоть
body и представляет собой окно, но он всё же является элементом DOM, а поэтому в макете для него обязан существовать соответствующий блок. Такая вот двоякая сущность. Не очень понятно, конечно, но, возможно, так сложилось исторически, я не смог откопать ничего по теме.
В любом случае, это самый незначительный из сюрпризов которые может выкинуть CSS, например невозможность отрезать overflow только по одной оси - это
покруче будет.